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
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