±×·¡ÇȽº¸¦ À§ÇÑ C¶õ °ú¿¬ ¹«¾ùÀϱî?´ëüÀûÀ¸·Î, ¿À´Ã³¯ÀÇ ¼ÒÇÁÆ®¿þ¾î´Â "C"³ª "C++"·Î ºÒ·ÁÁö´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î °³¹ßµÈ´Ù.
ÇÏÁö¸¸ º¹ÀâÇÑ ½Ã°¢Àû È¿°ú¸¦ ¾ò°íÀÚ ÇÒ ¶§ ¿©ÀüÈ÷ °³¹ßÀÚ´Â »ó´çÈ÷ Á¦ÇÑÀûÀÎ ¾ð¾îÀÎ ¾î¼Àºí¸® ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö¹Û¿¡ ¾ø´Ù.
Cg ÇÁ·Î±×·¡¹Ö ¾ð¾î — ±×·¡ÇȽº Àü¿ë C ¾ð¾î — ´Â °³¹ßÀÚ¿¡°Ô, µ¥½ºÅ©Å¾¿¡¼ ½Ç½Ã°£ÀÇ °íÈÁú ±×·¡ÇȽº¸¦ °æÇèÇÒ ¼ö ÀÖ°Ô ÇØÁִ Ư¼öÈ¿°ú
ÇÁ·Î±×·¡¹ÖÀ» ½±°í ºü¸£°Ô ÇÒ ¼ö ÀÖµµ·Ï ¹æÇâÀ» Á¦½ÃÇÑ´Ù.
ÇÁ·Î±×·¥Àº ´õ ÀÌ»ó ±×·¡ÇȽº Çϵå¿þ¾î¿¡ Á÷Á¢ÀûÀ¸·Î ÄÚµùµÉ ÇÊ¿ä°¡ ¾ø°Ô µÇ¾ú°í, ¶Ù¾î³ ½Ç½Ã°£ ½¦ÀÌ´õ(shaders)¿Í DiretX¢ç,
OpenGL¢ç ȯ°æÀ» À§ÇÑ ½Ã°¢Àû È¿°úÀÇ ¹ßÀüÀº °¡¼ÓÈ µÇ¾î°¡°í ÀÖ´Ù.
CgÀÇ ÀåÁ¡
Cg´Â ±×·¡ÇȽº È¿°úÀÇ °³¹ßÀ» ¿ëÀÌÇÏ°Ô ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ±Ã±ØÀûÀ¸·Î´Â °í°´À» À§ÇÑ °íÈ¿À²ÀûÀÌ°í Àå±â°£ °¡Ä¡¸¦ À¯ÁöÇÒ ¼ö ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ»
Á¦°øÇϱ⠶§¹®¿¡, °í±Þ ±×·¡ÇȽº ¾ð¾î·Î¼ »ó´çÇÑ È£¼Ò·ÂÀ» Áö´Ï°í ÀÖ´Ù.
°Ô´Ù°¡ Cg¸¦ »ç¿ëÇÔ¿¡ µû¶ó, ÇÁ·Î±×·¡¸Ó´Â »ý»ê¼ºÀ» º¸´Ù Áõ°¡½ÃÅ°°í Çö¶õÇÑ ±×·¡ÇÈÀ¸·Î ÀÌ·ç¾îÁø °ÔÀÓÀÇ °³¹ß ½Ã°£À» ´ÜÃàÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.
(Cg ½¦ÀÌ´õ·Î ³ªÅ¸³¾ ¼ö ÀÖ´Â È¿°ú¸¦ º¸·Á¸é À̹ÌÁö¸¦ Ŭ¸¯Çϼ¼¿ä.)
- Æø³ÐÀº ÁöÁö: ÀÌ¹Ì ¼ö¹é¸¸ÀÇ °³¹ßÀÚµéÀÌ Cg ¾ð¾î¿¡ ´ëÇÑ Á¤º¸¸¦ °øÀ¯ÇÏ°í ÀÖÀ¸¸ç Cg ½¦ÀÌ´õ¸¦ ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖµµ·Ï
±³À°¹Þ¾Ò´Ù. Ç渮¿ìµåÀÇ ½Ã°¢ È¿°ú °ü·Ã »ê¾÷¿¡ ÅõÀÚÇÏ°í ÀÖ´Â ¿ÀÇÁ¶óÀÎ ·»´õ¸µ ȸ»çµéÀº NVIDIAÀÇ Cg ÄÄÆÄÀÏ·¯¸¦ ÇâÈÄ ÀÚ»çÀÇ Á¦Ç°¿¡
ÅëÇÕÇÒ °ÍÀ̶ó ÇÑ´Ù. ÇÑÆí DCC ¾ÖÇø®ÄÉÀ̼ǵéÀº µðÁöÅÐ ¾ÆƼ½ºÆ®ÀÇ ÀÛ¾÷ ¿µ¿ª¿¡ Cg¸¦ Æ÷ÇÔ½Ãų °ÍÀ̸ç, ÇÁ·Î±×·¡¹Ö ´É·ÂÀ» °®ÃßÁö
¸øÇÑ »ç¶÷µé¿¡°Ôµµ ½¦ÀÌ´õ ±â¼úÀÌ º¸´Ù Ä£¼÷ÇÏ°í ½±°Ô ´Ù°¡°¥ ¼ö ÀÖ°Ô²û À¯µµÇÒ °ÍÀÌ´Ù.
- ³ôÀº È¿À²¼º°ú ¿µ±¸¼ºÀ» °®Ãá, °í°´À» À§ÇÑ ¾ÖÇø®ÄÉÀ̼Ç: Cg ½¦ÀÌ´õ¸¦ »ç¿ëÇÏ´Â °ÔÀÓÀº ¼ÒÇÁÆ®¿þ¾î¸¦ ¸®ÄÄÆÄÀϸµÇϰųª
¾÷±×·¹À̵åÇÏÁö ¾Ê°í¼µµ, Çϵå¿þ¾î¸¦ È°¿ëÇÏ°í »õ·Î¿î GPUÀÇ Æ¯Â¡À» »ì¸®´Â ÀÌÁ¡À» ¾òÀ» ¼ö ÀÖ´Ù. µû¶ó¼ °ÔÀÓ ¼ÒÇÁÆ®¿þ¾î´Â Ź¿ùÇÑ
½ÇÇà´É·ÂÀ» °®Ãß°Ô µÇ¸ç, Çϵå¿þ¾îÀÇ ¾÷±×·¹À̵尡 °ð ¼ÒÇÁÆ®¿þ¾îÀÇ ¼º´ÉÇâ»óÀ¸·Î À̾îÁø´Ù.
- ÇÁ·Î±×·¡¸ÓÀÇ »ý»ê¼º Áõ°¡: Àå±âÀûÀ¸·Î º¼ ¶§, Cg¿Í °°Àº °í±Þ ¾ð¾îÀÇ »ç¿ëÀº ±³À°À» À§ÇØ ¼Ò¿äµÇ´Â ½Ã°£À» ´ÜÃà½ÃŲ´Ù.
ÇÁ·Î±×·¡¸Ó´Â ´õ ÀÌ»ó ¸ðµç Ç÷§Æû°ú API¿¡ ´ëÇÑ Áö½ÄÀ» °®Ãß±â À§ÇØ ¾Ö¾²Áö ¾Ê¾Æµµ µÈ´Ù.
- ´õ ¸¹¾ÆÁø È¿°ú, ´õ ª¾ÆÁø °³¹ß ½Ã°£: Cg´Â °³¹ßÀÚ·Î ÇÏ¿©±Ý ¾öû³ ¼öÀÇ ½¦ÀÌ´õ¸¦ ºü¸£°Ô °³¹ßÇÏ°í ÅëÇÕÇÒ ¼ö ÀÖ°Ô²û
ÇØÁØ´Ù. °Ô´Ù°¡ Çѹø °³¹ßµÈ È¿°ú(effects)´Â ´Ù¾çÇÑ API¿Í Ç÷§Æû(PC¿¡¸¸ ÇÑÁ¤µÇÁö´Â ¾ÊÀ½)¿¡ ¸Â°Ô ÄÄÆÄÀ쵃 ¼ö ÀÖ´Ù. ÀÌ´Â °ð
°ÔÀÓ °³¹ßÀÚÀÇ ¿µ¿ªÀÌ ¸ðµç ½ÃÀåÀ¸·Î È®ÀåµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.
Cg¸¦ ÅëÇØ ½Ç½Ã°£ ·»´õ¸µ ·¹º§°ú ¿µÈ ±×·¡ÇȽº ·¹º§ÀÇ ¼ö·ÅÀÌ °¡¼Óȵǰí ÀÖ´Ù:
NVIDIAÀÇ Cg ÄÄÆÄÀÏ·¯¿Í ÅøŶ
¿À´Ã³¯ÀÇ
½Ç½Ã°£ ±×·¡ÇȽº °³¹ßÀÚ¿¡°Ô º¸´Ù ¸¹Àº ¼±ÅñÇÀ» ÁÖ±â À§ÇØ, NVIDIA´Â ÇÁ·Î±×·¡¹ÖÇϱ⿡ ¼ö¿ùÇÑ °í±Þ ¾ð¾î ±¸¹®À» Æ÷ÇÔÇÑ ±×·¡ÇȽº ÇÁ·Î±×·¡¹Ö
¿É¼ÇÀ» È®ÀåÇÏ¿´´Ù. NVIDIAÀÇ Cg ÄÄÆÄÀÏ·¯¿Í ÅøŶÀº °³¹ßÀÚ·Î ÇÏ¿©±Ý ³»ÀçµÈ ÃÖÀûȸ¦ ²ø¾î ¿Ã¸®°í ÇÁ·Î±×·¡¹Ö È¿À²¼ºÀ» º¸´Ù Çâ»ó½Ãų ¼ö ÀÖ°Ô Çϸç,
Çö¶õÇÑ ½Ã°¢ È¿°ú¸¦ À§ÇÑ ½Ç½Ã°£ Çȼ¿ ±×¸®°í ¹öÅؽº(vertex) ½¦ÀÌ´õ¸¦ ºü¸¥ ½Ã°£ ³»¿¡ °³¹ßÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
»õ·Î¿î »ê¾÷ Ç¥ÁØÀÎ Cg ¾ð¾î ±â¹ÝÀÇ NVIDIA Cg ÅøŶÀº ÄÄÇ»ÅÍ·Î »ý¼ºµÇ´Â ±×·¡ÇȽº È¿°ú¿¡ ´ëº¯ÇõÀ» ÀÏÀ¸Å³ °ÍÀÌ¸ç ±ØÀ念ÈÀÇ Çö½Ç°¨À»
µ¥½ºÅ©Å¾¿¡ ±¸ÇöÇÒ ¼ö ÀÖ°Ô ÇØÁÙ °ÍÀÌ´Ù. »õ·Î¿î °í±Þ ÇÁ·Î±×·¡¹Ö ¾ð¾î Cg´Â »ê¾÷°è Àü¹Ý¿¡ °ÉÃÄ ÀÌÀÍÀ» °¡Á®´Ù ÁÙ °ÍÀÌ´Ù:
- »ç¿ëÀÚ´Â Áõ°¡µÈ Çö½Ç°¨, ¶Ù¾î³ ½Ã°¢ È¿°ú, ±×¸®°í º¸´Ù À¯¿¬ÇÑ GUI¸¦ ¾ò°Ô µÈ´Ù.
- ÇÁ·Î±×·¡¸Ó´Â º¹ÀâÇÑ È¿°ú¸¦ °³¹ßÇϴµ¥ ÀÖ¾î »ó´çÇÑ ½Ã°£À» Àý¾àÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
- µðÁöÅÐ ÄÅÙÆ®¸¦ âÃâÇÏ´Â »ç¶÷ ¹× ¿¹¼ú°¡µéÀº GPU ±â¼ú¿¡ º¸´Ù ½±°Ô Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
- ¾ÖÇø®ÄÉÀÌ¼Ç À¯Åë¾÷°è´Â ½ÃÀåÀ¸·ÎÀÇ ºü¸¥ ÃâÇÏ¿Í ±× Ưº°ÇÔ¿¡ ±àÁ¤ÀûÀÎ ¹ÝÀÀÀ» º¸ÀÏ °ÍÀÌ´Ù.
- ±×·¡ÇȽº Çϵå¿þ¾î´Â º¸´Ù Á÷Á¢ÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾îÀÇ ½ÇÇà´É·ÂÀ» Çâ»ó½Ãų °ÍÀÌ´Ù.
°³¹ßÀÚµéÀº ÀÌÁ¦, ÄÄÆÄÀÏ·¯ ±â¼ú»Ó¸¸ ¾Æ´Ï¶ó Cg ½¦ÀÌ´õ¸¦ ´É·üÀûÀ¸·Î °³¹ßÇÒ ¶§ À¯¿ëÇÑ ¿©·¯ µµ±¸µéµµ È°¿ëÇÏ°Ô²û ÇØÁÖ´Â ¿Ïº®ÇÑ NVIDIA Cg
ÅøŶÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
°³¹ßÇÒ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ´õ ¸¹¾ÆÁú¼ö·Ï Cg´Â º¸´Ù ¸¹Àº ½Ã°£ÀÇ Àý¾àÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù:
ÇöÀç ÅøŶÀÌ Æ÷ÇÔÇÏ°í ÀÖ´Â ³»¿ëÀº ´ÙÀ½°ú °°´Ù:
DirectX 8 ¹öÅؽº ±×¸®°í Çȼ¿ ½¦ÀÌ´õ ±×¸®°í OpenGL 1.3 (NV_vertex_program Æ÷ÇÔ) À» Áö¿øÇÏ´Â
NVIDIA Cg ÄÄÆÄÀÏ·¯ º£Å¸ 1.0
NVIDIA Cg Ç¥ÁØ ¶óÀ̺귯¸®
DirectX¿Í OpenGLÀ» À§ÇÑ NVIDIA Cg ·±Å¸ÀÓ ¶óÀ̺귯¸®
´Ù¼öÀÇ »ùÇà ½¦ÀÌ´õ°¡ ÀÖ´Â NVIDIA Cg ºê¶ó¿ìÀú 4.0
Cg ¾ð¾î ½ºÆå(specification)
Cg »ç¿ëÀÚ ¸Å´º¾ó
NVIDIAÀÇ Â÷±â Cg ÄÄÆÄÀÏ·¯´Â DirectX¿Í OpenGLÀÇ ´ÙÀ½ ¹öÀüÀ» Áö¿øÇÒ °ÍÀ̸ç ÃֽŠNVIDIA GPU ¾ÆÅ°ÅØÃĸ¦ À§ÇÑ ÃÖÀûÈ
±â´ÉÀ» Æ÷ÇÔÇÒ ¿¹Á¤ÀÌ´Ù.
¡Ø NVIDIA Cg ¼Ö·ç¼Ç¿¡ ´ëÇÑ º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾òÀ¸·Á¸é NVIDIAÀÇ °³¹ßÀÚ °ü·Ã À¥»çÀÌÆ®,
http://developer.nvidia.comÀ»
¹æ¹®ÇϽʽÿÀ.