mulÀº º¤ÅÍ¿Í Çà·ÄÀÇ ¼ø¼¿¡ µû¶ó °á°ú°¡ ´Ù¸£´Ù. mul(x, y) x°ªÀÌ vectorÀ̸é row-vector·Î ó¸®ÇÏ°í y°ªÀÌ vectorÀ̸é column-vector·Î ó¸®ÇÑ´Ù. mul( vector, matrix ) ===> row vector (row-major matrix system) mul(matrix, vector ) ===> column vector (column-major matrix system) DirectX API¿¡¼´Â 4Â÷¿ø Çà·ÄÀ» ³Ñ°ÜÁÙ¶§ ÀüÄ¡ Çà·Ä·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. HLSL¿¡¼´Â ÀüÄ¡Çà·ÄÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù. //1. ¾î¼Àºí¸®¿¡¼ »ç¿ëÇÒ¶§´Â ÀüÄ¡ Çà·ÄÀÌ ÇÊ¿äÇÏ´Ù
D3DXMATRIX tm; D3DXMatrixMultiply( &tm, &viewTM, &projectionTM ); D3DXMatrixTranspose( &tm, &tm ); pDevice->SetVertexShaderConstantF( 0, ( float* )&tm, 4 ); //--------------------------------------------------------------------------------- //2. HLSL¿¡¼ »ç¿ëÇÒ¶§´Â ÀüÄ¡ Çà·ÄÀÌ ÇÊ¿ä¾ø´Ù //HLSLÀº ÄÄÆÄÀÏµÈ °á°ú¹°ÀÇ µðÆúÆ®°¡ ¿¿ì¼±ÀÌ´Ù, //Çà·ÄÀÌ ¼ÎÀÌ´õ»ó¼ö¿¡ ³Ñ¾î°¥¶§ Çà¿ì¼±->¿¿ì¼±À¸·Î ÆÐÅ·µË´Ï´Ù. ¿¹1) »ó¼ö Å×À̺íÀ» »ç¿ëÇϸé HLSL¿¡¼´Â ÀüÄ¡Çà·ÄÀÌ ÇÊ¿ä ¾ø´Ù D3DXHANDLE viewTMHandle = 0; viewTMHandle = pShaderConstTable->GetConstantByName( 0, "viewMatrix" ); D3DXMATRIX viewTM; pDevice->GetTransform( D3DTS_VIEW, &viewTM ); pShaderConstTable->SetMatrix( pDevice, viewTMHandle, &viewTM ); ¿¹2) ID3DXEffect »ç¿ëÇϸé HLSL¿¡¼´Â ÀüÄ¡Çà·ÄÀÌ ÇÊ¿ä ¾ø´Ù D3DXMATRIX &tm; D3DXMatrixMultiply( &tm, &viewTM, &projectionTM ); pEffect->SetMatrix( pViewProjectionTMParameter, &tm ) °á·Ð) row-majored¶ó¸é shader¿¡¼ mul( vector, Matrix )·Î column-majored¶ó¸é shader¿¡¼ mul( Matrix, vector ) ÇØÁØ´Ù. // HLSL float4x4 mTransformA; float4x4 mTransformB; float4 vIn; float4 vOut = mul(mul(vIn, mTransformA), mTransformB); //GLSL mat4 mTransformA; mat4 mTransformB; vec4 vIn; vec4 vOut = mTransformB * mTransformA * vIn; mulMultiplies x and y using matrix math. The inner dimension x-columns and y-rows must be equal.mul(x, y) x : [in] The x input value. If x is a vector, it treated as a row vector. y : [in] The y input value. If y is a vector, it treated as a column vector. DirectX: Effect matrix parameters and HLSL matrix variables can define whether the value is a row-major or column-major matrix; however, the DirectX APIs always treat D3DMATRIX and D3DXMATRIX as row-major. OpenGL: The m parameter points to a 4x4 matrix of single- or double-precision floating-point values stored in column-major order. That is, the matrix is stored as follows. Âü°í) https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb509628(v=vs.85).aspx http://dolphin.ivyro.net/file/directx8.0/tutorial09.html http://www.gpgstudy.com/m/forum/post/108628 Directx API´Â Ç຤ÅÍ ¹æ½Ä, ½¦ÀÌ´õ´Â Á¤ÀÇ¿¡ µû¶ó ¿º¤Åͳª Ç຤ÅͷΠó¸®ÇÑ´Ù. OpenGLÀº ¿º¤ÅͷΠó¸®ÇÑ´Ù.
row vector¶õ?
column vector¶õ?
|