上次的描邊著色器有兩個問題,導致效果不太理想。現在我們來設法改進這兩點。
問題一:
使用 ddxuvddyuvregisterindex
屬性指定包含紋理座標對螢幕空間的偏導數的著色器暫存器。
例如,如果將
ddxuvddyuvregisterindex
設定為 4,則使用著色器暫存器 c4。
暫存器 c4 包含四個浮點字段。
下面的高階著色語言 (hlsl) **演示如何使用此暫存器。
nextpixeluv
值表示右邊的下乙個畫素。
float4 ddxuvddyuv : register(c4);
samplerstate sampler : register(s0);
...float2 nextpixeluv;
nextpixeluv.u
=ddxuvddyuv.x +u;
nextpixeluv.v
=ddxuvddyuv.y +v;
tex2d(sampler, nextpixeluv);
因此,我們壓根就不需要傳入什麼寬度高度!
問題二:
最後特別推薦:漢字使用宋體字,在12,13號等大小下,出現透明畫素最少。英文和數字的宋體效果非常一般,建議換其他字型如arial等。可以自己在下面輸入任意文字,檢視描邊效果。
著色器**:
1sampler2d input : register(s0); 24
567float4 fontcolor:register(c0); 89
float4 bordercolor:register(c1);
1011
float4 ddxuvddyuv : register(c2);
1213
14float4 main(float2 uv : texcoord) : color
1540
else
4148
else
4956
else
5764}65
}66}67
}68else
6978}79
8081
82return color; }
Pixel Shader 畫素著色
introduction pixel shader是一段執行在gpu上的程式,只限於光柵化階段。與vertex shader不同的是,d3d不會使用軟體模擬pixel shader,pixel shader基本上取代了fixed pipeline中的multitexturing階段,它使我們能夠直接...
著色器(Shader)之畫素著色器
畫素著色器實際上就是對每乙個畫素進行光柵化的處理期間,在gpu上運算的一段程式。不同與頂點著色器,畫素著色器不會以軟體的形式來模擬畫素著色器。畫素著色器實質上是取代了固定功能流水線中多重紋理的環節,而且賦予了我們訪問單個畫素以及訪問每乙個畫素紋理座標的能力 多重紋理就是我們同時啟用多層紋理,然後規定...
顯示卡不支援畫素著色器?
按計畫該發出畫素著色器ps 的內容,無奈家裡的電腦配置太低,顯示卡竟然不支援ps。家裡的顯示卡型號nvidia getforce4 mx 440 又看到網上某牛人如是說 nvidia 曾經推出市場上銷量最好的gf4 mx440 agp 8x 它和高階的gf4 ti 的本質區別就是它僅僅支援verte...