컴퓨터 지식 네트워크 - 컴퓨터 학습 - "원래 신" 호스트 렌더링 기술 포인트 및 솔루션

"원래 신" 호스트 렌더링 기술 포인트 및 솔루션

2020 년 6 월 165438+ 10 월 17 일 저녁 유니온 온라인 기술 컨퍼런스에서 미하 투어 기술 이사' 원신' 은 호스트 플랫폼의 렌더링 기술 포인트를 선보였다 신광선 효과, 반사, HDR 등 주요 내용은 원문 전달입니다. 다음은 주요 내용을 배우고 정리해 후속 작업에 도움이 되기를 바랍니다.

그림자 구현은 동적 그림자와 적용된 그림자로 나눌 수 있습니다. 동적 그림자의 경우 레벨 8 CSM 스키마를 사용하여 800m 시선을 덮습니다. 이 중 처음 4 개의 그림자는 프레임당 한 번 업데이트되고 마지막 4 개의 그림자는 순차적으로 업데이트됩니다 (예: 4 프레임마다 한 번 업데이트).

부드러운 그림자는 포아송 임의 샘플 모드의 PCF 를 사용하며 픽셀당 샘플 수가 1 1 이면 계산 소비가 높습니다. 이 블록의 소비를 줄이기 위해 화면의 각 영역에 대한 그림자 속성을 마스크로 표시합니다. 소프트 섀도우 PCF 는 반암부의 픽셀만 계산합니다.

마스크 맵은 화면 해상도의 1/4 x 1/4 를 사용합니다. 일반적으로 마스크의 한 픽셀이 반그림자 (페인트 및 출력 마스크) 에 속하는지 확인하고 해당 픽셀이 화면 해상도에서 덮는 16 픽셀의 폐색을 판단한 다음 적분 출력을 수행해야 합니다 (비디오에는 표시되지 않음, 통합 출력이란 평균을 의미합니까? ) 현재 픽셀의 반음영 판단 결과, 그러나 이 방법은 매우 높은 소비를 할 수 있습니다. 컴퓨팅 효율성을 더욱 향상시키기 위해 샘플 조사 알고리즘을 사용하여 특정 패턴에 따라 16 하위 픽셀에서 샘플을 선택하여 판단하기로 결정했습니다. 이 방법에는 약간의 오차가 있을 수 있습니다 (일부는 부드러운 그림자가 하드 그림자로 오인되어야 함). 오차를 줄이기 위해, 마스크도는 여기서 흐릿하게 (반그림자의 반경을 넓히기 위해) 어느 정도 흐려진다.

전체 마스크 맵의 생성 및 가상화는 약 0.3ms 를 소비하고 전체 그림자 계산의 GPU 소비는 약 1.3~ 1.7ms 이며, 최적화된 스위치의 그림자 품질은 육안으로 거의 구분할 수 없습니다.

그림자는 조명에 거시적인 단일 레이어 폐색 효과만 나타낼 수 있으며 미세한 다중 레이어 (다중 조명 효과) 효과는 시뮬레이션할 수 없습니다. 예를 들어, 그림자 속의 지면에서 그림자만 사용하는 경우 지면에서 다른 물체의 투영을 시뮬레이션할 수 없으므로 오브젝트가 공중에 떠 있는 것처럼 보입니다. 이러한 결함은 앰비언트 솔루션을 통해 해결할 수 있으며,' 원신' 은 다양한 시나리오를 선택할 수 있는 다양한 AO 시나리오를 제공합니다.

HBAO 는 horizon based ambient occlusion 의 약어입니다. (또한 우리가 흔히 말하는 HDAO (HD 주변 폐색) 와 HBAO 는 동등하지만 전자는 AMD 의 이름이고, 후자는 NVidia 이름입니다.) 이것은 매우 일반적인 AO 체계로, 화면 공간에 대한 사후 처리를 통해 물체에 더욱 섬세한 세부 사항을 제공할 수 있다. 기본 구현 원리는 각 방향의 깊이를 샘플링하여 최대 폐색 각도를 얻고 각 방향의 최대 폐색 각도의 사인을 누적하여 AO 를 얻는다는 것입니다. 이 알고리즘의 품질은 SSAO 보다 우수하고, 논리는 더 물리적이고 현실적이지만, 성능 소모는 더 높다. 업계에서는 일반적으로 최적화된 버전의 HBAO+ 를 사용합니다. 자세한 내용은 AO 구현 알고리즘에 대한 이전 개요: 앰비언트 기술 시나리오 개요를 참조하십시오.

AO 볼륨은 정적 오브젝트를 위해 개발된 AO 스키마입니다. AO 용적은 HBAO 보다 더 큰 폐색 효과를 낼 수 있습니다. 위 그림에서 볼 수 있듯이 HBAO 알고리즘은 이러한 그림자 효과와 유사한 AO 에 대해 무력하므로 추가 AO 볼륨 알고리즘 논리를 추가해야 합니다.

AO 볼륨의 구현 논리는 이전에 만든 AO 알고리즘 개요를 참조하여 공유할 수 있습니다.

"원신" AO 본체의 사용 시나리오는 오프라인으로 정적 오브젝트의 AO 데이터를 베이킹한 다음 작업 시 베이킹된 데이터를 기준으로 최종 폐색 효과를 계산하는 것입니다.

정적 오브젝트의 그림자는 lightmap+AO Volume 을 통해 구현할 수 있으며 동적 오브젝트의 그림자는 HBAO 에만 의존하면 너무 거칠어 보일 수 있지만 이를 처리하기 위해 그림자 맵을 하나 더 추가하면 낭비될 수 있습니다. 원신' 의 방법은 Capsule AO 를 통해 캐릭터와 같은 동적 물체에 더욱 세밀한 그림자 효과를 추가하는 것이다.

캡슐 AO 의 구체적인 구현 원리는 앞서 AO 알고리즘에 대한 총결산을 참고하여 공유할 수 있다. 간단히 이 알고리즘은 여러 캡슐을 사용하여 캐릭터를 시뮬레이션합니다. 캡슐은 캐릭터 골격의 위치에 따라 변경됩니다. ) 그런 다음 렌더링할 위치의 반구 투영 영역에 대한 캡슐 배율을 계산하여 주변 AO (또는 그림자) 를 출력하고 주 광원 AO 를 계산합니다 (렌더 위치를 축 방향으로 사용하여 캡슐을 특정 각도로 테이퍼하는 원뿔에 대한 배율을 계산함).

AO 계산의 성능을 향상시키기 위해' 원신' 의 모든 AO 계산은 1/2 의 해상도로 진행된다. 계산이 완료되면 효과를 더 부드럽게 하고 결함을 줄이기 위해 이중 선형 블러 처리 (수평+수직) 가 추가됩니다. 마지막으로 이를 사용할 때 추가 업샘플링 프로세스가 필요합니다 (해상도가 1/2 인 맵을 직접 사용하여 수행 가능).

흐림 효과를 적용하는 동안 각 픽셀은 주변 여러 픽셀의 값을 혼합해야 합니다. 기존 PS 를 사용하는 경우 픽셀당 여러 개의 맵 샘플이 필요합니다. 이러한 샘플 결과는 실제로 다른 인접 픽셀의 계산에서 재사용할 수 있습니다. 따라서 계산 성능을 더욱 향상시키기 위해' 원신' 의 방법은 계산 셰이더에 흐림 처리를 넣는 것입니다.

특히 인접한 픽셀의 샘플 결과는 로컬 데이터 공유에 저장되고, 흐릿할 때 다시 검색하고, 한 번에 4 픽셀의 블러 계산을 완료하고, 결과를 출력합니다.

원신이 사용하는 렌더링 파이프는 클러스터형 지연 조명입니다 (이전 공유: 클러스터형 정방향 렌더링 참조). 장면은 16 개의 슬라이스로 나뉘며, 각 슬라이스의 크기는 64x64 픽셀이며 최대 1024 개의 로컬 조명을 지원할 수 있습니다.

위 그림은 여러 로컬 광원의 시간 효과입니다. 로컬 라이트에도 실시간 그림자가 있지만 모든 로컬 라이트가 그림자를 추가하는 것은 아닙니다 (미술생이 제어할 수 있어야 함). 여기서 실시간 그림자를 지원하는 로컬 광원 수는 65,438+000 을 초과하지 않습니다.

전체 그림자 효과는 정적 그림자와 동적 그림자를 베이킹하는 조합입니다 (그림자 맵을 사용한다고 가정, 그러나 계산 소비가 매우 높기 때문에 주어진 재질에서 어떤 최적화가 이루어졌는지 추론하기가 어렵습니다).

로컬 라이트의 정적 그림자의 경우 해당 그림자 맵을 베이킹해야 합니다. 광원이 많기 때문에, 각 등은 모두 구워져서, 하드 드라이브의 공간이 크게 점유될 수 있다. 그림자 맵은 깊이 맵이므로 블록 압축으로 압축할 수 없습니다. 이 문제를 해결하기 위해' 원신' 팀은 또 다른 압축 아이디어를 설계했다.

구체적인 아이디어 (Siggraph 20 19 를 참조하는 문장 확장 가능한 실시간 다중 음영 렌더링 시스템) 는 다음과 같습니다.

이 시나리오의 표현은 실내 장면의 정밀도 압축비가 0.2 ~ 0.3 정도 (즉 10k 에서 2 ~ 3k 로 압축되어 효과에 약간의 흠집이 있을 수 있음), 고정밀 모드 압축비는 0.4 ~ 0.7 (결함은 기본적으로 육안으로는 구별하기 어렵다) 입니다.

볼륨 안개 계산 방법 자체는 신선 효과를 얻을 수 있지만 이렇게 달성된 신선 효과는 분명하지 않을 수 있습니다 (복셀 수가 적기 때문에 이 방법은 텍스처 해상도가 낮고 안개 농도가 신선을 생성하기에 충분하지 않을 수 있기 때문에 신선 효과가 뚜렷하지 않을 수 있음). 여기서' 원신' 팀은 신의 광선 효과를 더 좋게 보이게 하는 것을 목표로 하고 있다. 추가 광선 이동 채널을 사용하여 하느님의 빛을 실현하고, 빛이 이동한 후의 하느님의 광선 효과를 추가로 조정하여 더 아름다운 예술적 효과를 낼 수 있는 몇 가지 추가 매개변수를 추가합니다 (물리적인 것은 아니지만).

영상에 표시된 반사탐침과 환경탐침의 장면은 모두 24 시간 동안 끊임없이 변하는 반면, 전통적인 반사도는 모두 오프라인으로 캡처되기 때문에 일반적으로 시간에 따라 변할 수 없다. 그렇다면 이 성능은 어떻게 이루어집니까?

반사 프로브의 경우 환경 맵을 직접 베이킹하는 대신 법선/깊이/반사도 등의 정보를 포함하는 미니 g 버퍼 맵 세트를 베이킹한 다음 당시의 조명 데이터를 기반으로 반사 큐빅 맵을 실시간으로 생성합니다. 전통적인 반사 프로브와 마찬가지로 예술생도 장면에 이러한 프로브를 많이 배치할 수 있습니다.

환경지도의 실시간 생성은 주로 다음 단계를 통해 수행됩니다.

전체 프로세스는 셰이더 계산에 의해 수행됩니다. Compute Shader 에서는 6 개의 표면을 동시에 여러 스레드로 처리할 수 있지만 단일 반사 큐빅 맵의 업데이트는 실제로 비용이 많이 듭니다. 단일 프레임의 압력을 줄이기 위해 반사 큐빅 맵의 업데이트는 여러 프레임에 분산되어 있으며 프레임당 하나의 프로브만 업데이트되고 모든 프로브는 시간 회전으로 업데이트됩니다.

반사 프로브가 업데이트되면 현재 프로브의 라이트 필드 데이터를 가져와서 이 라이트 필드에서 환경 프로브의 조명 데이터를 추출합니다. 환경 프로브의 저주파 특성으로 인해 전체 라이트 필드를 SH 계수로 저장하여 메모리 소비를 더욱 줄일 수 있습니다.

라이트 필드 추출도 Compute Shader 를 통해 수행되어 한 번에 6 면의 계산을 완료합니다.

위 단계를 완료하면 시간에 따라 동적으로 변경되는 조명 정보를 얻을 수 있지만 몇 가지 문제가 남아 있습니다.

이러한 문제들에 대해' 원신' 은 다음과 같은 해결책을 제시했다.

또한 실내 및 실외 변환 영역의 하드 절단을 방지하기 위해 변환 영역을 부드럽게 했습니다. 다음은 내부 메시에서 생성된 마스크 맵입니다.

반성과 반성. 환경 프로브를 사용할 때 AO 데이터도 고려되므로 누출 문제를 효과적으로 줄일 수 있습니다.

PS4 Pro 에서 SSR 의 오버헤드는 약 1.5ms 이며, 디스플레이 품질을 향상시키기 위해 과거 데이터를 혼합하는 시간 필터가 추가되었습니다. 또한 다양한 거칠기 하에서 반사 결과를 신속하게 얻기 위해 SSR 에 대한 Hi-Z 와 같은 버퍼 그래프가 생성됩니다.

이 원문은 비교적 상세해서 군더더기는 하지 않는다.

上篇: 상하이의 Santang Ancient Town은 어디에 있나요? 下篇: ■삼성 S508 - 적외선을 사용해 사물을 전송할 수 있나요?■
관련 내용