03.04.2013 Views

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

vPos = Deform( vPos );<br />

// Grava o resultado no mapa <strong>de</strong> posições atualizadas dos vértices<br />

return vPos;<br />

/////////////////////////////////////////////////////////////////////<br />

// 2o. passo: Calcula as bases tangentes para cada face.<br />

/////////////////////////////////////////////////////////////////////<br />

struct PS_FACENTBOUT { float3 vNTB[3] : COLOR; };<br />

PS_FACENTBOUT ComputeFaceNTB( float2 vTex )<br />

{<br />

PS_FACENTBOUT Out;<br />

// Lê os índices dos três vértices que compõem a face<br />

float3 vVtIdx = tex2D( sFace, vTex );<br />

// Lê as posições atualizadas <strong>de</strong> vértices<br />

float3 vVtUV1 = Idx1DTo2D( vVtIdx.x, g_vVtCons );<br />

float3 vVtUV2 = Idx1DTo2D( vVtIdx.y, g_vVtCons );<br />

float3 vVtUV3 = Idx1DTo2D( vVtIdx.z, g_vVtCons );<br />

float3 vV1 = tex2D( sUpdVPos, vVtUV1 );<br />

float3 vV2 = tex2D( sUpdVPos, vVtUV2 );<br />

float3 vV3 = tex2D( sUpdVPos, vVtUV3 );<br />

// Calcula normal à face e grava do mapa <strong>de</strong> normais às faces<br />

float3 vDV1 = vV2 - vV1;<br />

float3 vDV2 = vV3 - vV1;<br />

Out.vNTB[0] = cross( vDV1, vDV2 );<br />

// Lê as coor<strong>de</strong>nadas <strong>de</strong> textura <strong>de</strong> cada vértice<br />

float2 vW1 = tex2D( sVTex, vVtUV1 );<br />

float2 vW2 = tex2D( sVTex, vVtUV2 );<br />

float2 vW3 = tex2D( sVTex, vVtUV3 );<br />

// Calcula tangente e bitangente à face e grava os resultados<br />

// em duas texturas<br />

float2 vDW1 = vW2 - vW1;<br />

float2 vDW2 = vW3 - vW1;<br />

173

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!