여기 및 여기에 자세히 설명 된 실시간 확산 전역 조명을 위해 캐스케이드 라이트 전파 볼륨 알고리즘 (간접 섀도 잉 없음)을 구현 했습니다 . 잘 작동하지만 여전히 하나의 아티팩트를 수정하려고합니다.
짧은 요약
알고리즘의 작동 방식을 이미 알고있는 경우이를 건너 뛸 수 있습니다.
이 알고리즘은 구형 고조파 형태로 조명 정보를 3D 그리드에 저장하여 작동합니다. 그리드의 각 셀에있는 데이터는 처음에 확장 된 그림자 맵 ( 반사 그림자 맵) 을 렌더링하여 생성 됩니다.)에는 깊이 외에 색상 및 일반 정보도 포함됩니다. 기본적으로 광원으로 보이는 모든 픽셀은 간접 조명의 첫 번째 바운스의 원인이므로 섀도 매핑에 사용하는 일반 깊이 버퍼와 함께 필요한 정보를 저장하고 모든 데이터를 샘플링하여 3D 그리드를 초기화합니다. . 그런 다음 3D 그리드의 정보는 한 셀의 정보를 6 개의 직접 이웃 (위, 아래, 왼쪽, 오른쪽, 위쪽, 아래쪽) 모두에 전파함으로써 (각 반복마다) 반복적으로 전파됩니다. 격자의 정보를 사용하여 장면에 조명을 비추려면 장면에 전체 화면 패스를 적용하고 래스터 화 된 각 픽셀에 대해 래스터 화 된 표면의 월드 공간 위치를 사용할 수 있습니다 (예 : 지연된 음영의 G-Buffer에서). 화면의 특정 픽셀이 속한 그리드의 셀을 알 수 있습니다.
이것은 대부분 잘 작동합니다. 여기에는 시뮬레이션 된 GI가없는 두 개의 이미지와 하드 코딩 된 주변 용어가 있고 그 옆에는 LPV 알고리즘이있는 이미지가 있습니다. 표면에 컬러 반사, 더 나은 깊이 디테일 등을 확인하십시오.
문제
조명 단계에서 셀을 조회 할 때, 삼선 형 보간 (하드웨어 텍스쳐 필터 사용)은 셀 중심과 인접 셀과 실제 조회 된 텍스처 좌표 사이의 데이터를 부드럽게 보간하는 데 사용됩니다. 본질적으로,이 보간은 셀 중심에서의 조명 정보가 정보가 조회되는 중심 주변의 콘크리트 픽셀로 전파되는 것을 모방한다. 그렇지 않으면 조명이 매우 거칠고보기 흉하기 때문에 필요합니다. 그러나 삼선 형 보간은 셀에 인코딩 된 조명 정보의 광 전파 방향을 고려하지 않기 때문에 (구형 고조파에 있음) 광이 조회 된 픽셀로 잘못 전파 될 수 있습니다. 예를 들어, 셀에 인코딩 된 빛이 (1,0,0) ( "
그리드의 셀 크기가 장면의 표면에 비해 클 때 라이트 블리딩이 벽을 잘못 통과시킵니다 (가능한 한 적은 전파 반복으로 장면에 빛을 전파하기 위해 큰 셀이 필요하기 때문에 필요합니다). 이것은 다음과 같습니다
보시다시피 (오른쪽 상단의 그림자 윤곽선에서) 장면 위의 어딘가에 왼쪽 위의 방향성 광원으로 장면이 켜집니다. 아트리움의 외부와 내부를 분리하는 하나의 셀만 있기 때문에 빛이 번지고 왼쪽의 벽이 잘못 조명됩니다.
실제 질문
저자는이를 해결하기위한 일종의 수동 이방성 필터링을 제안합니다. 그는 다음과 같이 표면 법선 n의 방향을 향한 방사 기울기 (현재 셀에서 샘플링 된 SH 계수를 가정 함)를 제공합니다.
그리고 상태
따라서, 방사 방향 미분을 실제 방사 방향과 비교함으로써,이 지점에 대한 방사 분포가 삼선 보간보다 더 시작하는지 여부를 계산할 수있다.
내 질문 :
방정식에서 함수 c (x)는 점 (x)에서의 SH 계수 인 것으로 보입니다. 따라서 방사도 기울기는 x-(n / 2) 및 x + (n / 2) 지점에서 SH 계수의 가중 차이로 일반 수치 파생물처럼 계산되는 것 같습니다. 그러나 내 맥락에서 c (x)는 무엇입니까? 현재 c (x)는 표면 위치 (x)에서 3 선형으로 보간 된 계수를 참조한다고 가정하지만, 방향에 대한 자세한 정보를 제공하는 방법을 모르기 때문에 확실하지 않습니다. SH 계수의 분포.
그리고 그 그라디언트는 어떻게 셀에서 샘플링 된 조명이 표면에 정확하게 적용되는지를 어떻게 바꾸는 데 사용됩니까? 저자는 단지 "조도 방향 미분과 실제 광도 방향 비교"를 썼지 만 이것은 매우 모호합니다.
그는 "중심 미분 체계"를 사용하는 것에 대해 언급하고 SH 계수의 중심 미분에 대해이 슬라이드 를 참조 하며, 기울기의 도출을 보여주는 이 백서 를 참조 하지만 지금은 유용한 결론을 도출 할 수 없습니다.