카메라 관련 렌더링
카메라 관련 렌더링을 사용하면 고해상도 렌더 파이프라인(HDRP)이 원거리 게임 오브젝트(대규모 월드 공간 좌표가 포함되어 있음)를 빌트인 렌더 파이프라인에 비해 더욱 견고하고 수치상 안정적인 방법으로 렌더링할 수 있습니다.
부동 소수점 수의 절대 정밀도는 수가 커질수록 감소합니다. 이는 게임 오브젝트가 씬의 원점에서 멀어질수록 게임 오브젝트 좌표 정밀도가 점점 줄어든다는 의미입니다. 서로 가까이 있는 원거리 게임 오브젝트의 메시 면이 동일한 장소에서 나타나 z-fighting 결함을 만들 수 있습니다. 이 문제를 수정하기 위해 카메라 관련 렌더링이 월드 원점을 카메라 포지션으로 교체합니다.
카메라 관련 렌더링 사용
카메라 관련 렌더링은 기본적으로 ShaderConfig.cs 파일에서 활성화됩니다(Project 창에서 Packages > High Definition RP Config > Runtime > ShaderLibrary로 이동한 뒤 ShaderConfig.cs 클릭). 이 기능을 비활성화하려면 CameraRelativeRendering
을 0
으로 설정한 다음 Shader Includes를 생성하여 ShaderConfig.cs.hlsl 파일을 업데이트합니다(메뉴: Edit > Render Pipeline에서 Generate Shader Includes 클릭).
카메라 관련 렌더링 작동 방법
카메라 관련 렌더링 프로세스는 다른 지오메트리 변형이 영향을 미치기 전에 음수화된 월드 공간 카메라 포지션으로 게임 오브젝트와 광원을 변환합니다. 그런 다음 월드 공간 카메라 포지션을 0으로 설정하고 그에 따라 모든 관련 매트릭스를 수정합니다.
미리 빌드된 HDRP 셰이더에 대한 소스 파일을 보는 경우 뷰와 뷰 투사 매트릭스는 광원과 표면 포지션에 따라 카메라에 상대적입니다. HDRP 셰이더에 있는 대부분의 월드 공간 포지션은 또한 카메라에 상대적입니다.
예외: _WorldSpaceCameraPos
는 HDRP가 좌표 공간 전환에 대해 사용하므로 카메라에 상대적이지 않습니다.
예시
카메라 관련 렌더링을 활성화하면 다음과 같은 결과가 나옵니다.
GetAbsolutePositionWS(PositionInputs.positionWS)
는 비 카메라 관련 월드 공간 포지션을 반환합니다.GetAbsolutePositionWS(float3(0, 0, 0))
는_WorldSpaceCameraPos
와 동일한 카메라의 월드 공간 포지션을 반환합니다.GetCameraRelativePositionWS(_WorldSpaceCameraPos)
는float3(0, 0, 0)
을 반환합니다.
카메라 관련 렌더링을 비활성화하면 다음과 같은 결과가 나옵니다.
GetAbsolutePositionWS()
와GetCameraRelativePositionWS()
는 전달된 포지션을 수정 사항 없이 반환합니다.