DirectX Graphics ÇÁ·Î±×·¡¹Ö °¡ÀÌµå °íµµÀÇ ÁÖÁ¦ ÇÁ·¹ÀÓ ¹öÆÛ Æ÷±×(¾È°³:fog)ÀÇ Á¾·ù Çȼ¿ Æ÷±×(¾È°³:fog)   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
Çȼ¿ Æ÷±×(¾È°³:fog)
 
Microsoft DirectX 9.0

Çȼ¿ Æ÷±×(¾È°³:fog)


Çȼ¿ Æ÷±×(¾È°³:fog)¶ó´Â À̸§Àº, ÀåÄ¡ µå¶óÀ̹ö°¡ Çȼ¿ ´ÜÀ§·Î °è»êÇÏ´Â °Í¿¡ À¯·¡ÇÑ´Ù. À̰ÍÀº Á¤Á¡ Æ÷±×(¾È°³:fog)¿Í´Â ´Ù¸£´Ù. Á¤Á¡ Æ÷±×(¾È°³:fog)´Â, º¯È¯ ¹× Á¶¸íÀÇ °è»ê½Ã¿¡ ÆÄÀÌÇÁ¶óÀÎÀÌ °è»êÇÑ´Ù. Çȼ¿ Æ÷±×(¾È°³:fog)´Â, µå¶óÀ̹ö¿¡ µû¶ó¼­´Â, È¥ÇÕ °è»ê¿¡ Àû¿ëÇÏ´Â Æ÷±×(¾È°³:fog) °è¼ö ( °¢ Çȼ¿ÀÇ ±íÀ̸¦ »ç¿ë)¸¦ °áÁ¤Çϱâ À§Çؼ­(¶§¹®¿¡) »çÀü¿¡ °è»êµÈ ÂüÁ¶ Å×À̺íÀ» »ç¿ëÇϱâ (À§ÇØ)¶§¹®¿¡, Å×ÀÌºí Æ÷±×(¾È°³:fog)¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. Çȼ¿ Æ÷±×(¾È°³:fog)´Â,D3DFOGMODE ¿­°ÅÇüÀÇ ¸â¹ö°¡ °¡¸®Å°´Â Æ÷±×(¾È°³:fog) °ø½ÄÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇØ Àû¿ëÇÑ´Ù. ÀÌ·¯ÇÑ °ø½ÄÀÇ Ã³¸®Àº µå¶óÀ̹ö °íÀ¯ÇÏ´Ù. µå¶óÀ̹ö°¡ º¹ÀâÇÑ Æ÷±×(¾È°³:fog) °ø½ÄÀ» Áö¿ø Çϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â, º¸´Ù ´Ü¼øÇÑ °ø½ÄÀ» »ç¿ëÇÏ´Â °Í.

½ÃÁ¡À¸·ÎºÎÅÍÀÇ »ó´ë ±íÀÌ¿Í Z º£À̽ºÀÇ ±íÀÌ

±íÀÌ ¹öÆÛ³»¿¡¼­ÀÇ z °ªÀÇ ºÒ±ÕµîÀÎ °ÝÂ÷¿¡ ÀÇÇØ »ý±â´Â, Æ÷±×(¾È°³:fog)ÀÇ ºÎÀÚ¿¬½º·¯¿î ±×·¡ÇȽº È¿°ú¸¦ ¾ïÁ¦Çϱâ À§Çؼ­(¶§¹®¿¡), ´ëºÎºÐÀÇ Çϵå¿þ¾î ÀåÄ¡¿¡¼­´Â, Çȼ¿ Æ÷±×(¾È°³:fog)¿¡ z º£À̽º ±íÀ̰ªÀº ¾Æ´Ï°í ½ÃÁ¡À¸·ÎºÎÅÍÀÇ »ó´ë ±íÀ̸¦ »ç¿ëÇÑ´Ù. ½ÃÁ¡À¸·ÎºÎÅÍÀÇ »ó´ë ±íÀ̶õ, º»ÁúÀûÀ¸·Î´Â µ¿Â÷ ÁÂÇ¥ ¼¼Æ®·ÎºÎÅÍÀÇ w ¿ä¼ÒÀÌ´Ù. Microsoft® Direct3D® ´Â, ÀåÄ¡ °ø°£ ÁÂÇ¥·ÎºÎÅÍ RHW ¿ä¼ÒÀÇ ¿ª¼ö¸¦ ÃëµæÇØ ÁøÁ¤ÇÑ w ¸¦ Àç»ý¼ºÇÑ´Ù. ÀåÄ¡°¡ ½ÃÁ¡À¸·ÎºÎÅÍÀÇ »ó´ë Æ÷±×(¾È°³:fog)¸¦ Áö¿ø Çϰí ÀÖ´Â °æ¿ì,IDirect3DDevice9::GetDeviceCaps ¸Þ¼­µå¸¦ È£ÃâÇϸé, ±× ÀåÄ¡´Â D3DCAPS9 ±¸Á¶Ã¼ÀÇ RasterCaps ¸â¹ö¿¡ D3DPRASTERCAPS_WFOG Ç÷¡±×¸¦ ¼³Á¤ÇÑ´Ù. ·¹ÆÛ·±½º ·¡½ºÅͶóÀÌÀú¸¦ Á¦¿ÜÇØ, ¼ÒÇÁÆ®¿þ¾î ÀåÄ¡´Â Ç×»ó z ¸¦ »ç¿ëÇØ Çȼ¿ Æ÷±×(¾È°³:fog) ÀÌÆåÆ®¸¦ °è»êÇÑ´Ù.

½ÃÁ¡°úÀÇ »ó´ë Æ÷±×(¾È°³:fog)°¡ Áö¿ø µÇ°í ÀÖÀ» ¶§, ¼³Á¤µÈ Åõ¿µ Çà·Ä·Î ÀåÄ¡ °ø°£ÀÇ w °ª¿¡ ´ëÀÀÇÏ´Â, ¿ùµå °ø°£ÀÇ z °ªÀ» »ý¼ºÇÏ´Â °æ¿ì, ½Ã½ºÅÛÀº z º£À̽º ±íÀ̺¸´Ù ½ÃÁ¡À¸·ÎºÎÅÍÀÇ »ó´ë ±íÀ̸¦ ¿ì¼±ÇØ ÀÚµ¿ÀûÀ¸·Î »ç¿ëÇÑ´Ù. Åõ¿µ Çà·ÄÀ» ¼³Á¤ÇÏ·Á¸é ,IDirect3DDevice9::SetTransform ¸Þ¼­µå¸¦ È£ÃâÇØ,D3DTS_PROJECTION °ªÀ» »ç¿ëÇØ, ¸ñÀûÀÇ Çà·ÄÀ» ³ªÅ¸³»´Â D3DMATRIX ±¸Á¶Ã¼¸¦ °Ç³×ÁØ´Ù. Åõ¿µ Çà·ÄÀÌ ÀÌ ¿ä°Ç¿¡ ´ëÀÀÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, Æ÷±×(¾È°³:fog) ÀÌÆåÆ®´Â ¿Ã¹Ù¸£°Ô Àû¿ëµÇÁö ¾Ê´Â´Ù. ´ëÀÀÇϰí ÀÖ´Â Çà·ÄÀÇ »ý¼ºÀÇ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, ¡¸W ¹öÆÛ¿¡ À¯È¿ÇÑ Åõ¿µ Çà·Ä¡¹À» ÂüÁ¶ÇÒ°Í. ¡¸Åõ¿µ º¯È¯À̶õ¡¹À¸·Î ¼³¸íÇÏ´Â ÆÛ½ºÆåƼºê Åõ¿µ Çà·ÄÀº, ÀûÀýÇÑ Åõ¿µ Çà·ÄÀ» »ý¼ºÇÑ´Ù.

Direct3D ¿¡¼­´Â, ÇöÀç ¼³Á¤µÇ¾î ÀÖ´Â Åõ¿µ Çà·ÄÀ» »ç¿ëÇØ w º£À̽º ±íÀÌÀÇ °è»êÀ» ½ÇÇàÇÑ´Ù. µû¶ó¼­, ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î Direct3D º¯È¯ ÆÄÀÌÇÁ¶óÀÎÀ» »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¿©µµ, ¸ñÀûÀÇ w º£À̽º ±â´ÉÀ» ¾ò¾î¿À±â À§ÇØ ÀûÀýÇÑ Åõ¿µ Çà·ÄÀ» ¼³Á¤ÇØ µÑ Çʿ䰡 ÀÖ´Ù.

Direct3D ´Â Åõ¿µ Çà·ÄÀÇ Á¦ 4 ¿­À» Á¶»çÇÑ´Ù. °è¼ö°¡ [0,0,0,1] (¾ÆÇÉ Åõ¿µ)ÀÇ °æ¿ì¿¡´Â, ½Ã½ºÅÛÀº z º£À̽ºÀÇ ±íÀ̰ªÀ» Æ÷±×(¾È°³:fog)¿¡ »ç¿ëÇÑ´Ù. ÀÌ °æ¿ì, ÀåÄ¡ °ø°£ÀÇ ¼±Çü Æ÷±×(¾È°³:fog) ÀÌÆåÆ®ÀÇ ½ÃÀÛ °Å¸® ¹× Á¾·á °Å¸®¸¦ ÁöÁ¤ÇÒ Çʿ䵵 ÀÖ´Ù. ÀÌ ¹üÀ§´Â, »ç¿ëÀÚ¿¡ °¡Àå °¡±î¿î Æ÷ÀÎÆ®¸¦ 0.0 À¸·Î ÇØ, °¡Àå ¸Õ Æ÷ÀÎÆ®¸¦ 1.0 À¸·Î ÇÑ ¹üÀ§ÀÌ´Ù.

Çȼ¿ Æ÷±×(¾È°³:fog)ÀÇ »ç¿ë¹ý

¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î Çȼ¿ Æ÷±×(¾È°³:fog)¸¦ À¯È¿ÇÏ°Ô ÇÏ·Á¸é , ´ÙÀ½ÀÇ ¼ø¼­¸¦ ½ÇÇàÇÑ´Ù.

  1. D3DRS_FOGENABLE ·»´õ¸µ ½ºÅ×ÀÌÆ®¸¦ TRUE ·Î ¼³Á¤ÇØ, Æ÷±×(¾È°³:fog) È¥ÇÕÀ» À¯È¿ÇÏ°Ô ÇÑ´Ù.
  2. D3DRS_FOGCOLOR ·»´õ¸µ ½ºÅ×ÀÌÆ®·Î, ¸ñÀûÀÇ Æ÷±×(¾È°³:fog)»öÀ» ¼³Á¤ÇÑ´Ù.
  3. D3DRS_FOGTABLEMODE ·»´õ¸µ ½ºÅ×ÀÌÆ®¸¦ D3DFOGMODE ¿­°ÅÇüÀÇ ´ëÀÀÇÏ´Â ¸â¹ö·Î ¼³Á¤ÇØ, »ç¿ëÇÏ´Â Æ÷±×(¾È°³:fog) °ø½ÄÀ» ¼±ÅÃÇÑ´Ù.
  4. ¼±ÅÃÇÑ Æ÷±×(¾È°³:fog) ¸ðµå¿¡ ÇÊ¿äÇÑ Æ÷±×(¾È°³:fog) ÆÄ¶ó¹ÌÅ͸¦, °ü·ÃÇÏ´Â ·»´õ¸µ ½ºÅ×ÀÌÆ®·Î ¼³Á¤ÇÑ´Ù. ¼±Çü Æ÷±×(¾È°³:fog)ÀÇ ½ÃÀÛ °Å¸®¿Í Á¾·á °Å¸®, Áö¼ö Æ÷±×(¾È°³:fog)ÀÇ Æ÷±×(¾È°³:fog) ¹Ðµµµµ Æ÷ÇÔÇÑ´Ù.

´ÙÀ½ »ùÇà ÄÚµå´Â, ÀÌ·¯ÇÑ ¼ø¼­¸¦ ³ªÅ¸³»°í ÀÖ´Ù.

// For brevity, error values in this example are not checked 
//   after each call.A real-world application should check 
//   these values appropriately.
//
// For the purposes of this example, g_pDevice is a valid
//   pointer to an IDirect3DDevice9 interface.
void SetupPixelFog(DWORD Color, DWORD Mode)
{
    float Start   = 0.5f;    // For linear mode
    float End     = 0.8f;
    float Density = 0.66f;   // For exponential modes
 
    // Enable fog blending.
    g_pDevice->SetRenderState(D3DRS_FOGENABLE, TRUE);
 
    // Set the fog color.
    g_pDevice->SetRenderState(D3DRS_FOGCOLOR, Color);
    
    // Set fog parameters.
    if( Mode == D3DFOG_LINEAR )
    {
        g_pDevice->SetRenderState(D3DRS_FOGTABLEMODE, Mode);
        g_pDevice->SetRenderState(D3DRS_FOGSTART, *(DWORD *)(&Start));
        g_pDevice->SetRenderState(D3DRS_FOGEND,   *(DWORD *)(&End));
    }
    else
    {
        g_pDevice->SetRenderState(D3DRS_FOGTABLEMODE, Mode);
        g_pDevice->SetRenderState(D3DRS_FOGDENSITY, *(DWORD *)(&Density));
    }

IDirect3DDevice9::SetRenderState ¸Þ¼­µå´Â, Á¦ 2 ÆÄ¶ó¹ÌÅÍ¿¡ DWORD °ª¸¸À» ¹ÞÁö¸¸, ºÎµ¿ ¼Ò¼öÁ¡ÀÇ Æ÷±×(¾È°³:fog) ÆÄ¶ó¹ÌÅͰ¡ ¿ä±¸µÇ´Â Àϵµ ÀÖ´Ù. À§¿¡ÀÇ¿¹¿¡¼­´Â ºÎµ¿ ¼Ò¼öÁ¡ÀÇ °ªÀ» IDirect3DDevice9::SetRenderState ¿¡ °Ç³×ÁÖ±â À§Çؼ­(¶§¹®¿¡), µ¥ÀÌÅ͸¦ ÆòÇàÀ̵¿ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ºÎµ¿ ¼Ò¼öÁ¡ º¯¼öÀÇ ÁÖ¼Ò¸¦ DWORD Æ÷ÀÎÅÍ¿¡ ij½ºÆ® ÇØ, ´ÙÀ½¿¡ ±×°ÍÀ» ÂüÁ¶Çϰí ÀÖ´Ù.



© 2002 Microsoft Corporation. All rights reserved.
¡èTOP