[ glorius @ 24.02.2010. 14:07 ] @
Zanima me da li je moguce uraditi osvetljenje u single-pass za vise svetala na nacin koji nece toliko opterecivati pixel shader. Ja sam uradio na sledeci nacin ( ovo je samo deo shadera): Code: // Shader.fx float3 lightPos[3]; // za 3 svetla // u vertex shaderu proracunavam poziciju vertexa u world koordinatama (posW) i prosledjujem ga pixel shaderu float4 PixelShader( float3 posW : TEXCOORD0 ) // ovde idu i normala u world koordinatama, texCoords.... { float3 lightVec0 = normalize( lightPos[0] - posW); float3 lightVec1 = normalize( lightPos[1] - posW); float3 lightVec2 = normalize( lightPos[2] - posW); // dalje sledi racunanje diffuse, specular } Posto zelim Per-Pixel shading ( nacin za per-vertex mi je poznat ) da li je ovo preskup shader za multilight ( napominjem da mi je cilj da ovaj shader bude per-object i da me trenutno zanima samo ova tehnika - pored multipass i deferred koji su izvan ove diskusije ) i da li je moguce uraditi neke optimizacije kao sto je prebacianje nekog dela proracuna na vertex shader ili mozda postoji neki drugi 'trik'? |