Piksel gölgelendiricisinde, palet renklerinin tümü arka arkaya yatay olarak dizilmiş bir 256x256 Texture2D geçirebilirsiniz. Daha sonra NES dokularınız, hiç piksel 0-255 dizin değerine dönüştürülürken direct3D Texture2D'lere dönüştürülür. D3D9'da yalnızca kırmızı değeri kullanan bir doku biçimi vardır. Yani doku piksel başına sadece 8 bit alacaktı, ancak gölgelendiriciye gelen veriler 0-1 arasında olacaktı.
// Piksel gölgelendirici şöyle görünebilir:
float4 mainPS() : COLOR0
{
float4 colorIndex = tex2D(MainTexture, uv);
float4 palletColor = tex2D(PalletTexture, float2(colorIndex.x, 0);
return palletColor;
}
DÜZENLEME: İhtiyacınız olan tüm harmanlama paleti versiyonuna dokuya dikey olarak hizalanmak ve bunları colorIndex'in 'alfa' değeri ile referans vermek daha doğru bir yol olacaktır:
float4 mainPS() : COLOR0
{
float4 colorIndex = tex2D(MainTexture, uv);
float4 palletColor = tex2D(PalletTexture, float2(colorIndex.x, colorIndex.a);
return palletColor;
}
Üçüncü yol, alfa rengini gölgeleyerek NES düşük solma kalitesini taklit etmek olacaktır:
float4 mainPS() : COLOR0
{
float4 colorIndex = tex2D(MainTexture, uv);
float4 palletColor = tex2D(PalletTexture, float2(colorIndex.x, 0);
palletColor.a = floor(palletColor.a * fadeQuality) / fadeQuality;
//NOTE: If fadeQuality where to equal say '3' there would be only 3 levels of fade.
return palletColor;
}