2017-05-01 16 views
1

두 가지 색상 사이에서 간단한 전환을 만들려고합니다. 따라서 상단 가장자리 색상이 # 2c2b35이고 하단 색상이 # 1a191f 인 쿼드를 렌더링합니다. 꼭 꼭짓점에 색상을 적용하고 그것을 보간하는 간단한 픽셀 쉐이더를 통해 색 밴딩의 효과를 얻었습니다. 고급 픽셀 쉐이더 디더링 기술 없이는 그 효과를 제거하는 옵션이 있는지 궁금합니다.Direct3D11 픽셀 쉐이더 보간

왼쪽 부분이 내 앱에서 렌더링되고 오른쪽 부분이 '디더링 됨'옵션이 선택된 Photoshop에서 렌더링되는 렌더링의 a picture을 첨부하고 있습니다.

미리 감사드립니다.

답변

1

밴딩은 모든 렌더링 엔진이 어느 시점에서 처리해야하는 문제입니다.

디더링을 구현하기 전에 먼저 적절한 srgb 파이프 라인을 따르고 있는지 확인해야합니다. (https://en.wikipedia.org/wiki/SRGB)

정확함 : RGBX8의 스왑 체인 및 렌더링 표면에는 SRGB 값이 있어야합니다. 가장 간단한 방법은 XXXX_UNORM_SRGB 형식의 렌더링 타겟 뷰를 만드는 것입니다. 텍스처가 적절할 때 UNORM_SRGB 포맷보기 (알베도 맵) 및 적절하지 않은 경우 UNORM (노멀 맵) 조명과 같은 셰이더 계산은 선형 공간에 있어야합니다.

올바른 형식을 사용할 때 텍스처 및 렌더링 대상은 읽기 및 쓰기시 변환을 수행하지만 상수의 경우 수동으로 수행해야합니다. 예를 들어 # 2c2b35에서 : 0x2c는 srgb 44 (0.1725)이지만 선형 값은 0.025입니다.

그라디언트를 수행하려면 셰이더의 선형 공간에서 수행해야하며 렌더링 대상에서 srgb로 다시 변환해야합니다 쓰기.