다중 지점 광원에 대해 단일 그림자 맵을 사용하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/9660959

문제

이해할 때, 깊이 맵을 만드는 빛의 관점에서 장면을 렌더링하여 섀도우 매핑이 수행됩니다. 그런 다음 카메라의 POV에서 장면을 다시 렌더링하고 장면의 각 지점 (GLSL의 조각)에 대해 광원으로부터의 거리를 계산합니다. 그림자 맵에서 가지고있는 것과 일치하면 빛에 있습니다. 그렇지 않으면 그림자에 있습니다.

이 튜토리얼 를 통해 읽고있었습니다. 점 / 무 지향성 표시 등.

섹션 12.2.2에서 다음과 같습니다 :

모든 광원에 대해 단일 그림자 맵을 사용합니다

다음 12.3.6 미만의 경우 :

1) 현재 픽셀에서 광원으로의 제곱 거리를 계산합니다.
...

4) 계산 된 거리 값을 가져온 섀도우 맵 값과 비교하여 그림자가 있는지 여부를 결정합니다.

위에 언급 한 것은 대략적으로

내가 얻지 못하는 것은 우리가 모든 조명을 하나의 그림자 맵으로 구운 다음 거리를 비교 해야하는 빛이 무엇입니까? 지도에 구운 거리는 모든 조명의 혼합이기 때문에 아무 것도 일치하지 않아야합니다.

나는 내가 뭔가를 놓치지 만 누군가가 나에게 이것을 설명 할 수 있기를 바란다.


또한 단일 그림자 맵을 사용하는 경우 모든 광원에 대해 어떻게 혼합합니까?

단일 광원의 경우, 섀도우 맵은 가장 가까운 물체의 거리를 빛 (즉, 깊이 맵)으로 저장하지만 여러 광원의 경우 가 포함될 것입니다.

도움이 되었습니까?

해결책

문장을 짧게 자른다 :

모든 광원에 대해 단일 그림자 맵을 사용하여 이미지 생성 다중 패스 렌더링 및 각 빛에 대해 하나의 패스를 수행함으로써 출처.

섀도우 맵은 한 번에 하나의 광원에 대한 데이터가 있지만 한 번에 하나의 표시 만 렌더링하기 때문에 한 번에 하나의 맵 만 사용합니다.

나는 이것이 두 번째 질문 에이 흐른다 - 덧붙여서 덧붙여서 덧붙여서 결과를 여러 조명의 결과를 단순히 함께 추가함으로써 첨가합니다. GPU 보석의 경우에는 프레임 버퍼에 직접 추가되며 당시 GPU에서 사용할 수있는 수의 저장 텍스처 샘플러가 상대적으로 제한된 수의 수의 저장 텍스처 샘플러 때문에 의심의 여지가 없습니다. 요즘 프레임 버퍼에서 조합 한 조합을하고 조각 셰이더에서 직접 조합 한 조합을 원합니다.

또한 일반적으로 부동 소수점 반올림 오류 축적으로 인해 "픽셀이 그림자 버퍼의 거리와 조금 켜지지 않고 픽셀이 켜지거나 조금씩 켜지면 켜짐을 적용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top