지연된 조명을 고려하십시오. 요컨대, 디퍼 드 라이팅은 감소 된 디퍼 드 셰이딩 버전을 사용하여 스크린 스페이스 라이트 맵을 계산하는 기술입니다. 두 번째 단계에서 화면 공간 라이트 맵을 조명 정보로 사용하여 형상이 다시 렌더링됩니다.
이 기술은 더 적은 속성이 필요하기 때문에 G 버퍼의 크기를 줄이는 데 사용됩니다. 또한 G-Buffer와 스크린 스페이스 라이트 맵의 해상도가 스크린보다 낮다는 이점이 있습니다.
나는 엄격한 GLES 2.0 기반 렌더러를 시험해 보았지만 (실험적이지만) G-Buffer를 하나의 RGBA 텍스처로 끓였습니다 (예, 렌더 버퍼 대신 texture2D를 사용했습니다). 여기에는 알파 채널의 화면 공간 노멀 맵 + 깊이 버퍼가 포함되어 있습니다.
위치 속성 ( 여기에서 월드 라고 함 )은 Perspectivic 투영에서 .xy 가 .z 로 구성되어 있다는 사실을 사용하여 조명 패스 중에 계산할 수 있습니다 .
x y에프r u s t u m= x yw o r l d/ zw o r l d
다음 을 수행 하여 위치 속성의 xy 를 근사했습니다 .
x yw o r l d= x y에프r u s t u m※ zw o r l d
참고 : 투영 매트릭스 설정에 따라 추가 조정을 수행해야했습니다.
또한 주목할 가치 I는 생략 할 수있는 것을이다 .Z의 난 재구성 할 수 있기 때문에, 법선 벡터의 성분 .Z 에서 xy를 법선 벡터가되도록 정규화되어 있으므로 :
엑스2+ y2+ z2−−−−−−−−−−√= 1엑스2+ y2+ z2= 1지2= 1 − ( x2+ y2)지= 1 − ( x2+ y2)−−−−−−−−−−−√
이 기술을 사용하여 RGBA G-Buffer에서 다른 채널을 비울 수 있었고 이것을 사용하여 화면 공간 specular-map (또는 광택이있는 경우)을 저장했습니다.