셰이더 노드 가이드

1. 노이즈 코드 vs 노이즈 텍스쳐 사용 2. Smapler State 고정 3. 프로퍼티 정밀도 Half로 변경 4. 연산량 큰 노드
Implementation
- 01
노이즈 코드 vs 노이즈 텍스쳐 사용
노이즈 텍스쳐 대신 코드로 만든 노이즈를 사용하고 있는데, 연산량이 많아 텍스쳐 128 or 64px 를 사용하는 것이 좋습니다.
코드 노이즈를 사용할 경우는 고화질 노이즈가 필요할 경우 사용합니다.

- 02
Sampler State 고정
한 패스 내에서 여러 텍스처가 각기 다른 Sampler State를 쓴다면, GPU 입장에서는 텍스처/샘플러 스테이트가 빈번히 변경되어 Draw Call 분할이나 일부 오버헤드가 생길 수 있습니다.
Repeat : 타일링이 필요한 텍스쳐
Clamp : 타일링이 필요없는 텍스쳐

- 03
프로퍼티 정밀도 Half로 변경
Half(16비트)는 Single(32비트)보다 작은 공간을 사용하므로, GPU가 연산 시 레지스터·메모리를 덜 사용합니다.
복잡한 정밀도를 요구되는 계산 이외에는 프로퍼티 정밀도를 Half로 변경합니다.
프로퍼티 개별 적용 방법 / 전체 적용 방법


Gallery


연산량 큰 노드
Scene Depth / Scene Color 노드 → Scene Depth, Scene Color 등은 “렌더링된 결과 텍스처”를 다시 샘플해야 하므로, 파이프라인에 따라 추가 Pass나 GBuffer 접근이 필요합니다. RTS 뷰시점 프로젝트에서는 Scene Depth가 필요한 디테일 셰이더가 없을 것으로 예상됩니다.
Triplanar → 배경에서 Triplanar를 사용할 시에는 Biplanar를 사용합니다.
샘플링 횟수 감소,블렌딩 연산 축소
Parallax Occlusion Mapping 노드 → Normal Map or MatcapNormal Map 사용
Parallax Occlusion Mapping은 뷰 각도에 따라 높이 맵 연산을 여러 번 반복해서,
픽셀 당 디테일한 깊이 효과를 만듭니다.
보통 내부적으로 수십 번의 텍스처 샘플링을 수행해, 매우 연산량이 큽니다.
Power → x²을 구하고 싶을 때 Pow(x, 2)대신 x * x(멀티플라이 두 번)로 계산하는 편이 가볍습니다.
재사용목적이 크지않다면 텍스쳐를 수정해서 연산된 그라디언트값을 맞추도록 합니다.
