Part 5-2 : 쉐도우 매핑 (Shadow Mapping) - 2
·
OpenGL/CS-248 셰이더 프로그래밍
셰이더 프로그래밍 Part 5-2 : 쉐도우 매핑 (Shadow Mapping) - 2 Part 5-2 두번째 파트에서 구현할 것마지막 스텝은 shadow map generation pass에서 생성된 array texture를 fragment shader의 input으로 넘겨주는 것입니다. 이는 최종 렌더 패스에서 씬을 렌더링하는데 사용될 것입니다.(이 바인딩 과정은 Mesh::internalDraw에서 구현하며, 우리가 이전 Part의 노말맵, 환경맵을 셰이더로 넘겨주는 것과 같은 동작입니다.)GLSL fragment shader에서 Array Texture를 샘플링하는 것은 문법이 조금 다릅니다. Scene::visualizeShadowMap 과 src/shader/shadow_viz.frag 를 ..
Part 5-2 : 쉐도우 매핑 (Shadow Mapping) - 1
·
OpenGL/CS-248 셰이더 프로그래밍
셰이더 프로그래밍 - Part 5-2 : 쉐도우 매핑 (Shadow Mapping) 이번 Part 5-2 에서는 spotlights가 물체에 그림자를 드리우도록 할 것 입니다. 쉐도우 매핑 알고리즘은 rasterization 기반의 렌더링 파이프라인에서 그림자를 근사하는 방법입니다. 쉐도우 매핑은 두 가지 스텝이 필요합니다. 각 광원마다 그 위치에 카메라가 있다고 가정하고, Scene 지오메트리를 렌더링합니다. 이 지점에서 렌더링 결과는 depth buffer 에 저장되며, 이 값은 광원에서 가장 가까운 지점을 의미합니다. depth buffer는 단일 채널의 텍스쳐 맵으로 만들어져서 fragment shader로 넘겨집니다. 이 텍스쳐 맵을 쉐도우맵 텍스쳐라고 합니다. 실제 렌더링 과정에서 illumi..