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.

PS_OUT2 Tensor3( VS_IN In ) {<br />

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

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

float4 vpk1 = tex2D( sP1K1, In.vTex );<br />

float4 vpk2 = tex2D( sP2K2, In.vTex );<br />

float3 vPDir1 = vpk1.xyz,<br />

vPDir2 = vpk2.xyz;<br />

float2 vCurv = float2( vpk1.w, vpk2.w );<br />

float2 vCurvNei;<br />

float4 m = 0;<br />

float4x4 w = 0;<br />

int iCt = 0;<br />

while( iCt < fAdj.w )<br />

{<br />

// Obtém índice do vértice do mapa <strong>de</strong> adjacência<br />

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

float fIdxNei = tex2Dlod( sAdj, float4( vAdjUVNei,0,0 ) ).x;<br />

// Obtém atributos do vértice<br />

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

float3 vPosNei = tex2Dlod( sVPos, float4( vUVNei,0,0 ) );<br />

vCurvNei.x = tex2Dlod( sP1K1, float4( vUVNei,0,0 ) ).w;<br />

vCurvNei.y = tex2Dlod( sP2K2, float4( vUVNei,0,0 ) ).w;<br />

float3 fcurv_i = float3( vCurv.x, 0, vCurv.y ),<br />

fcurv_n = float3( vCurvNei.x, 0, vCurvNei.y );<br />

183

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

Saved successfully!

Ooh no, something went wrong!