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.

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

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

Saved successfully!

Ooh no, something went wrong!