Dither 노드
설명
디더는 양자화 오류를 무작위화하는 데 사용되는 의도적 형태의 노이즈입니다. 이미지에서 컬러 밴딩과 같은 대규모 패턴을 방지하기 위해 사용합니다. Dither 노드는 화면 공간에 디더링을 적용하여 패턴의 균일한 분포를 보장합니다. 다른 노드를 Screen Position 입력에 연결하여 조정할 수 있습니다.
이 노드는 일반적으로 마스터 노드의 Alpha Clip Threshold에 대한 입력으로 사용되어 불투명한 오브젝트에 투명 형상을 부여합니다. 이 노드는 투명하게 보이지만 불투명 렌더링의 이점을 누리는 오브젝트를 생성할 때 유용합니다(예: 뎁스 작성 및/또는 디퍼드 렌더링).
포트
이름 | 방향 | Type | 바인딩 | 설명 |
---|---|---|---|---|
In | 입력 | 동적 벡터 | None | 입력 값 |
Screen Position | 입력 | 벡터 4 | Screen Position | 디더 패턴을 적용하는 데 사용되는 좌표 |
Out | 출력 | 동적 벡터 | None | 출력 값 |
생성된 코드 예제
다음 예제 코드는 이 노드의 가능한 결과 중 하나입니다.
void Unity_Dither_float4(float4 In, float4 ScreenPosition, out float4 Out)
{
float2 uv = ScreenPosition.xy * _ScreenParams.xy;
float DITHER_THRESHOLDS[16] =
{
1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
};
uint index = (uint(uv.x) % 4) * 4 + uint(uv.y) % 4;
Out = In - DITHER_THRESHOLDS[index];
}