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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

180 Sha<strong>de</strong>rs <strong>de</strong> estimativa <strong>de</strong> elementos <strong>de</strong> geometria diferencial <strong>de</strong> segunda e terceira or<strong>de</strong>m<br />

}<br />

}<br />

m[i] = sum * d[i];<br />

for( i = N-1; i >= 0; i-- )<br />

{<br />

}<br />

float sum = 0;<br />

for( int k = i + 1; k < N; k++ )<br />

sum += w[k][i] * m[k];<br />

m[i] -= sum * d[i];<br />

return m;<br />

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

// Calcula elementos <strong>de</strong> segunda or<strong>de</strong>m.<br />

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

PS_OUT1 Tensor2( VS_IN In ) {<br />

PS_OUT1 Out;<br />

// Amostra índices <strong>de</strong> adjacência<br />

// .z) Índice do 1o. vértice adjacente no mapa <strong>de</strong> vértices adjacentes<br />

// .w) Número <strong>de</strong> vértices adjacentes<br />

float4 fAdj = tex2D( sAdjIdx, In.vTex );<br />

if( fAdj.z == -1.0 ) discard;<br />

// Índices UV do primeiro vértice da vizinhaça<br />

float2 vAdjUVNei = I1DTo2D( fAdj.z, g_vAdjCons );<br />

float fIdxNei = tex2D( sAdj, vAdjUVNei ).x;<br />

float2 vUVNei = I1DTo2D( fIdxNei, g_vVtCons );<br />

// Calcula uma base tangente ortogonal inicial<br />

float3 vPos = tex2D( sVPos, In.vTex );<br />

float3 vNormal = tex2D( sVN, In.vTex );<br />

float3 vPosNei = tex2D( sVPos, vUVNei );<br />

float3 vNormalNei = tex2D( sVN, vUVNei );<br />

float3 vPDir1 = normalize( cross( (vPosNei - vPos), vNormal ) );<br />

float3 vPDir2 = cross( vNormal, vPDir1 );

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

Saved successfully!

Ooh no, something went wrong!