Software 3D Rendering Study
 FrontPage|FindPage|TitleIndex|RecentChanges|UserPreferences E D R S P I M H RSS

FrontPageSimpleModelEditorSocket Programming › Software 3D Rendering Study
Contents:
1 °³¿ä
2 °ü·Ã¼­Àû
3 Áֿ丵ũ
4 Rendering Pipeline
5 Implementation
5.1 View Transform
5.2 Projection Transform
6 ´Ù¿î·Îµå
7 °ü·Ã¸µÅ©


1 °³¿ä #


°¡°øÇÒ ¼º´É ;) ÀÇ 3D °¡¼Ó±â ½Ã´ë¿¡ ¿Ø Software Rendering...? ´Ü¼øÈ÷ »ý°¢Çϸé ÇÊ¿ä¾ø´Â °ÍÀÏÁöµµ ¸ð¸¥´Ù. ±×·¯³ª 3D °¡¼Ó±â¶ó°í ÇØµµ ÇÙ½É Ä¨ÀÎ GPU ÀÇ Rendering Algorithm Àº Software Rendering °ú ¿ª½Ã µ¿ÀÏ ±¸Á¶·Î µÇ¾î ÀÖ´Ù. Áï, Rendering Algorithm À» Çϵå¿þ¾î¿¡ ¸Â°Ô ¿Å°Ü³õÀº °ÍÀÏ»ÓÀÌÁö º°·Î Â÷À̰¡ ¾ø´Ù. ±×¸®°í Çϵå¿þ¾î Ư¡»ó Algorithm º¯°æÀÌ ºÒ°¡´ÉÇϱ⠶§¹®¿¡ Çϵå¿þ¾î °¡¼ÓÀ» ÀÌ¿ëÇÏ´Â ¸ðµç °ÔÀÓµéÀÌ ºñ½ÁÇÑ ¿µ»óÀ» º¸¿© ÁÖ°í ÀÖ´Ù. ±×·¡¼­ Vertex Shader ³ª Pixel Shader °¡ µîÀåÇÏ°Ô µÈ ÀÌÀ¯ÀÏÁö ¸ð¸¥´Ù.

¾î°µç Software Rendering À» °øºÎÇÏ´Â ÀÌÀ¯´Â 3D °¡¼Ó±âÀÇ ±¸Á¶¸¦ ÀÌÇØÇÏ°í °ÔÀÓ¿¡¼­ 100% ÀÇ °¡°øÇÒ ¼º´ÉÀ» ²ø¾î³»´Â °ÍÀÌ ¸ñÀûÀÌ´Ù. :))

2 °ü·Ã¼­Àû #


  • 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö & ÄÄÇ»ÅÍ ±×·¡ÇÈÀ» À§ÇÑ ¼öÇÐ
    • Eric Lengyel Àú, ·ù±¤ ¿ª, Á¤º¸¹®È­»ç
  • OPENGL À» ÀÌ¿ëÇÑ ÄÄÇ»ÅÍ ±×·¡ÇȽº Á¦2ÆÇ
    • EDWARD ANGEL Àú, ±¸ÀÚ¿µ ¿ª, ¿µÇÑÃâÆÇ»ç
  • [http]Real-Time Rendering 2ÆÇ
    • Tomas Akenine-Moller.Eric Haines °øÀú, ½Åº´¼®.¿À°æ¼ö °ø¿ª, Á¤º¸¹®È­»ç
  • Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization
    • Andre Lamothe Àú, SAMS

3 Áֿ丵ũ #


4 Rendering Pipeline #


SoftwareRender/SoftPipeline.gif
³ª¸§´ë·Î °øºÎÇÑ ³»¿ëÀ» °£·«ÇÏ°Ô ±×¸²À¸·Î ±×·Áº» °ÍÀ¸·Î OpenGL À̳ª DirectX ¿¡ ºñÇϸé Å͹«´Ï ¾øÀÌ ºÎÁ·ÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ¾ÆÁ÷ ¿Ï¼ºµÈ °ÍÀº ¾Æ´ÏÁö¸¸ ÇÊ¿äÇÑ ºÎºÐ¸¸ ³ª¿­µÇ¾î ÀÖÀ¸¸ç ¾ÕÀ¸·Î °è¼Ó º¸¿ÏÇØ¾ß ÇÒ ºÎºÐÀÌ ¸¹´Ù.

Á»´õ ÀÚ¼¼ÇÑ Rendering Pipeline ¿¡ ´ëÇÑ ±×¸²Àº ¾Æ·¡ÀÇ ¸µÅ©¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ³Ê¹« º¹ÀâÇØ¼­... X-(

5 Implementation #


5.1 View Transform #


 1  void LookAt( CVector4 & vTarget, CVector4 & vCamera, CVector4 & vUp )
 2  {
 3      CVector4 vR, vU, vD;
 4      CMatrix4 temp;
 5
 6      vUp.Normalize();
 7
 8      vD = vTarget - vCamera;
 9      vD.Normalize();
10
11      vR = vUp ^ vD;
12      vR.Normalize();
13
14      vU = vD ^ vR;
15
16      temp.Initialize(
17          vR.x, vU.x, vD.x, 0.0f,
18          vR.y, vU.y, vD.y, 0.0f,
19          vR.z, vU.z, vD.z, 0.0f,
20          -( vCamera * vR ), -( vCamera * vU ), -( vCamera * vD ), 1.0f
21          );
22
23      m_CTMatrix *= temp;
24  }

5.2 Projection Transform #


 1  void PerspectiveFOV( float fFov, float fAspect, float fNearZ, float fFarZ )
 2  {
 3      CMatrix4 temp;
 4
 5      float w, h;
 6      float d;
 7
 8      w = 1.0f / tanf( fFov * 0.5f );
 9      h = 1.0f / ( tanf( fFov * 0.5f ) * fAspect );
10
11      d = fFarZ / ( fFarZ - fNearZ );
12
13      temp.Initialize(
14          w,    0.0f, 0.0f, 0.0f,
15          0.0f, h,    0.0f, 0.0f,
16          0.0f, 0.0f, d,    1.0f,
17          0.0f, 0.0f, -( d * fNearZ ), 0.0f
18          );
19
20      m_CTMatrix *= temp;
21  }


6 ´Ù¿î·Îµå #



7 °ü·Ã¸µÅ© #




SubCategoryGame

EditText|FindPage|DeletePage|LikePages| Valid XHTML 1.0! Valid CSS! powered by MoniWiki