March 16th, 2010 by yakiimo02 in Demo, DirectCompute, DirectX11 | No Comments »
はじめに Erik Reinhard, Mike Stark, Peter ShirleyとJim Ferwerda著の論文がベースの、ゲーム開発者の中では恐らく一番有名なトーンマップ・アルゴリズムのDX11 DirectCompute版を実装しました。作者によってhttp://www.cs.utah.edu/~reinhard/cdrom/で提供されているソースコードを元に実装しました。ソースコードではYxy空間の輝度値に対してトーンマップが実行されていますが、自分の実装も同じようにしました。実装のDirectCompute部分はDirectX SDKのHDRToneMappingCS11をベースに利用しました。 関連リンク集 1) http://www.cs.utah.edu/~reinhard/cdrom/ 作者のEric Rheinhardのトーンマップアルゴリズム説明ページです。ホームページには”Photographic Tone Reproduction for Digital Images”論文のpdf、サンプルソースコード、.hdr形式のサンプルHDR画像が置かれています。 2) http://wiki.gamedev.net/index.php/D3DBook:High-Dynamic_Range_Rendering gamedev.netの無料DirectX10プログラミング本”Programming Vertex, Geometry, and Pixel ShadersのHDR renderingに関する章にRheinhard tonemappingの説明と実装が載っています。説明は元Rockstar Gamesのgraphics programmerでGPU Pro (出版社が変わる前はShaderX)の編集長のWolfgang Engelさん(http://diaryofagraphicsprogrammer.blogspot.com/)によって執筆されていますが、内容が凄くいいです。 3) http://www.gamedev.net/community/forums/topic.asp?topic_id=407348 gamedev.netフォーラムのRheinhard tonemapping実装に関するスレです。 4) http://www.t-pot.com/program/123_ToneMapping/index.html t-pot.comのDX9で実装されたRheinhard global tonemapping operatorです。Tonemap計算はYCrCb色空間で輝度値に対して行われています。 デモ画像 HDR Cornell Box Comments 左のHDR画像がtonemap無しのCornell boxレンダー画像です。右の画像は同じ画像のtonemap有り画像です。tonemap無しの場合は、1以上のHDR情報が失われてしまい、画像が白飛びしてしまっています。トーンマップが有効な場合、 HDR画像がLDRの範囲にスケールされるので、画像の明るい部分が白飛びせず、画像の色がちゃっんと見えます。 LDR Cornell [...]
[Continuar Lendo →]
February 2nd, 2010 by yakiimo02 in Demo, DirectCompute, DirectX11 | 2 Comments »
はじめに インターネットで色んな人がもうすでに実装していますが、GPGPU言語を使ったマンデルブロ集合フラクタル・ビューワーを自分も実装してみました。DirectComputeの実装と同時にCPU版も実装したけど、DirectCompute版の方が平均的に50倍以上高速で、少しだけ感動です。ただし、CPU版の実装はまだまだ高速化の余地があるので(GPU版も高速化できてないですが、CPU版の方が速くなりそう)、実際の性能差はもう少し小さいと思います。 他の人のGPGPU言語Mandelbrot Fractal実装 この数カ月間で何人かのプログラマがGPGPU言語 Mandelbrot fractalの実装を公開しています。GPGPU言語勉強の初期課題として人気が高いみたいです。 1) DX11 DirectCompute Mandelbrot and Julia viewer http://users.skynet.be/fquake/ Beyond3Dのフォーラムを読んで去年知りました。(http://forum.beyond3d.com/showthread.php?t=55330)。作者の人はDirectComputeデモをMandelbrot viewer以外にもリリースしていますが、最近リリースされた流体のデモはかなり凄いです。デモのzipにソースコードも同梱されています。 自分の日記の関連リンク http://d.hatena.ne.jp/yakiimo02/20091228/1262004553 2) A realtime Mandelbrot zoomer in SSE assembly and CUDA http://users.softlab.ece.ntua.gr/~ttsiod/mandelSSE.html VizWorldの記事を読んで知りました。(http://www.vizworld.com/2009/12/realtime-mandelbrot-zoomer-sse-assembly-cuda/)。Nvidia Cudaを利用した実装以外にも手動でSIMD高速化されたマルチスレッド対応のCPU版も実装されています。GPLでソースも公開されています。 自分の日記の関連リンク http://d.hatena.ne.jp/yakiimo02/20091217/1261055234 3) MandelCPU vs MandelGPU http://davibu.interfree.it/opencl/mandelgpu/mandelGPU.html LuxRenderのOpenCL対応を中心的に進めているプログラマの人みたいです。 (http://www.luxrender.net/wiki/index.php?title=Luxrender_and_OpenCL)。デモではCPU版とOpenCL版のMandelbrot fractal viewerが実装されています。 作者のHPhttp://davibu.interfree.it/index.htmlにはソース付きで他にも色々OpenCLのデモが公開されています。 自分の日記の関連リンク http://d.hatena.ne.jp/yakiimo02/20100117/1263720072 http://d.hatena.ne.jp/yakiimo02/20100106/1262787003 http://d.hatena.ne.jp/yakiimo02/20091222/1261500968 Mandelbrot Fractalの説明 http://warp.povusers.org/Mandelbrot/ 上記ページがとても分かりやすかったです。Mandelbrot fractalは初実装ですが、上記ページを参考にしながら実装しました。 Mandelbrot Fractal [...]
[Continuar Lendo →]