·»´õ¸ùÅ° ±âÃÊ

¼ÎÀÌ´õ¸¦ Å×½ºÆ®ÇÏ°í ½ÇÇà Çغ¼¼ö ÀÖ´Â ÅøÀº RenderMonkey¿Í FX Composer°¡ ÀÖ´Ù.
¿©±â ¼³¸í¿¡ »ç¿ëµÈ ·»´õ¸ùÅ° ¹öÀüÀº 1.71ÀÌ´Ù.

È­¸é¿¡ ¹öÅؽº¿Í ÅؽºÃĸ¦ ·»´õ¸µ ÇÏ´Â ½¦ÀÌ´õ¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ´Ü°èÀûÀ¸·Î ¼³¸íÇÏ°Ú´Ù.
File ¸Þ´º¿¡¼­ Add Effect Group --> Effect Group w/DirectX Effect¸¦ ½ÇÇàÇÏ¿© ÀÌÆåÆ® ±×·ìÀ» »ý¼ºÇÑÈÄ ÀÛ¾÷À»
±³Ã¼ÇÏ´Â ¹æ¹ýÀÌ °¡Àå °£´ÜÇÏ°í ÆíÇÏ´Ù.

°£´ÜÇÑ ¹æ¹ýÀÌ ÀÖÁö¸¸ ±âÃʸ¦ ´ÙÁö±â À§ÇØ ÇѴܰ辿 ÀÍÈ÷´Â ¹æ½ÄÀ¸·Î ÁøÇàÇÏ°Ú´Ù.

1. Add Effect Group:   
Empty Effect Group  --> À̸§ ¼öÁ¤ ("MyEffect Group")

Effect Workspace ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ ÀÌÆåÆ® ±×·ìÀ» ¸¸µç´Ù.

2. Add Effect:   
DirectX --> DirectX  --> ÇÏÀ§Æ®¸® ¸ðµÎ »èÁ¦ --> À̸§ ¼öÁ¤ ("MyEffect")

"MyEffect Group" ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ ÀÌÆåÆ®¸¦ Ãß°¡ÇÑ´Ù.

3. Add Variable:
matrix - float[4X4]  --> À̸§ ¼öÁ¤("matWorldViewProj")
Variable Symantic --> WorldViewProjection

"MyEffect Group" ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ Àü¿ª º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.
"matWorldViewProj" Variable SymanticÀ» WorldViewProjectionÀ¸·Î º¯È¯ÇØ¾ß È­¸é¿¡ Á¦´ë·Î Ãâ·ÂµÈ´Ù.

4. Add Model --> Teapot.3ds

"MyEffect Group" ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ ·»´õ¸µÇÒ ¸ðµ¨À» ¼±ÅÃÇÑ´Ù.

5. Add Stream Mapping:
À̸§ ¼öÁ¤("MyMapping")

"MyMapping"¸¦ ´õºíŬ¸¯ÇÏ¿© ¼ÎÀÌ´õ¿¡ÀÇÇØ ±×·ÁÁú ÀÔ·Â µ¥ÀÌÅ͸¦ Ãß°¡ÇÑ´Ù. default·Î POSITIONÀÌ µé¾î ÀÖÀ¸´Ï
Usage - TEXCOORD, Data Type - FLOAT2¸¸ Ãß°¡ÇÑ´Ù.

Attribute NameÀº ¼ÎÀÌ´õ ¿¡µðÅÍ¿¡¼­ OpenGL ES effect¸¦ »ç¿ëÇÒ¶§´Â Àû¿ëµÇÁö¸¸,
DirectX ³ª OpenGL effect¿¡¼­´Â Á¦´ë·Î Àû¿ë ¾ÈµÇ°í ÀÖ´Ù.

 

6. Add Texture :
hex.dds Ãß°¡

»ç¿ëÇÒ ¼ÎÀÌ´õ¸¦ Ãß°¡ÇÑ´Ù.

7. Add Pass :
Â÷Àϵå Æ®¸® ³ëµå ¸ðµÎ »èÁ¦

Add Pass¸¦ Ãß°¡ÇÏ¸é ¼ÎÀÌ´õ¸¦ Äڵ带 Ãß°¡ÇÒ ¼ö ÀÖ´Ù.

8. Add Model Reference
Teapot Ŭ¸¯

"Pass 0"¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ Æо²¿¡¼­ ÂüÁ¶ÇÒ ¸ðµ¨À» ÁöÁ¤ÇÑ´Ù.

9. Add Stream Mapping Reference
MyMapping

"Pass 0"¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ Æо²¿¡¼­ ÂüÁ¶ÇÒ ¸ÊÇÎÀ» ÁöÁ¤ÇÑ´Ù.

10. Add Texture Object
Hex Ŭ¸¯

"Pass 0"¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ Æо²¿¡¼­ ÂüÁ¶ÇÒ ÅؽºÃĸ¦ ÁöÁ¤ÇÑ´Ù.

11. Add Vertex Shader
DirectX HLSL

Vertex Shader¸¦ ´õºí Ŭ¸¯ÇÏ¿© ¾Æ·¡ÀÇ Äڵ带 ÀÔ·ÂÇÑ´Ù.

//Vertex Shader

float4x4 matWorldViewProj;

 

struct VS_OUTPUT

{

   float4 Pos: POSITION;

   float2 Tex: TEXCOORD0;

};

 

 

VS_OUTPUT vs_main( float4 inPos: POSITION, float2 Tex: TEXCOORD0 )

{

   VS_OUTPUT Out;

 

   Out.Pos = mul(inPos, matWorldViewProj);  //3D --> 2D

   Out.Tex = Tex;

 

   return Out;

}

 

12. Add Pixel Shader :
DirectX HLSL

Pixel Shader¸¦ ´õºí Ŭ¸¯ÇÏ¿© ¾Æ·¡ÀÇ Äڵ带 Ãß°¡ÇÑ´Ù.

//Pixel Shader

sampler Texture0;

 

float4 ps_main(float4 inDiffuse: COLOR0, float2 inTex: TEXCOORD0)

: COLOR0

{

   return tex2D(Texture0,inTex);

}