º¹¼öÀÇ ·»´õ¸µ Ÿ°Ù
¸¹Àº ó¸®Àº,º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀÇ Á¦¾àÀ» ¿ÏÈÇÑ ±â´ÉÀ» Áö¿ø Çϰí ÀÖ´Ù. °¡Àå ¿Ïȵǰí ÀÖ´Â °ÍÀº, µû·Î µû·Î »ý¼º °¡´ÉÇÑ º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀ» °¡Áú ¼ö°¡ ÀÖ´Â Á¡ÀÌ´Ù. ÀÌ·¯ÇÑ ·»´õ¸µ Ÿ°ÙÀº, ³ÐÀÌ´Â °°Áö ¾ÊÀ¸¸é ¾È µÇÁö¸¸, Æ÷¸ËÀÌ °°Àº ÇÊ¿ä´Â ¾ø´Ù. ÆÄÀÌÇÁ¶óÀÎÀº,IDirect3DDevice9::SetRenderTarget ¸¦ »ç¿ëÇØ ¼³Á¤ÇÏ´Â ´ÜÀÏÀÇ ·»´õ¸µ Ÿ°ÙÀ» Áö¿ø Çϰí ÀÖ´Ù. À̰ÍÀÌ È®ÀåµÇ¾î, ÀåÄ¡»ó¿¡ µ¿½Ã¿¡ º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀ» ¼³Á¤ÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. »õ·Î¿î ´É·Â Ç÷¡±×·Î ÀÌ ´É·ÂÀ» Ç¥ÇöÇÑ´Ù.
º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀ¸·Î´Â, ´ÙÀ½ÀÇ Á¦ÇÑÀÌ ÀÖ´Ù.
- ÀϺÎÀÇ Ã³¸®¿¡¼´Â, º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀÇ ¸ðµç Ç¥¸éÀÌ, Æ÷¸ËÀº ´Þ¶óµµ, ºñÆ® ±íÀÌ´Â °°Áö ¾ÊÀ¸¸é ¾È µÇ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀÌ ¾ø´Â 󸮿¡¼´Â, ´É·Â Ç÷¡±× D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS ¸¦ ¼³Á¤ÇØ À̰ÍÀ» ³ªÅ¸³½´Ù.
´É·Â Ç÷¡±× D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS ¸¦ ¼³Á¤ÇßÀ» °æ¿ì, Æ÷¸Ë ŸÀÔ ¶Ç´Â ºñÆ® ±íÀÌ¿¡ °ü°è¾øÀÌ, ÀåÄ¡´Â ¸ðµç ¹Í½º Æ÷¸ËÀ» Áö¿ø ÇÒ ¼ö ÀÖ´Ù. ´É·Â Ç÷¡±× D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS ¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â °æ¿ì, ÀåÄ¡´Â 16 ºñÆ®º¸´Ù À§¿¡ÀÇ °°Àº ºñÆ® ±íÀ̸¦ Æ÷ÇÔÇÑ Ç¥¸é¿¡ ´ëÇØ¼, ¹Í½º Æ÷¸Ë ŸÀÔÀ» Áö¿ø ÇÒ ¼ö ÀÖ´Ù. 16 ºñÆ® ±íÀÌ Ç¥¸é¿¡ ´ëÇÑ ´Ù¸¥ Æ÷¸Ë ŸÀÔÀÇ È¥Àç´Â ¹ÌÁ¤µµ¸®ÀÌ´Ù.
- º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀÇ ¸ðµç Ç¥¸éÀº, Æø°ú ³ôÀ̰¡ °°Áö ¾ÊÀ¸¸é ¾È µÈ´Ù.
- ÀϺÎÀÇ Ã³¸®¿¡¼´Â, Z Å×½ºÆ® ¹× ½ºÅÙ½Ç Å×½ºÆ® À̿ܿ¡, Çȼ¿ ¼ÎÀÌ´õ ÈÄÀÇ Ã³¸®¸¦ ½ÇÇàÇÒ ¼ö ¾ø´Ù. Áï, µð´õ ¸µ, ¾ËÆÄ Å×½ºÆ®, Æ÷±×(¾È°³:fog), ºí·»µå, ·¡½ºÅÍ Ã³¸®, ¸¶½ºÅ·À» ½ÇÇàÇÒ ¼ö ¾ø´Ù. Çȼ¿ ¼ÎÀÌ´õ ÈÄÀÇ Ã³¸®¸¦ Áö¿ø ÇÒ ¼ö ÀÖ´Â ÀåÄ¡´Â, ´É·Â ºñÆ®¸¦ D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING ·Î ¼³Á¤ÇÑ´Ù. ´É·Â Ç÷¡±× D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING ¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â °æ¿ì, USAGE_QUERY_POSTPIXELSHADER_BLENDING ¸¦ ÁöÁ¤ÇÑ Æ¯Á¤ÀÇ Ç¥¸éÀÇ IDirect3D9::CheckDeviceFormat °¡ ¹«¾ùÀ¸·Î ÀÖÀ»±î¿¡ °ü°è¾øÀÌ, ÀåÄ¡´Â ¸ðµç Çȼ¿ ¼ÎÀÌ´õ ÈÄ È¥ÇÕ Ã³¸®¸¦ ¿ÀÇÁ·Î ÇÑ´Ù°í ¿¹ÃøµÈ´Ù.
´É·Â Ç÷¡±× D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING ¸¦ ¼³Á¤ÇÏ´Â °æ¿ì´Â, ¿ì¼± ƯÁ¤ÀÇ Ç¥¸é Æ÷¸Ë¿¡ ´ëÇØ, USAGE_QUERY_POSTPIXELSHADER_BLENDING ¸¦ ÁöÁ¤ÇÑ IDirect3D9::CheckDeviceFormat ÀÇ °á°ú¸¦ Á¶»çÇÑ´Ù. FALSE ÀÇ °æ¿ì, ±× ƯÁ¤ÀÇ Ç¥¸é Æ÷¸Ë¿¡ ´ëÇØ¼ Çȼ¿ ¼ÎÀÌ´õ ÈÄ È¥ÇÕ Ã³¸®´Â ÀÌ¿ëÇÒ ¼ö ¾ø´Ù. TRUE ÀÇ °æ¿ì, ÀåÄ¡´Â, ´ÙÀ½°ú °°ÀÌ ¸ðµç µ¿½Ã ·»´õ¸µ Ÿ°ÙÀ¸·Î °°Àº ½ºÅ×ÀÌÆ®¸¦ Àû¿ë ÇÏ¸é ¿¹ÃøµÈ´Ù.
- ¾ËÆÄ ºí·»µå: oCi ³»ÀÇ »ö°ªÀ» i ¹øÂ°ÀÇ ·»´õ¸µ Ÿ°Ù°ú ºí·»µå ÇÑ´Ù.
- ¾ËÆÄ Å×½ºÆ®: oC0 ¶ó´Â ºñ±³¸¦ ÇÑ´Ù. ºñ±³°¡ ½ÇÆÐÇßÀ» °æ¿ì, ¸ðµç ·»´õ¸µ Ÿ°ÙÀÇ Çȼ¿ Å×½ºÆ®°¡ ÁßÁöµÈ´Ù.
- Æ÷±×(¾È°³:fog): ·»´õ¸µ Ÿ°Ù 0 ¿¡ Æ÷±×(¾È°³:fog)¸¦ Àû¿ëÇÑ´Ù. ±× ¿ÜÀÇ ·»´õ¸µ Ÿ°ÙÀº ¹ÌÁ¤µµ¸®ÀÌ´Ù. 󸮿¡¼´Â, °°Àº ½ºÅ×ÀÌÆ®¸¦ »ç¿ëÇØ ¸ðµç ·»´õ¸µ Ÿ°ÙÀ¸·Î Æ÷±×(¾È°³:fog)¸¦ Àû¿ëÇÏ´Â ¼±ÅÃÀ» ÇÒ ¼ö ÀÖ´Ù.
- µð´õ ¸µ: ¹ÌÁ¤µµ¸®.
- anti-aliasing´Â Áö¿ø Çϰí ÀÖÁö ¾Ê´Ù.
- 󸮿¡ µû¶ó¼´Â, Ãâ·Â ¾²±â ¸¶½ºÅ© (D3DRS_COLORWRITEENABLE)¸¦ Àû¿ëÇÏÁö ¾Ê´Â °æ¿ì°¡ ÀÖ´Ù. À̰ÍÀ» Àû¿ëÇÒ ¼ö Àִ ó¸®Àº, °³º°ÀÇ »ö¾²±â ¸¶½ºÅ©¸¦ °¡Áö°í ÀÖ´Ù. À̰ÍÀº, »õ·Î¿î ´É·Â ºñÆ®·Î ³ªÅ¸³½´Ù. »ç¿ë °¡´ÉÇÑ °³º°ÀÇ »ö¾²±â ¸¶½ºÅ©ÀÇ ¼ö´Â, ÀåÄ¡·Î »ç¿ë °¡´ÉÇÑ ¿ä¼ÒÀÇ ÃÖ´ë¼ö·Î µ¿ÀÏÇÏ´Ù.
- IDirect3DDevice9::Clear ´Â, º¹¼öÀÇ ·»´õ¸µ Ÿ°ÙÀÇ ¸ðµç Ç¥¸éÀ» Ŭ¸®¾î ÇÑ´Ù.
ÁÖ °ú°Å¿¡ À־Â, ÀÌ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º (API)°¡ ½ºÅÙ½ÇÀÇ ¼³Á¤¿¡µµ »ç¿ëµÇ°í ÀÖ¾ú´Ù.
IDirect3DDevice9::SetRenderTarget ¹×
IDirect3DDevice9::SetDepthStencilSurface ·Î ¼³¸íÇϰí ÀÖµµ·Ï(µíÀÌ), Microsoft® DirectX® 9.0 ¿¡¼´Â, ÀÌ API ´Â ºÐÇҵǰí ÀÖ´Ù.
»õ·Î¿î Çϵå¿þ¾î ´É·Â
D3DCAPS9.NumSimultaneousRTs
// The value is 1 for all hardware except those that
// can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it