Image Based Screen Space Subsurface Scattering Sample
C C++
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
imsss.xcodeproj
.gitignore
COPYING_GLFW.txt
GLFW.lib
GLFWDEBUG.lib
GgObj.cpp
GgObj.h
GgObjShader.cpp
GgObjShader.h
GgPointShader.cpp
GgPointShader.h
Info.plist
Makefile
README.md
ball.mtl
ball.obj
box.mtl
box.obj
bunny.mtl
bunny.obj
gg.cpp
gg.h
glext.h
glfw.h
imsss.dep
imsss.sln
imsss.vcxproj
imsss.vcxproj.filters
imsss.vcxproj.user
libglfw_linux.a
libglfw_macos.a
main.cpp
opengl.icns
pass1.frag
pass1.vert
pass2.frag
pass2.vert
reflection0.tga
reflection1.tga
reflection2.tga
reflection3.tga
reflection4.tga
reflection5.tga
reflection6.tga
reflection7.tga
reflection8.tga
reflection9.tga

README.md

imsss

Image Based Screen Space Subsurface Scattering Sample

概要

「天空画像を用いたスクリーンスペース表面下散乱」のサンプルプログラムです.

データファイル

  • 形状データには三角形分割した Wavefront OBJ 形式のファイルが使えます.
    • Blender で Export するときは "Include Normals," "Write Materials," "Triangulate Faces" にチェックを入れてください.
    • 形状データの大きさは読み込み時に [-1,1] に正規化されます.
    • マテリアルも読み込みますが,値の使い方は本来とは違います.
  • テクスチャは縦横 2^n 画素の TGA 形式のファイルです.
    • 円周魚眼レンズを使って作成してください.

操作方法

  • マウスの左ドラッグでオブジェクトを回転できます.
  • マウスの右ドラッグで環境テクスチャを回転できます.
  • 0 〜 9 の数字キーで環境テクスチャを切り替えることができます.0 番のテクスチャは闇です.
  • 上下の矢印キー↑↓で「半透明度」を変化させることができます.
  • 左右の矢印キー←→で「サンプル点の散布半径」を変化させることができます.
  • スペースキーでサンプル点数を増やすことができます(最大 256).
  • Back Space キーでサンプル点数を減らすことができます(最少 0).
  • b キーでレンダリング時間の表示(標準出力に出ます)を ON/OFF できます(単位 ms).
    • 一つ目が MRT への描きこみに要した時間,二つ目がスクリーン空間処理に要した時間です.

補足

  • Reflective Occlusion は実験的な実装です. SSAO のサンプル点を流用しているので importance が考慮されず, 多くのサンプル点が無駄になってサンプル点の数が不足します.
  • カメラからの入力画像を環境テクスチャに使うバージョンは opencv ブランチにあります.
    • カメラに円周魚眼レンズを取り付けてください.
    • これには数字キーによるテクスチャ切り替えの機能はありません.