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.
174 Sha<strong>de</strong>rs <strong>de</strong> estimativa <strong>de</strong> elementos <strong>de</strong> geometria diferencial <strong>de</strong> primeira or<strong>de</strong>m<br />
}<br />
float fR = 1.0f / ( vDW1.x*vDW2.y - vDW2.x*vDW1.y );<br />
float3 vT = float3( vDW2.y*vDV1.x - vDW1.y*vDV2.x,<br />
vDW2.y*vDV1.y - vDW1.y*vDV2.y,<br />
vDW2.y*vDV1.z - vDW1.y*vDV2.z );<br />
float3 vB = float3( vDW2.x*vDV1.x - vDW1.x*vDV2.x,<br />
Out.vNTB[1] = vT * fR;<br />
Out.vNTB[2] = vB * fR;<br />
return Out;<br />
vDW2.x*vDV1.y - vDW1.x*vDV2.y,<br />
vDW2.x*vDV1.z - vDW1.x*vDV2.z );<br />
/////////////////////////////////////////////////////////////////////<br />
// 3o. passo: Calcula as bases tangentes para cada vértice.<br />
// Cada vértice vai conter a média das bases tangentes das faces<br />
// inci<strong>de</strong>ntes. As bases tangentes são ortonormalizadas no final.<br />
/////////////////////////////////////////////////////////////////////<br />
struct PS_VERTEXNTOUT { float3 vNT[2] : COLOR; };<br />
PS_VERTEXNTOUT ComputeVertexTB( float2 vTex )<br />
{<br />
PS_VERTEXNTOUT Out;<br />
float2 fIdx2;<br />
float3 vSumN, vSumT, vSumB;<br />
vSumN = vSumT = vSumB = float3( 0.0, 0.0, 0.0 );<br />
// Lê mapa <strong>de</strong> índices <strong>de</strong> adjacência<br />
float3 vAdjIdx = tex2D( sAdjIdx, vTex );<br />
// Soma as normais e tangentes das faces adjacentes<br />
for( int iCt = 0; iCt < vAdjIdx.y; iCt++ )<br />
{<br />
// Obtém o índice da face atual no mapa <strong>de</strong> adjacência