HLSL filtr

Jednou z mála neveřejných vlastností ZPS 10 je přítomnost filtru umožňujícího zpracování obrazu prostřednictvím pixel shaderů na grafické kartě. Bohužel, tento filtr byl určen jen pro potřeby vývoje a proto je velice strohý a některé parametry má fixně nastavené. Pracuje s pixel shadery 2.0 a hardwarovou akceleraci má povolenu jen pro 24 bitové obrázky, protože ovladače některých grafických karet jsou v 48mi bitovém režimu schopny shodit OS do modré. Vstupní programy přijímá v HLSL a nevypisuje žádné zprávy, tedy nedozvíte se, kde je ve vašem kódu chyba. Jeho použití také omezuje skutečnost, že obraz zpracovává po nepřekrývajících se částech. Všechna tato omezení ho degradují spíše na hračku, ale třeba někomu bude informace o jeho přítomnosti k něčemu dobrá.
Jak se k tomuto filtru dostanete? Spusťte si hromadný filtr, v něm stiskněte současně klávesy Cltr a Shift a s těmito stisknutými klávesmi klikněte na zelené tlačítko se symbolem plus pro přidání dalšího filtru do seznamu. V nabídce se za Uživatelským filtrem objeví další filtr bez ikony označený jako Pixel Shader. Tento si zvolte a nyní už nezbývá nic jiného než vložit do něj svůj program.

Tímto kouskem kódu převedete obrázek na odstíny šedi

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 main(float2 tex : TEXCOORD0) : COLOR
{	
float c0 = dot(tex2D(s0, tex), float4(0.299, 0.587, 0.114, 0));
return c0;
}

a tímto krátkým programem můžete obrázek pro změnu invertovat:

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 main(float2 tex : TEXCOORD0) : COLOR
{	
	float4 c0 = float4(1, 1, 1, 1) - tex2D(s0, tex);	
	return c0;
}

Ukázka použití filtru na inverzi barev v obrázku

Možná se vám bude ještě hodit informace o některých dostupných konstantách

p0[0] šířka zpracovávané části obrazu
p0[1] výška zpracovávané části obrazu
p0[2] šířka celého obrázku
p0[3] výška celého obrázku
p1[0] levý okraj zpracovávané části
p1[1] horní okraj
p1[2] pravý okraj
p1[3] spodní okraj

Ukázky dalších programů

 
software/hlsl_filtr.txt · Poslední úprava: 15.10.2007 10:36 autor: zmatek
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki