2017-05-01 83 views
1

我正試圖在兩種顏色之間創建一個簡單的過渡。因此,四邊形的頂部邊緣顏色爲#2c2b35,底部顏色爲#1a191f。當我通過簡單的像素着色器,它只是將顏色應用到頂點並對其進行插值時,我得到了顏色帶的效果,我想知道是否有一個選項可以在沒有某些高級像素着色器抖動技術的情況下消除該效果。Direct3D11像素着色器插值

我附加了一個渲染的a picture,其中左側部分在我的應用程序中呈現,右側部分在Photoshop中使用「抖動」選項選中。

在此先感謝。

回答

1

條帶化是每個渲染引擎都需要處理的問題。

在開始執行抖動之前,您應該首先確認您正在遵循正確的srgb管道。 (https://en.wikipedia.org/wiki/SRGB

SRGB正確: RGBX8中的交換鏈和渲染表面必須包含SRGB值。最簡單的方法是使用XXXX_UNORM_SRGB格式創建渲染目標視圖。 紋理必須在適當的時候使用UNORM_SRGB格式視圖(反照率圖)和UNORM(如果不合適)(法線貼圖) 像照明一樣的着色器計算必須處於線性空間。

使用正確格式時紋理和渲染目標將在讀寫時爲您執行轉換,但對於常量,您必須手動執行轉換。例如在#2c2b35中:0x2c在srgb 44(0.1725)中,但線性值爲0.025

要做漸變,必須在着色器的線性空間中執行此操作,並讓渲染目標將其轉換回srgb在寫。