Yaminabe

¤é¤¯¤¬¤­¤Ö¤í¤°

¤Æ¤¹¤È¡§Yaminabe¤Á¤ã¤ó¤ÏÀ¸¤Þ¤ì¤¿¤Ð¤«¤ê¤Î¥Ö¥í¥°¤Ç¤¹¡¡¤ß¤ó¤Ê¤ÇÃç¤è¤¯»È¤Ã¤Æ¤Í

¥«¥Æ¥´¥ê¡§ Unity3d




¡É#pragma¡¡strict¡É¡¡¤Î¥­¡¼¥ï¡¼¥É¤Ç¸¡º÷¤¬Â¿¤«¤Ã¤¿¤Î¤Ç¡¡ÀâÌÀ¤·¤Þ¤¹¤Í¡£


Unity¤Ï

UnityScript¡Ê³ÈÄ¥Javascript¡¡¥¢¥¯¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¤Ë¤Á¤ç¤Ã¤È»÷¤Æ¤ë¡Ë¡¢
C#¡Ê¥ª¥ê¥¸¥Ê¥ë¤È¤Á¤ç¤Ã¤ÈºîË¡¤¬°ã¤¦¡Ë¡¢
Boo(Python¤Ý¤¤¡¡¤Ç¤â¤Ê¤ó¤«¤Á¤¬¤¦)

¤Ê¤É¤Î¥¹¥¯¥ê¥×¥È¤Çµ­½Ò¤Ç¤­¤Þ¤¹¤¬
#pragmaʸ¤Ï¡¡¼ç¤ËUnityScript¤Î¥¹¥¯¥ê¥×¥ÈÊ¸Ãæ¤ÎÀèÆ¬¤ÇÀë¸À¤·¤Þ¤¹¡£
UnityScript¡ÊJava)¤ÏÊÑ¿ô¤Î·¿¤ò¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¼«Æ°Åª¤ËȽÊ̤¹¤ë¡¡¿äÏÀ·¿¤Î·¿ÉÕ¤±¤ò¹Ô¤Ê¤Ã¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤ì¤Ï¡¡·¿¤òµ¤¤Ë¤»¤º¤Ë¤¶¤Ã¤¯¤ê¤È¥¹¥¯¥ê¥×¥È¤ò½ñ¤¯¤³¤È¤¬½ÐÍè¤ë¤¿¤á¡¡¥¹¥¯¥ê¥×¥È¤Ë¤¢¤Þ¤êÆëÀ÷¤ß¤Î¤Ê¤¤¿Í¤Ê¤É¤¬
µ­½Ò¤¹¤ë¤È¤­¤Ë¿¾¯½õ¤±¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¡£
¤Ç¤¹¤¬¡¡¤½¤ÎÊØÍø¤µ¤ËÈ¿¤·¤Æ¼Â¹Ô¥¹¥Ô¡¼¥É¤¬¼ã´³µ¾À·¤Ë¤Ê¤ë¤¿¤á¡¡ËܳÊŪ¤Ë¥²¡¼¥à¤òºî¤ë¾ì¹ç¤Ë¤Ï
Ū³Î¤Ë·¿Àë¸À¤ª¤è¤Ó·¿»ØÄê¤ò¤·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡É¡ôpragma"¤Ë¤Ï¡Østrict¡Ù¤Î¤Û¤«¤Ë¡Øimplicit¡Ù¡Ødowncast¡Ù¤È¤¤¤Ã¤¿Ãç´Ö¤¬¤¢¤ê¤Þ¤¹¡£


¢£¡É#pragma¡¡strict¡É¤òÀë¸À¤·¤¿¾ì¹ç¡£
Îã)

­¡
#pragma strict

foo = 5; // ¤³¤ì¤Ï¡¡X


­¢
#pragma strict

var foo = 5; // ¤³¤ì¤Ï¡¡¡û

➀¤Ï·¿Àë¸À¤Ç¡Évar¡É¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡¡Java¤Î¾ì¹ç¡¡ÊÑ¿ô̾¡á¿ôÃÍ¡¡¤Î·Á¤Ç½ñ¤¯¤À¤±¤Ç
·¿Àë¸À¤Ê¤·¤Î¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤¬Ç§¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£¡¡
¡É#pragma strict¡É¤ò»ØÄꤹ¤ë¤È¡¡¤¢¤¤¤Þ¤¤¤Ê·¿¤Ï¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤¬¤Ç¤ë¤Î¤Ç¡¡¤­¤Á¤ó¤È·¿Àë¸À¤·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£

¢£¡É#pragma¡¡implicit¡É¤òÀë¸À¤·¤¿¾ì¹ç¡£

Îã¡Ë

#pragma strict
#pragma implicit

foo = 5;


//¡¡¡É#pragma implicit¡É¡¡¤ò»ØÄꤷ¤¿¾ì¹ç¡É#pragma strict¡É¤Îµ­½Ò¤ò¤·¤Æ¤¤¤Æ¤â¡¡ÊÑ¿ô¤òÀë¸À¤Ê¤·¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£


¢£#pragma strict¡¡¤À¤±¤òµ­½Ò¤·¤¿¾ì¹ç¡¡ÂåÆþÀè¤ÎÊÑ¿ô¤Î·¿¤Ë·¿ÊÑ´¹¡Ê¥­¥ã¥¹¥È¡Ë¤ÇÀµ³Î¤ËÃͤòÅϤµ¤Ê¤¤¾ì¹ç¥¨¥é¡¼¤¬µ¢¤ê¤Þ¤¹¡£

­¡
#pragma strict

var go : GameObject ;

var clone : GameObject = Instantiate (go);

// ¥­¥ã¥¹¥È¡Ê·¿ÊÑ´¹¡Ë¤ò¤·¤Ê¤¤¤ÈInstanciate´Ø¿ô¤ÏObject·¿¤òÊÖ¤·¤Þ¤¹¤Î¤ÇGameObject·¿¤Î¡Éclone"¤ËÂåÆþ¤µ¤ì¤¿»þÅÀ¤Ç¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹

­¢

#pragma strict

var go : GameObject ;

var clone : GameObject = Instantiate (go) as GameObject ;

// ·¿ÊÑ´¹"as¡É¤ò»ØÄꤹ¤ë¤³¤È¤ÇInstanciate´Ø¿ô¤ÏGameObject·¿¤Ë·¿ÉÕ¤±¤µ¤ì¤Þ¤·¤¿¡¡¤³¤ì¤Ï¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤»¤ó¡£


¡É#pragma downcast¡É¤ò»ÈÍѤ¹¤ë¤È¡¡¡É#pragma strict¡É¤ò»ÈÍѤ·¤Æ¤¤¤¿¾ì¹ç¤Ç¤â¡¡ÃͤÎÂåÆþ»þ¤Î·¿¤ÎÁê°ã¤Ç¥¨¥é¡¼¤òÊÖ¤·¤Þ¤»¤ó

#pragma strict
#pragma downcast

var go : GameObject ;

var clone : GameObject = Instantiate (go); // ¤³¤ì¤ÏOk





Îãʸ¤Ï°Ê²¼¤Î¥µ¥¤¥È¤ò»²¹Í¤Ë¤·¤Þ¤·¤¿
http://forum.unity3d.com/threads/63114-What-is-pragma-implicit-and-pragma-downcast


Ê䭤Ǥ¹¤¬¡¡¥×¥í¥¸¥§¥¯¥È¤¬µðÂç¤Ë¤Ê¤ë¤È¤´¤¯¤Þ¤ì¤Ë¡¢¤É¤¦¤·¤Æ¤â¥­¥ã¥¹¥È¤¬¥³¥ó¥Ñ¥¤¥ë¤ÇÄ̤é¤Ê¤¤¤è¤¦¤Ê¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
ÆÃ¤Ë³°Éô¥¹¥¯¥ê¥×¥È¤«¤éÊÑ¿ô¤ò»²¾È¤¹¤ë¾ì¹ç¤Ê¤É¤ËȯÀ¸¤¹¤ë¤³¤È¤¬¤¢¤ë¤è¤¦¤Ç¤¹¡£
¤½¤¦¤¤¤¦¾ì¹ç¤Ë¤Ï¾¤Î²Õ½ê¤ò¥Ç¥Ð¥Ã¥°¸å¤Ë¡¡#pragma strict¡¡¤ò¤Ï¤º¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¥³¥ó¥Ñ¥¤¥é¤Î¼«Æ°È½Ê̤Dz¿·¿¤«¤ËŬÅö¤Ë³ä¤ê¤Ä¤±¤Æ¼Â¹Ô¤·¤Æ¤¯¤ì¤ë¤È»×¤¤¤Þ¤¹¡£
¥²¡¼¥à¤ÎÃæ¤Ç¿ô²ó¼Â¹Ô¤µ¤ì¤ëÄøÅ٤βսê¤Ç¤¢¤ì¤Ð¡¡½¤Àµ¤Ë»þ´Ö¤ò¤µ¤¯¤Î¤Ï̵Â̤Ǥ¹¡£




Äɵ­¡§

µ»½Ñʸ½ñ¤Ê¤É¤Ç¤è¤¯Ìܤˤ¹¤ëʸ»úÎó¤Ë¡Øfoo¡Ù¤ä¡Øbar¡Ù¡¡º£²ó¤Î¥µ¥ó¥×¥ë¤Ë¤â»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¤¬

ÆüËܸì¤ÇÎ㤨¤ë¤È¡¡¡Ø¤Ê¤ó¤È¤«¡Ù¤ä¡Ø¤Û¤Ë¤ã¤é¤é¡Ù¤È¤¤¤Ã¤¿¡¡¤½¤Î²Õ½ê¤Ë¹¥¤­¤Ê̾Á°¤òÅö¤Æ¤Ï¤á¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤
¤È¤¤¤¦¡Ø²¾¤Î̾Á°¡Êñ¸ì¡Ë¡Ù¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£

¤³¤ì¤ò¡¡¥á¥¿¹½Ê¸ÊÑ¿ô(Metasyntactic variable)¡¡¤È¾ðÊó½èÍý¤ÎÀ¤³¦¤Ç¤Ï¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£

¤Û¤«¤Ë¤â
¡¡foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud¡¡

¤Ê¤É¤Î¤è¤¦¤Ê¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î½çÈÖ¤ÏABC¡Å¤ËÁêÅö¤¹¤ë¤Î¤ÇÆþ¤ìÂØ¤¨¤Ê¤¤¤Ç»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

ÆüËܸì·÷¤Ë¤âƱÍͤΥ᥿ÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹¡£

¡Öhoge¡×¡Öfuga¡×¡Öpiyo¡×

¤Ê¤É¤Ç¤¹¡¡ÆüËܸì¤Î¥¹¥¯¥ê¥×¥È¤ò²òÀ⤹¤ë¥µ¥¤¥È¤ò½ä¤ë¤ÈÌܤˤ¹¤ë¤³¤È¤¬¤¢¤ë¤«¤È»×¤¤¤Þ¤¹¡£

¤½¤ì¤«¤é¡¡¤è¤¯´Ø¿ô¤ÎÆâÉô¤Ç¡¡¡Édo¡¡something¡É¡¡¤È¤¤¤¦Ê¸Î㤬½Ð¤Æ¤¯¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¤¬
¤³¤ì¤ÏľÌõ¤·¤Æ¡Ø²¿¤«¼Â¹Ô¤¹¤ë¡Ù¡¡¤Ä¤Þ¤ê¡¡¡Ø¹¥¤­¤Ê¤è¤¦¤Ë¥¹¥¯¥ê¥×¥È¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡Ù¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤¦¤¤¤¦Ì¾Á°¤Î¥³¥Þ¥ó¥É¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç´ª°ã¤¤¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£


¤³¤ì¤é¤¬¸¡º÷¤Ç¤È¤Æ¤â¿¤¤¤Î¤Ç¡¡°ì±þ¥á¥âŪ¤Ë½ñ¤¤¤Æ¤ª¤­¤Þ¤·¤¿¡£

Ť¯¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤ë¿Í¤ä¡¡¾ðÊó¤ÎÀìÌç¤Î¿Í¤Ë¤Ï¤¢¤¿¤ê¤Þ¤¨¤Î¤³¤È¤«¤â¤Ç¤¹¤±¤É
¤Ï¤¸¤á¤Æ¥²¡¼¥àºî¤ê¤¿¤¤¿Í¤Ë¤Ï¤ï¤«¤ó¤Ê¤¤¤Ç¤¹¤è¤Í£÷



¤¦¤Ë¤Ð¤Ê¡¡º£¸å¤ÎͽÄê¤Ç¤¹¤¬

¥·¥§¡¼¥À¡¼¤Îµ­»ö¤ò¤È¤ê¤¢¤¨¤º¤ä¤Ã¤Ä¤±¤Þ¤¹¡£
¤½¤Î¸å¡¡¥¨¥Í¥ß¡¼AI¤Î¹Í»¡¡¢¡¡¥Í¥Ã¥È¥ï¡¼¥¯´ØÏ¢¡¢¡¡¥â¡¼¥·¥ç¥ó¤Þ¤ï¤ê¤ÎTips¡¡¤Ê¤ó¤Æ¤¤¤¦Í½Äê¤ò¤¿¤Æ¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¹ç´Ö¤Ë¼«ºî¥²¡¼¥à¤Îµ­»ö¤ò¶´¤à´¶¤¸¤Ç¤·¤ç¤¦¤«

¤¿¤À¤·¡¡º£²ó¤½¤Î»þ´ü¤È¾ì½ê¤Ï»ØÄꤷ¤Ê¤¤¤Î¤Ç¡¡¤½¤Îµ¤¤Ë¤Ê¤ì¤Ð10ǯ¸å¡¡£²£°¡Ê£ò£ù

¤¤¤ä¡¡¾ì½ê¤Ï¤³¤³¤Ê¤ó¤Ç¤¹¤±¤É¤Í
²áÅ٤ʴüÂԤϤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡Ê¤ß¤Ê¤ß¤±¤Î4´ü¡¡ÄøÅ٤δüÂÔ´¶¤Ç¤ª¤Þ¤Á¤¯¤À¤µ¤¤¡Ë



¤½¤ì¤Ç¤Ï¡¡¤Þ¤¿

C£ç¤Ç¥·¥§¡¼¥À¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥¢¥¯¥»¥¹¤¹¤ë


¥·¥§¡¼¥À¤Ï¡¢¥×¥í¥Ñ¥Æ¥£¥Ö¥í¥Ã¥¯Æâ¤Ç¥×¥í¥Ñ¥Æ¥£¤òÀë¸À¤·¤Þ¤¹¡£¤½¤ì¤é¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥¢¥¯¥»¥¹¤¹¤ë¾ì¹ç¤Ï¡¢Cg¤Î¥·¥§¡¼¥À¥×¥í¥°¥é¥à¤ò¡¢Æ±¤¸Ì¾Á°¤È°ìÃפ¹¤ë¥¿¥¤¥×¤ÇCgÊÑ¿ô¤òÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£


Îã¤ÏÄ󶡤µ¤ì¤Æ¤¤¤ëĺÅÀ¥×¥í¥°¥é¥à¤È¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¡§¥·¥§¡¼¥À¡¼¥Á¥å¡¼¥È¥ê¥¢¥ë¡£


http://docs.unity3d.com/Documentation/Manual/ShaderTut2.html


¤¿¤È¤¨¤Ð¡¢¤³¤ì¤é¤Î¥·¥§¡¼¥À¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¡§


_MyColor ("Some Color", Color) = (1,1,1,1) 
_MyVector ("Some Vector", Vector) = (0,0,0,0)
_MyFloat ("My float", Float) = 0.5
_MyTexture ("Texture", 2D) = "white" {}
_MyCubemap ("Cubemap", CUBE) = "" {}

¤È¤·¤ÆCg¥³¡¼¥É¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ËÀë¸À¤µ¤ì¤Þ¤¹¡£


float4¤Î_MyColor
float4¤Î_MyVector
float¤Î_MyFloat;
sampler2D¤Î _MyTexture
samplerCUBE¤Î _MyCubemap

Cg¤Ï¤Þ¤¿É¬¿Ü¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬ uniform¤ò¼õ¤±Æþ¤ì¤ë¤³¤È¤¬¤Ç¤­¡¢


uniform float4 _MyColor¡£

Cg¤ÏÊÑ¿ô¤Î·¿¤Ï¡¢¤³¤ÎÊýË¡¤ËShaderLab¥Þ¥Ã¥×¤Î¥×¥í¥Ñ¥Æ¥£¤Î·¿¡§



  • Color¤ÈVector¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥Þ¥Ã¥×¤¹¤ëfloat4¡£

  • Range¤ÈFloat¥×¥í¥Ñ¥Æ¥£¤Ë¥Þ¥Ã¥×¤¹¤ëfloat¡£

  • Texture¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥Þ¥Ã¥×¤¹¤ësampler2D Ä̾ï¤Î2D¥Æ¥¯¥¹¥Á¥ã¤Î¤¿¤á¤ÎÊÑ¿ô¡£

  • CUBE¤ÈRECTtextures¥Þ¥Ã¥×¤Î¤¿¤á¤Î samplerCUBE¤ÈsamplerRECT¤½¤ì¤¾¤ì¤ÎÊÑ¿ô¡£


ĺÅÀ¥×¥í¥°¥é¥à¤ËĺÅÀ¥Ç¡¼¥¿¤òžÁ÷


http://docs.unity3d.com/Documentation/Components/SL-ShaderPrograms.html


Cg¤ÎĺÅÀ¥×¥í¥°¥é¥à¡¢ÄºÅÀ¥Ç¡¼¥¿¤Ï¹½Â¤ÂΤȤ·¤ÆÅϤµ¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Î°ìÈÌŪ¤Ë»ÈÍѤµ¤ì¤ëĺÅÀ¤Î¹½Â¤ÂΤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë UnityCG.cginc¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤Û¤È¤ó¤É¤Î¥±¡¼¥¹¤Ç¤Ï¡¢¤½¤ì¤é¤ò»ÈÍѤ¹¤ë¤À¤±¤Ç½½Ê¬¤Ç¤¹¡£¹½Â¤¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£



  • appdata_base¡§ÄºÅÀºÂɸ¤È¡¢Ë¡Àþ¤È ¤Ò¤È¤Ä¤Î¥Æ¥¯¥¹¥Á¥ãºÂɸ¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

  • appdata_tan¡§ÄºÅÀºÂɸ¡¢ÀÜÀþ¡¢Ë¡Àþ¤È ¤Ò¤È¤Ä¤Î¥Æ¥¯¥¹¥Á¥ãºÂɸ¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¤¿¤È¤¨¤Ð¡¢¤³¤Î¥·¥§¡¼¥À¤Î¿§¤Ï¡¢¥á¥Ã¥·¥å¤Ï¤½¤ì¤ÎË¡Àþ¤Ë´ð¤Å¤¤¤Æ¤ª¤êappdata_base¤òĺÅÀ¥×¥í¥°¥é¥àÆþÎϤȤ·¤Æ¡§


Shader "VertexInputSimple" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#include "UnityCG.cginc"
struct v2f {
float4 pos : SV_POSITION;
fixed4 color : COLOR;
};
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.color.xyz = v.normal * 0.5 + 0.5;
return o;
}
ENDCG
}
}
}

Ê̤ÎĺÅÀ¥Ç¡¼¥¿¤Ë¥¢¥¯¥»¥¹¤·¤¿¤¤¾ì¹ç¤Ï¡¢ÄºÅÀ¤Î¹½Â¤¤ò¼«Ê¬¤ÇÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤¬¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó


°Ê²¼ ¹½Â¤ÂΤΥꥹ¥È¡§



  • float4 vertex ĺÅÀ¤Î°ÌÃÖ

  • float3 normal ĺÅÀ¤ÎË¡Àþ

  • float4 texcoord ºÇ½é¤ÎUVºÂɸ

  • float4 texcoord1 ÂèÆó¤ÎUVºÂɸ

  • float4 tangent ÀÜÀþ¥Ù¥¯¥È¥ë¡ÊË¡Àþ¥Þ¥Ã¥Ô¥ó¥°¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡Ë

  • float4 color ĺÅÀñ°Ì¤Î¿§


ShaderLab¹½Ê¸¡§Pass


Pass¥Ö¥í¥Ã¥¯¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¸¥ª¥á¥È¥ê¤ò°ìÅÙ¥ì¥ó¥À¥ê¥ó¥°¤·¤Þ¤¹¡£


¹½Ê¸


Pass { [Name and Tags] [RenderSetup] [TextureSetup] }
´ðËÜŪ¤Ê¥Ñ¥¹¡¦¥³¥Þ¥ó¥É¤Ï¡¢¡¢¥ì¥ó¥À¥ê¥ó¥°¤Î¥»¥Ã¥È¥¢¥Ã¥×¥³¥Þ¥ó¥É¤Î¥ª¥×¥·¥ç¥ó¤Î¥ê¥¹¥È¤Ë³¤¤¤Æ»ÈÍѤ¹¤ë¥Æ¥¯¥¹¥Á¥ã¤Î¥ª¥×¥·¥ç¥ó¤Î¥ê¥¹¥È¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

Name and tags


¥Ñ¥¹¤Ï̾Á°¤ÈǤ°Õ¤Î¿ô¤Î¥¿¥°¤ÇÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ì¾Á°/ÃͤÎʸ»úÎó¤ÏPass¤ò¥ì¥ó¥À¥ê¥ó¥°¥¨¥ó¥¸¥ó¤ËÅϤ¹°Õ¿Þ¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£


Render Setup


¥Ñ¥¹¤Ï¡¢¥°¥é¥Õ¥£¥Ã¥¯¥¹¥Ï¡¼¥É¥¦¥§¥¢¤Î¤µ¤Þ¤¶¤Þ¤Ê¾õÂÖ¤òÀßÄꤷ¤Þ¤¹¡£Î㤨¤Ð¡¢¥¢¥ë¥Õ¥¡¥Ö¥ì¥ó¥Ç¥£¥ó¥°¤Ï¡¢¥Õ¥©¥°¤¬»ÈÍѤµ¤ì¤ë¤È¤­¥ª¥ó¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤¾¤ì¥³¥Þ¥ó¥É¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£


Material { Material Block }
ĺÅÀ¥é¥¤¥Æ¥£¥ó¥°¥Ñ¥¤¥×¥é¥¤¥ó¤Ç»ÈÍѤ¹¤ë¥Þ¥Æ¥ê¥¢¥ë¤òÄêµÁ¤·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ú¡¼¥¸¤ò»²¾È http://docs.unity3d.com/Documentation/Components/SL-Material.html
Lighting On | Off
ĺÅÀ¥é¥¤¥Æ¥£¥ó¥°¤ò¥ª¥ó¤Þ¤¿¤Ï¥ª¥Õ¤Ë¤·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ú¡¼¥¸¤ò»²¾È
 Cull Back | Front | Off
¥Ý¥ê¥´¥ó¥«¥ê¥ó¥°¥â¡¼¥É¤òÀßÄꤷ¤Þ¤¹¡£
ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
¿¼¤µ¤Î¥Æ¥¹¥È¥â¡¼¥É¤òÀßÄꤷ¤Þ¤¹¡£
ZWRITE ON | OFF
¿¼¤µ¡ÊZ¥Ç¥×¥¹¡Ë¤Î½ñ¤­¹þ¤ß¥â¡¼¥É¤òÀßÄꤷ¤Þ¤¹¡£
Fog { Fog Block }
¥Õ¥©¥°¤Î¥Ñ¥é¥á¡¼¥¿¤òÀßÄꤷ¤Þ¤¹¡£
AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue
¥¢¥ë¥Õ¥¡¥Æ¥¹¥È¤¬Í­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£
Blend SourceBlendMode DestBlendMode
¥¢¥ë¥Õ¥¡¥Ö¥ì¥ó¥Ç¥£¥ó¥°¥â¡¼¥É¤òÀßÄꤷ¤Þ¤¹¡£
Color Color value
ĺÅÀ¥é¥¤¥Æ¥£¥ó¥°¤¬¥ª¥Õ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë»ÈÍѤ¹¤ë¿§¤òÀßÄꤷ¤Þ¤¹¡£
ColorMask RGB | A | 0 | any combination of R, G, B, A
¿§½ñ¤­¹þ¤ß¥Þ¥¹¥¯¤òÀßÄꤷ¤Þ¤¹¡£ColorMask 0½ñ¤­¹þ¤à¤È¤¹¤Ù¤Æ¤Î¥«¥é¡¼¥Á¥ã¥ó¥Í¥ë¤Î¥ì¥ó¥À¥ê¥ó¥°¤ò¥ª¥Õ¤Ë¤·¤Þ¤¹¡£
Offset OffsetFactor , OffsetUnits
¥ª¥Õ¥»¥Ã¥È¤Î¿¼¤µ¤òÀßÄꤷ¤Þ¤¹¡£
SeparateSpecular ON | OFF
ĺÅÀ¥é¥¤¥Æ¥£¥ó¥°¤Î¤¿¤á¤ÎÆÈΩ¤·¤¿¥¹¥Ú¥­¥å¥é¥«¥é¡¼¤ò¥ª¥ó¤Þ¤¿¤Ï¥ª¥Õ¤Ë¤·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ú¡¼¥¸¤ò»²¾È¡£ http://docs.unity3d.com/Documentation/Components/SL-Material.html
ColorMaterial AmbientAndDiffuse | Emission
ĺÅÀ¥é¥¤¥Æ¥£¥ó¥°¤ò·×»»¤¹¤ë¤È¤­¤ËĺÅÀñ°Ì¤Î¿§¤ò»ÈÍѤ·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ú¡¼¥¸¤ò»²¾È¡£http://docs.unity3d.com/Documentation/Components/SL-Material.html

¥Æ¥¯¥¹¥Á¥ã¡¼¤Î¥»¥Ã¥È¥¢¥Ã¥×


¥ì¥ó¥À¥ê¥ó¥°¥¹¥Æ¡¼¥È¤ÎÀßÄê¸å¤Ë¡¢SetTexture¤Î¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤ÆÅ¬ÍѤ¹¤ë¥Æ¥¯¥¹¥Á¥ã¤È¤½¤Î¥³¥ó¥Ð¥¤¥ó¥â¡¼¥É¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡§http://docs.unity3d.com/Documentation/Components/SL-SetTexture.html


SetTexture texture property { [Combine options] }


¥Æ¥¯¥¹¥Á¥ã¡¼¤Î¥»¥Ã¥È¥¢¥Ã¥×¤Ï¸ÇÄ굡ǽ¥Þ¥ë¥Á¥Æ¥¯¥¹¥Á¥ã¥Ñ¥¤¥×¥é¥¤¥ó¤òÀßÄꤷ¤Þ¤¹¤¬¡¢¥«¥¹¥¿¥à¤Î¥Õ¥é¥°¥á¥ó¥È¥·¥§¡¼¥À¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç̵»ë¤µ¤ì¤Þ¤¹¡£http://docs.unity3d.com/Documentation/Components/SL-ShaderPrograms.html


ºÙÉô


Per-pixel Lighting (¥Ô¥¯¥»¥ëñ°Ì¤Î¥é¥¤¥Æ¥£¥ó¥°)

¥Ô¥¯¥»¥ëñ°Ì¤Î¥é¥¤¥Æ¥£¥ó¥°¥Ñ¥¤¥×¥é¥¤¥ó¤ÏÊ£¿ô¤Î¥Ñ¥¹¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÆ°ºî¤·¤Þ¤¹¡£Unity¤Ï¡¢´Ä¶­¸÷¤È¤ÎǤ°Õ¤ÎĺÅÀ¥é¥¤¥È¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë°ìÅÙ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ì¥ó¥À¥ê¥ó¥°¤·¤½¤ì¤«¤é¡¢ÊÌ¡¹¤ËÄɲ䵤줿¥Ñ¥¹Æâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë±Æ¶Á¤òÍ¿¤¨¤ë³Æ¥Ô¥¯¥»¥ë¤Î¥é¥¤¥Æ¥£¥ó¥°¤ò¥ì¥ó¥À¥ê¥ó¥°¤·¤Þ¤¹¡£¥Ñ¥¤¥×¥é¥¤¥ó¤Î¥ì¥ó¥À¥ê¥ó¥°¾ÜºÙ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£http://docs.unity3d.com/Documentation/Components/SL-RenderPipeline.html


Per-vertex Lightig (ĺÅÀñ°Ì¤Î¥é¥¤¥Æ¥£¥ó¥°)

ĺÅÀñ°Ì¤Î¥é¥¤¥Æ¥£¥ó¥°¤Ï¡¢³ÆÄºÅÀ¤ËÂФ·¤Æ·×»»¤µ¤ì¤Æ¤¤¤ëɸ½àDirect3D/OpenGL¾ÈÌÀ¥â¥Ç¥ë¤Ç¤¹¡£


Lighting on¤ÇON¾õÂ֤ˤʤê¤Þ¤¹¡£¾ÈÌÀ¤Ë¤è¤Ã¤Æ±Æ¶Á¤µ¤ì¤ëMaterial¥Ö¥í¥Ã¥¯ColorMaterial¤ÈSeparateSpecular¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ú¡¼¥¸¤ò»²¾È¡£


°Ê²¼¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤


¶¦Ä̤ε¡Ç½¤òºÆÍøÍѤ·¤¿¤ê¡¢¤µ¤Þ¤¶¤Þ¤Ê¥Ï¥¤¥¨¥ó¥É¤Ê¥¨¥Õ¥§¥¯¥È¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ­¤ë¤¤¤¯¤Ä¤«¤ÎÆÃÊ̤ʥѥ¹¤¬¤¢¤ê¤Þ¤¹¡£



  • UsePass Ê̤Υ·¥§¡¼¥À¤«¤é»ØÄꤵ¤ì¤¿Ì¾Á°¤Î¥Ñ¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£


http://docs.unity3d.com/Documentation/Components/SL-UsePass.html



  • GrabPass ¸å¤Î¥Ñ¥¹¤Ç»ÈÍѤ¹¤ë¤¿¤á¤Ë¡¢¥Æ¥¯¥¹¥Á¥ã¤Ë²èÌÌ¤ÎÆâÍÆ¤ò¤Ä¤«¤à¡£


http://docs.unity3d.com/Documentation/Components/SL-GrabPass.html 


ShaderLab syntax: SubShader Tags




    • Background -¤³¤Î¥ì¥ó¥À¡¼¥­¥å¡¼¤Ï¡¢Ç¤°Õ¤Î¾¤Î¿Í¤ÎÁ°¤Ë¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¹¥«¥¤¥Ü¥Ã¥¯¥¹¤Ê¤É¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

    • Geometry ¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë -¤Û¤È¤ó¤É¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ÉÔÆ©ÌÀ¤Ê¥¸¥ª¥á¥È¥ê¤Ï¡¢¤³¤Î¥­¥å¡¼¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

    • AlphaTest -¥¢¥ë¥Õ¥¡¥Æ¥¹¥È¤µ¤ì¤¿¥¸¥ª¥á¥È¥ê¤Ï¤³¤Î¥­¥å¡¼¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£¤¹¤Ù¤Æ¤Î¥¸¥ª¥á¥È¥ê¥ª¥Ö¥¸¥§¥¯¥È¤¬ÉÁ²è¤µ¤ì¤¿¸å¡¢¥¢¥ë¥Õ¥¡¥Æ¥¹¥È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ì¥ó¥À¥ê¥ó¥°¤¹¤ëÊý¤¬¸úΨŪ¤Ê¤Î¤Ç¤¹¡£

    • Transparent -¤³¤Î¥ì¥ó¥À¥ê¥ó¥°¡¦¥­¥å¡¼¤ÏGeometry ¤ÈAlphaTest¤Î¸å¤ËÉÁ²è¤µ¤ì ¸å¤í¤«¤é¼êÁ°¤Ë¸þ¤«¤Ã¤ÆÉÁ²è¤µ¤ì¤Þ¤¹¡£¥¢¥ë¥Õ¥¡¥Ö¥ì¥ó¥É¡Ê¿¼Å٥Хåե¡¤Ø¤Î½ñ¤­¹þ¤ß¤Î¤Ê¤¤¤â¤Î Î㤨¤Ð¥¬¥é¥¹¡¢¥Ñ¡¼¥Æ¥£¥¯¥ë¥¨¥Õ¥§¥¯¥È¡Ë¤¬¤³¤³¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£

    • Overlay -¤³¤Î¥ì¥ó¥À¡¼¥­¥å¡¼¤Ï¥ª¡¼¥Ð¡¼¥ì¥¤¸ú²Ì¤ò°Õ¿Þ¤·¤Æ¤¤¤Þ¤¹¡£ºÇ¸å¤Ë¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤¿¤â¤Î¡Ê¥ì¥ó¥º¥Õ¥ì¥¢¤Ê¤É¡Ë¤Ï¤³¤³¤Ë½ñ¤­¹þ¤Þ¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£



Shader "Transparent Queue Example" {
SubShader {
Tags {"Queue" = "Transparent" }
Pass {
//¥·¥§¡¼¥À¤ÎËÜÂÎ }
}
}

¢£¥·¥§¡¼¥À¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¸þ¾å


ɬÍפʤâ¤Î¤À¤±¤ò·×»»¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð ¥Þ¥Æ¥ê¥¢¥ë¤´¤È¤Ë¿§¤ò³ä¤ê¤Ä¤±¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ì¤Ð½ÀÆð¤Ê¥·¥§¡¼¥À¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢¾ï¤ËÇò¤ËÀßÄꤷ¤Æ¤ª¤¯¤³¤È¤Ç·×»»¤¬·Ú¤¯¤Ê¤ê¥ì¥ó¥À¥ê¥ó¥°Ç½ÎϤ¬¸þ¾å¤·¤Þ¤¹¡£

ĺÅÀ¥·¥§¡¼¥À¤ËÈæ¤Ù¤Æ¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¤ÏÂçÊÑ¿¤¯¤Î¥Ô¥¯¥»¥ë¤ò±é»»¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤¿¤áĺÅÀ¥·¥§¡¼¥À¤ÎÃæ¤Ç¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¤Î·×»»¤ò°Üư¤·¤Æ¹Ô¤Ã¤¿¤Û¤¦¤¬½èÍýÉé²Ù¤¬·Ú¸º¤Ç¤­¤Þ¤¹¡£ ¤Þ¤¿¥·¥§¡¼¥À³°Éô¤Î¥¹¥¯¥ê¥×¥È¤Ç·×»»¤µ¤ì¤¿Ãͤò¥·¥§¡¼¥À¤ËÀßÄꤹ¤ë¤³¤È¤Ç¤âƱÍͤ˽èÍý¤¬·Ú¤¯¤Ê¤ê¤Þ¤¹¡£


¡ü°ìÈÌŪ¤Ê¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À

¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Ï¾ÈÌÀ¤È¤ÎÂÐÏÃ¥·¥§¡¼¥À¤ò½ñ¤¯¤¿¤á¤ËºÇŬ¤Ç¤¹¡£¤·¤«¤·¡¢¤½¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ "°ìÈÌŪ¥±¡¼¥¹"¤ËÄ´À°¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Â¿¤¯¤Î¥±¡¼¥¹¤Ç¤Ï¡¢¥·¥§¡¼¥À¤Î¼Â¹Ô®ÅÙ¤ò¸þ¾å¤µ¤»¤¿¤ê¡¢¥µ¥¤¥º¤ò¾®¤µ¤¯¤¹¤ë¤¿¤á¤Ë¡¢¤½¤ì¤é¤òÄ´À°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

approxview ¥Ó¥å¡¼Êý¸þ¡Ê¶ÀÌ̤ʤɡˤò»ÈÍѤ·¤Æ¥·¥§¡¼¥À¤Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¡¢¥Ó¥å¡¼Êý¸þ¤Ç¤Ï¤Ê¤¯¡¢¥Ô¥¯¥»¥ë¤´¤È¤ÎÀµµ¬²½¤µ¤ì¤¿ÄºÅÀ¤´¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ï»þ¤Ë½½Ê¬Îɤ¤¸ú²Ì¤¬¤¢¤ê¤Þ¤¹¡£

halfasview ¥¹¥Ú¥­¥å¥é¥·¥§¡¼¥À¥¿¥¤¥×¤â®¤¯¤Ê¤ê¤Þ¤¹¡£¥Ï¡¼¥Õ¥Ù¥¯¥È¥ë¡Ê¾ÈÌÀ¤ÎÊý¸þ¤È¥Ó¥å¡¼¥Ù¥¯¥È¥ë¤È¤ÎÃæ´Ö¤Î¥Ù¥¯¥È¥ë¡Ë¤ò·×»»¤µ¤ìĺÅÀ¤´¤È¤ËÀµµ¬²½¤µ¤ì¤Þ¤¹¡£¥é¥¤¥Æ¥£¥ó¥°µ¡Ç½¤Ï¥Ó¥å¡¼¥Ù¥¯¥È¥ë¤ÎÂå¤ï¤ê¤Ë¥Ï¡¼¥Õ¥Ù¥¯¥È¥ë¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£

noforwardadd ¥·¥§¡¼¥À¤¬´°Á´¤ËÁ°Êý¥ì¥ó¥À¥ê¥ó¥°¤Ç¥Ç¥£¥ì¥¯¥·¥ç¥Ê¥ë¥é¥¤¥È¤ò°ì¤Ä¤À¤±¥µ¥Ý¡¼¥È¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£»Ä¤ê¤Î¥é¥¤¥È¤ÏĺÅÀ¤´¤È¤Ë¸÷¤äµåÌÌÄ´Ï´ؿô¤È¤·¤Æ¤Î¸ú²Ì¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥·¥§¡¼¥À¤ò¾®¤µ¤¯¤·¡¢Ê£¿ô¤Î¥é¥¤¥È¤¬Â¸ºß¤·¤Æ 1¥Ñ¥¹¤Ç¥ì¥ó¥À¥ê¥ó¥°¤ò³Îǧ¤¹¤ë¤¿¤á¤ËºÇŬ¤Ç¤¹¡£


noambient¤Ï¡¢¼þ°Ï¤Î¾ÈÌÀ¤ä ¥·¥§¡¼¥À¾å¤ÎµåÌÌÄ´Ï¥饤¥È¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£¤³¤ì¤Ï¼ã´³Â®¤¯¤Ê¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£


¡ü·×»»¤ÎÀºÅÙ
CG / HLSL¤Ç¥·¥§¡¼¥À¤òºîÀ®¤¹¤ë¤È¤­¡¢3¤Ä¤Î´ðËÜŪ¤Ê¼ïÎà¤Î¿ôÃͤ¬¤¢¤ê¤Þ¤¹¡§float¡¢harf¤Èfixed¡ÊƱÍͤˡ¢¤½¤ì¤é¤Î¥Ù¥¯¥È¥ë¡¦¹ÔÎó¡¢Î㤨¤Ðhalf3¡¢float4x4 ¤Ê¤É¡Ë

¡üfloat¡§¹âÀºÅÙÉâÆ°¾®¿ôÅÀ¡£°ìÈÌŪ¤Ë32¥Ó¥Ã¥È¡¢ÉáÄÌ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Îfloat·¿¡£

¡ühalf¡§ÇÝÃÏÀºÅÙÉâÆ°¾®¿ôÅÀ¡£ÀºÅÙ¤Ï-60000¤«¤é60000 3.3·å¤ÎÈϰϤǡ¢°ìÈÌŪ¤Ë16¥Ó¥Ã¥È¡£

¡üfixed¡§ÄãÀºÅ٤θÇÄê¾®¿ôÅÀ¡£-2.0¤«¤é2.0¤ÎÈϰϤÈ256ʬ£±¤ÎÀºÅ٤ǡ¢°ìÈÌŪ¤Ë11¥Ó¥Ã¥È¡£

²Äǽ¤Ê¸Â¤êºÇ¾®¤ÎÀºÅÙ¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤ì¤Ï¡¢iOS¤äAndroid¤Ê¤É¤Î¥â¥Ð¥¤¥ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤ÇÆÃ¤Ë½ÅÍפǤ¹¡£Î㤨¤Ð°Ê²¼¤Î¤È¤ª¤ê

¡ü¿§¤Èñ°ÌŤµ¥Ù¥¯¥È¥ë¤Ë¤Ä¤¤¤Æ¤Ï¡¢fixed¤ò»ÈÍÑ¡£
¡üÈϰϤÈÀºÅÙ¤¬Îɹ¥¤Ç¤¢¤ë¾ì¹ç¤Ïharf¤ò»ÈÍÑ¡¢¤½¤ì°Ê³°¤Î¾ì¹çfloat¤ò»ÈÍѤ·¤Þ¤¹¡£
¥â¥Ð¥¤¥ë¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¡¢¥Õ¥é¥°¥á¥ó¥È¥·¥§¡¼¥ÀÆâ¤Ç²Äǽ¤Ê¸Â¤êÄãÀºÅÙ¤ò°Ý»ý¤¹¤ë¤³¤È¤Ç¤¹¡£¤Û¤È¤ó¤É¤Î¥â¥Ð¥¤¥ëGPU¾å¤Ç¡¢¡Êlowp /fixed¡ËÄãÀºÅÙ·¿¤Ëswizzle¤òŬÍѤ¹¤ë¾ì¹ç fixed/ lowp¤È¹âÀºÅÙ¥¿¥¤¥×´Ö¤ÎÊÑ´¹¤Î¾ì¹ç¤Ê¤É¤ÏÈó¾ï¤Ë±é»»¥³¥¹¥È¤¬¤«¤«¤ê¤Þ¤¹¡£

swizzle¤Îưºî¤Ï"xy" ¤ò "xyyy", "wz" ¤ò "wzzz¡É¤ËÊÑ´¹¤¹¤ë¤Ê¤É

¡ü¥¢¥ë¥Õ¥¡¥Æ¥¹¥È

¸ÇÄ굡ǽ¤Ç¤¢¤ëAlphaTest¤äƱÅù¤Êµ¡Ç½clip()¤Ï¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤è¤ê¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Ëº¹°Û¤¬¤¢¤ê¤Þ¤¹¡£

°ìÈÌŪ¤Ë¤Ï¤Û¤È¤ó¤É¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï´°Á´¤ËÆ©ÌÀ¤Ê¥Ô¥¯¥»¥ë¤ò¥«¥ê¥ó¥°¤¹¤ë¤³¤È¤Ï¾®µ¬ÌϤÊÍøÅÀ¤Ç¤¹¤¬ IOS¤ª¤è¤Ó¤¤¤¯¤Ä¤«¤ÎAndroid¥Ç¥Ð¥¤¥¹¤ÇºÎÍѤµ¤ì¤Æ¤¤¤ëPowerVR¤Î GPU¾å¤Ç¤Î¥¢¥ë¥Õ¥¡¥Æ¥¹¥È¤ÏÈó¾ï¤ËÉé²Ù¤¬¹â¤¤¤Ç¤¹¡£¤½¤³¤Ç "¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ÎºÇŬ²½"¤È¤·¤Æ¤³¤ì¤ò»ÈÍѤ·¤Ê¤¤¤ÈÉÁ²è¤¬ÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£

¡ü¥«¥é¡¼¥Þ¥¹¥¯

¤¤¤¯¤Ä¤«¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¡Ê¥â¥Ð¥¤¥ëGPU¤Ê¤É¡Ë¾å¤Ç»ÈÍѤ·¤Æ¡¢ColorMask¤òÍѤ¤¤Æ¤¤¤¯¤Ä¤«¤Î¥Á¥ã¥Í¥ë¤ò½ü³°¤¹¤ë¤³¤È¤Ç¡¢ÉÁ²è®Å٤θþ¾å¤¬´üÂԤǤ­¤Þ¤¹¡£





ShaderLab ÁȤ߹þ¤ß¤ÎÃÍ


Unity¤Ï¡¢¥·¥§¡¼¥À¤Î¤¿¤á¤ÎÁȤ߹þ¤ß¤ÎÃͤò¤¤¤¯¤Ä¤«Ä󶡤·¤Æ¤¤¤Þ¤¹¡£¸½ºß¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ´¹¹ÔÎó¡¢»þ´Ö¤Ê¤É¤Ç¤¹¡£


¤¢¤Ê¤¿¤¬Â¾¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ÈÍѤ·¤¿¤è¤¦¤Ë¤¹¤ë¤À¤±¤ÇShaderLab¤Ç¤½¤ì¤é¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¢Í£°ì¤Î°ã¤¤¤Ï¡¢Áȹþ¤µ¤ì¤Æ¤¤¤ëÃͤΤ¿¤á¤òÀë¸À¤¹¤ëɬÍפ¬¤Ê¤¤¤³¤È¤Ç¤¹¡£
ÁȤ߹þ¤ßÃͤò»ÈÍѤ¹¤ëºÝ¥×¥í¥°¥é¥Þ¥Ö¥ë¥·¥§¡¼¥À¤Ë¡ÉUnityCG.cginc¡É¤ò´Þ¤àɬÍפ¬¤¢¤ê¤Þ¤¹
¡£


http://docs.unity3d.com/Documentation/Components/SL-ShaderPrograms.html


¡üTransformations


float4x4 UNITY_MATRIX_MVP¸½¹Ô¥â¥Ç¥ë*¥Ó¥å¡¼*¼Í±Æ¹ÔÎó
float4x4 UNITY_MATRIX_MV¸½ºß¤Î¥â¥Ç¥ë*¥Ó¥å¡¼¹ÔÎó
float4x4 UNITY_MATRIX_P¸½ºß¤Î¼Í±Æ¹ÔÎó
float4x4 UNITY_MATRIX_T_MV¥â¥Ç¥ë*¥Ó¥å¡¼¹ÔÎó¤ÎžÃÖ
float4x4 UNITY_MATRIX_IT_MV¥â¥Ç¥ë*¥Ó¥å¡¼¤ÎµÕ¹ÔÎó
float4x4 UNITY_MATRIX_TEXTURE0 to UNITY_MATRIX_TEXTURE3¥Æ¥¯¥¹¥Á¥ãÊÑ´¹¹ÔÎó
float4x4 _Object2World¸½ºß¤Î¥â¥Ç¥ë¹ÔÎó
float4x4 _World2Object¸½ºß¤Î¥ï¡¼¥ë¥É¹ÔÎó¤ÎµÕ¹ÔÎó
float3 _WorldSpaceCameraPos¥«¥á¥é¤Î¥ï¡¼¥ë¥É¶õ´Ö¤Î°ÌÃÖ
float4 unity_Scalexyz¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Ê¤¤; ¡£w¤Ï¡¢°ìÍͤ˥¹¥±¡¼¥ê¥ó¥°¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¹¥±¡¼¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

¡üLighting

Î㤨¤Ð¥é¥¤¥È¥â¥Ç¥ë*¥é¥¤¥È¥«¥é¡¼¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£¥×¥ì¡¼¥óShaderLab¤Ç¤Ï¡¢ËöÈø¤Ë¥¼¥í¤òÉղ乤뤳¤È¤Ë¤è¤ê¡¢¼¡¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥¢¥¯¥»¥¹¤¹¤ë_ModelLightColor0¡£Cg¤Î¥·¥§¡¼¥À¤Ç¡¢¤½¤ì¤é¤Ïñ°ì¤ÎÍ×ÁǤò»ý¤ÄÇÛÎó¤È¤·¤Æ¸ø³«¤µ¤ì¡¢CgƱ¤¸¤è¤¦¤Ë_ModelLightColor [0] ¡£



UNITY_LIGHTMODEL_AMBIENT
¸½ºß¤Î¥¢¥ó¥Ó¥¨¥ó¥È¥«¥é¡¼¡£

Name Type Value


_ModelLightColor float4 Material¤Î¥á¥¤¥ó¥«¥é¡¼ * Light¥«¥é¡¼


_SpecularLightColor float4 Material¤Î¥¹¥Ú¥­¥å¥é¥«¥é¡¼ * Light¥«¥é¡¼


_ObjectSpaceLightPos float4 ¥ª¥Ö¥¸¥§¥¯¥È¶õ´Ö¤Ç¤Î¥é¥¤¥È¤Î°ÌÃÖ. w¥³¥ó¥Ý¡¼¥Í¥ó¥È


¤Ï ¥Ç¥£¥ì¥¯¥·¥ç¥Ê¥ë¥é¥¤¥È¤Î¾ì¹ç0¡¢¤½¤ì°Ê³°¤Î¥é¥¤¥È¤Ï£± ¡£


_Light2World float4x4 ¥ï¡¼¥ë¥É¶õ´Ö¹ÔÎó¤Ç¤Î¥é¥¤¥ÈºÂɸ


_World2Light float4x4 ¥é¥¤¥È¶õ´Ö¹ÔÎó¤Ø¥ï¡¼¥ë¥ÉºÂɸ


_Object2Light float4x4 ¥é¥¤¥È¶õ´Ö¹ÔÎó¤Ø¤Î¥ª¥Ö¥¸¥§¥¯¥ÈºÂɸ


Various



  • float4 _Time : Time (t/20, t, t*2, t*3),¥·¥§¡¼¥ÀÆâ¤Ç¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¤¹¤ë¤¿¤á¤Ë»ÈÍÑ

  • float4 _SinTime : Sine of time: (t/8, t/4, t/2, t)

  • float4 _CosTime : Cosine of time: (t/8, t/4, t/2, t)

  • float4 _ProjectionParams :

    x¤Ïȿž¼Í±Æ¹ÔÎó¤ò»ÈÍѤ·¤Æ¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë¾ì¹ç¤ÏÉé¡¢1.0¤Þ¤¿¤Ï-1.0 ¡¢y¤Ï¥«¥á¥é¤Înearplane¤Çz¤Ï¥«¥á¥é¤Îfarplane¤Ç¤¢¤ëw¤Ï1/FarPlane¤Ç¤¹¡£

  • float4 _ScreenParams :

    x¤Ï¸½ºß¤Î¥ì¥ó¥À¡¼¥¿¡¼¥²¥Ã¥È¤Î¥Ô¥¯¥»¥ëñ°Ì¤ÎÉý¤Ç¤¹¡£y¤Ï¸½ºß¤Î¥ì¥ó¥À¡¼¥¿¡¼¥²¥Ã¥È¤Î¥Ô¥¯¥»¥ëñ°Ì¤Î¹â¤µz¤Ï¡¢ 1.0 + 1.0/width¤Ç¤¹w¤Ï 1.0 + 1.0/height¤Ç¤¹¡£


GLSL¥·¥§¡¼¥À¥×¥í¥°¥é¥à


CG / HSL¥·¥§¡¼¥À¥×¥í¥°¥é¥à¤Î»ÈÍѤ˲䨤ơ¢OpenGL¥·¥§¡¼¥Ç¥£¥ó¥°¸À¸ì¡ÊGLSL¡Ë¥·¥§¡¼¥À¤òľÀܽñ¤­¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


¤·¤«¤·¡¢GLSL¤Î»ÈÍѤϡ¢Mac OS X¤äOpenGL ES 2.0¸ß´¹¤Î¥â¥Ð¥¤¥ë¥Ç¥Ð¥¤¥¹¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£¤¿¤¤¤Æ¤¤¤Î¾ì¹ç¡¢Unity¤Ï¡¢CG / HLSL¤òºÇŬ²½¤µ¤ì¤¿GLSL¤Ë¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡Ê¤³¤ì¤Ï¥â¥Ð¥¤¥ë¡¦¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¹Ô¤ï¤ì¡¢É¬Íפ˱þ¤¸¤Æ¥Ç¥¹¥¯¥È¥Ã¥×¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÍѤˡôpragma GLSL¤òµ­½Ò¤¹¤ë¤³¤È¤Ç¥ª¥ó¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡Ë¡£


GLSL¥¹¥Ë¥Ú¥Ã¥È


GLSL¥×¥í¥°¥é¥à¤Î¥¹¥Ë¥Ú¥Ã¥È¤Ï¡¢GLSLPROGRAM¤ÈENDGLSL¥­¡¼¥ï¡¼¥É¤Î´Ö¤Ë½ñ¤«¤ì¤Æ¤¤¤Þ¤¹


GLSL¤Ç¤Ï¡¢¥·¥§¡¼¥À´Ø¿ô¤Î¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤Ïmain()´Ø¿ô¤ÇÄêµÁ¤µ¤ì¤Þ¤¹¡£


Unity¤¬GLSL¥·¥§¡¼¥À¤ò¥í¡¼¥É¤¹¤ë¤È¤­¡¢³ÆGLSL¥¹¥Ë¥Ú¥Ã¥È¤Ç¡ôifdef VERTEX .. ¡ôendif¤È¡ôifdef¤ÎFRAGMENT .. ¡ôendif¤Î¡£ÄºÅÀ¥×¥í¥°¥é¥à¤È¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤ÎξÊý¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£


¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Ï¡¢.glslinc³ÈÄ¥»Ò¤ÇÄ󶡤µ¤ì¤ë UnityCG.glslinc¥Õ¥¡¥¤¥ë¤Ç¤¹¡£



¤½¤Î¾¡§¡¡Unity¤ËÆâ¢¤µ¤ì¤Æ¤¤¤ë¥·¥§¡¼¥À¤Î¥½¡¼¥¹¤Ë´Ø¤·¤Æ¤Ï¢­¤«¤é¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£

http://www.unity3d.com/support/resources/assets/built-in-shaders



¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎºîÀ®

¥é¥¤¥Æ¥£¥ó¥°¤È¤ÎÂÐÏÃ¥·¥§¡¼¥À¤ò½ñ¤¯¤³¤È¤ÏÊ£»¨¤Ç¤¹¡£¤½¤³¤Ë°Û¤Ê¤ë¥é¥¤¥È¤Î¼ïÎà¡¢°Û¤Ê¤ë¤Î±Æ¤Î¥ª¥×¥·¥ç¥ó¡¢°Û¤Ê¤ë¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹¡Ê¥Õ¥©¥ï¡¼¥É¤ª¤è¤ÓÃÙ±ä¥ì¥ó¥À¥ê¥ó¥°¡Ë¤Ï¡¢¥·¥§¡¼¥À¤Ï¤¹¤Ù¤Æ¤½¤ÎÊ£»¨¤µ¤ò½èÍý¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
unity¤Î¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Ç¤Ï¡¢Äã¥ì¥Ù¥ë¤ÎĺÅÀ/¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¥×¥í¥°¥é¥à¤ò»ÈÍѤ¹¤ë¤è¤ê¤âÅÀÅô¥·¥§¡¼¥À¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ï¤ë¤«¤ËÍÆ°×¤Ë¥³¡¼¥É¤òÀ¸À®¤¹¤ë¥¢¥×¥í¡¼¥Á¤È¤Ê¤ê¤Þ¤¹
¡£¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ËÆÈ¼«¤Î¸À¸ì¤Ï»ÈÍѤ·¤Þ¤»¤ó¡£¤¹¤Ù¤Æ¤Î¥³¡¼¥ÉÀ¸À®¤Ï¼ê¤Ç½ñ¤«¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó¡£CG / HLSL¤Ç¥·¥§¡¼¥À¥³¡¼¥É¤òµ­½Ò¤·¤Þ¤¹¡£


¤¤¤¯¤Ä¤«¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎÎã¤È¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Î¥«¥¹¥¿¥à¥é¥¤¥Æ¥£¥ó¥°¤ÎÎã¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£


¤É¤Î¤è¤¦¤Ëưºî¤¹¤ë¤Î¤«


ÆþÎϤȤ·¤ÆÉ¬Íפʤ¹¤Ù¤Æ¤ÎUV¤Þ¤¿¤Ï¥Ç¡¼¥¿¤ò¼õ¤±¼è¤ê¡¢ "¥µ¡¼¥Õ¥§¥¹µ¡Ç½"¤òÄêµÁ¤·¡¢SurfaceOutput½ÐÎϤËɬÍפÊÃͤòËþ¤¿¤·¤Þ¤¹¡£SurfaceOutput¤Ï¡¢´ðËÜŪ¤Ë¤Ï¥µ¡¼¥Õ¥§¥¹¤Î¥×¥í¥Ñ¥Æ¥£¡Ê¥¢¥ë¥Ù¥É¥«¥é¡¼¡¢Ë¡Àþ¡¢Êü¼Í¡¢¥¹¥Ú¥­¥å¥é¤Ê¤É¤Ç¤¹¡Ë¡£Cg / HLSL¤Ç¤³¤Î¥³¡¼¥É¤òµ­½Ò¤·¤Þ¤¹¡£
¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¥³¥ó¥Ñ¥¤¥é¤Ï¡¢É¬ÍפÊÃͤ¬ÆþÎϤµ¤ì¤Æ¤¤¤ë¤«¡¢½ÐÎϤÎÃͤÏÁ´¤ÆËþ¤¿¤µ¤ì¤Æ¤¤¤ë¤«¤òȽÊ̤·¤½¤Î¸å¤Ë¡¢
ĺÅÀ¤È¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¤òÀ¸À®¤·¤Þ¤¹¡¢Æ±Íͤ˥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹¤¬¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¤È¥Ç¥£¥Õ¥¡¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¤ËÃͤòÅϤ·¤Þ¤¹¡£



ɽÌÌ¥·¥§¡¼¥À¤Îɸ½à½ÐÎϤι½Â¤¡§



struct SurfaceOutput {
half3 Albedo;
half3 Normal;
half3 Emission;
half Specular;
half Gloss;
half Alpha;
};


¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎÎã


http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaderExamples.html


¥«¥¹¥¿¥à¥é¥¤¥Æ¥£¥ó¥°¤ÎÎã


http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaderLightingExamples.html


¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Î¥³¥ó¥Ñ¥¤¥ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ö


¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Ï¾¤Î¥·¥§¡¼¥À¤ÈƱ¤¸¤è¤¦¤ËCGPROGRAM..ENDCG¡¢¤ÎÆâÉô¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£
Áê°ãÅÀ¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£



  • SubShader¤ÎÆâ¦¤ËÇÛÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¢Pass¤Î¥Ö¥í¥Ã¥¯¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Ï Ê£¿ô¤ÎPass¤ò´Þ¤à¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤¹¡£

  • #pragma surface ¤òÍѤ¤¤Æ...¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£


#pragma surface¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£


 ¡¡¡¡¡¡#pragma surface surfaceFunction lightModel [optionalparams]

ɬÍפʥѥé¥á¡¼¥¿¡§



  • surfaceFunction -Cg´Ø¿ô¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¥³¡¼¥É¤ÇÄêµÁ¤µ¤ì¤Þ¤¹¡£

  • ´Ø¿ô¤Ï¡¢void surf (Input IN, inout SurfaceOutput o) ¤È¤¤¤Ã¤¿¥Õ¥©¡¼¥à¤¬É¬Í×¤ÇÆþÎϤϥ桼¥¶¤¬ÄêµÁ¤¹¤ë¹½Â¤ÂΤǤ¹¡£surfaceFunction¤Ë¤ÏǤ°Õ¤Î¥Æ¥¯¥¹¥Á¥ãºÂɸ¤È¥µ¡¼¥Õ¥§¥¹µ¡Ç½¤ÇɬÍפȤµ¤ì¤ë¼«Æ°ÊÑ¿ô¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

  • lightModel -»ÈÍѤ¹¤ë¾ÈÌÀ¥â¥Ç¥ë¡£Æâ¢¤Î¤â¤Î¤ÏLambert¡Ê³È»¶¡Ë¤ÈBlinnPhong¡Ê¶ÀÌ̡ˡ£

  • ¥«¥¹¥¿¥à¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë    ¤ò »²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


             http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaderLighting.html


¥ª¥×¥·¥ç¥ó¤Î¥Ñ¥é¥á¡¼¥¿¡§




  • alpha -¥¢¥ë¥Õ¥¡¥Ö¥ì¥ó¥É¥â¡¼¥É¡£È¾Æ©ÌÀ¥·¥§¡¼¥À¤Ë»ÈÍѤ·¤Þ¤¹¡£

  • alphatest¡§VariableName¤Ï -¥¢¥ë¥Õ¥¡¥Æ¥¹¥È¥â¡¼¥É¡£Æ©ÌÀ¥«¥Ã¥È¥¢¥¦¥È¥·¥§¡¼¥À¤Ë»ÈÍѤ·¤Þ¤¹¡£¥«¥Ã¥È¥ª¥ÕÃͤÎVariableName¤Ï¡¢floatÊÑ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

  • Vertex¡§VertexFunction -¥«¥¹¥¿¥àĺÅÀÊѹ¹µ¡Ç½¡£Îã¡§¼ùÈ饷¥§¡¼¥À¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • finalcolor¡§ColorFunction -¥«¥¹¥¿¥àºÇ½ªÅª¤Ê¿§¤ÎÊѹ¹µ¡Ç½¡£¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaderExamples.html

  • exclude_path¡§prepass¤Þ¤¿¤Ïexclude_path¡§forward -»ØÄꤵ¤ì¤¿ÉÁ²è¥Ñ¥¹¤òÀ¸À®¤·¤Þ¤»¤ó¡£

  • addshadow -¥·¥ã¥É¥¦¥­¥ã¥¹¥¿¡¼¤È¥³¥ì¥¯¥¿¡¼¤Î¥Ñ¥¹¤òÄɲä·¤Þ¤¹¡£°ìÈÌŪ¤Ë¥«¥¹¥¿¥àĺÅÀ¤ÎÊѹ¹¤Ç»ÈÍѤ¹¤ë¤Î¤Ç¡¢¤½¤Î±Æ¤Î¥­¥ã¥¹¥Æ¥£¥ó¥°¤Ï¡¢Ç¤°Õ¤Î¼ê³¤­¤ÎĺÅÀ¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¼èÆÀ¤·¤Þ¤¹¡£

  • dualforward -dual lightmaps ¤ò¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹¤Ç»ÈÍѤ·¤Þ¤¹¡£

  • fullforwardshadows -¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹¤Ç¤¹¤Ù¤Æ¤Î¥·¥ã¥É¥¦¥¿¥¤¥×¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Þ¤¹¡£

  • decal:add- ²Ã»»¥Ç¥«¡¼¥ë¥·¥§¡¼¥À¡ÊÎ㤨¤Ðterrain AddPass¡Ë¡£

  • decal:blend -ȾƩÌÀ¥Ç¥«¡¼¥ë¥·¥§¡¼¥À¡£

  • softvegetation¤Ï -¥½¥Õ¥È¥Ù¥¸¥Æ¡¼¥·¥ç¥ó¤¬¥ª¥ó¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Î¤ß¤¬¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

  • noambient¤Ï¡¢ -´Ä¶­¸÷¤ä ​​µåÌÌÄ´Ï¥饤¥È¤òŬÍѤ·¤Ê¤¤¡£

  • novertexlights¤Ï -¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¤ÇǤ°Õ¤ÎµåÌÌÄ´Ï´ؿô¤Þ¤¿¤ÏĺÅÀñ°Ì¤Î¥é¥¤¥È¤òŬÍѤ·¤Ê¤¤¡£

  • nolightmap -¤³¤Î¥·¥§¡¼¥À¤Ç¤Î¥é¥¤¥È¥Þ¥Ã¥×¤Î¥µ¥Ý¡¼¥È¤ò̵¸ú¤Ë¤·¤Þ¤¹¡Ê¥·¥§¡¼¥À¤Ï¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡Ë¡£

  • nodirlightmap¤Ï -¤³¤Î¥·¥§¡¼¥À¤Ç¤Î¥Ç¥£¥ì¥¯¥·¥ç¥ó¥é¥¤¥È¥Þ¥Ã¥×¤Î¥µ¥Ý¡¼¥È¤ò̵¸ú¤Ë¤·¤Þ¤¹¡Ê¥·¥§¡¼¥À¤¬¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡Ë

  • noforwardadd¤Ï -¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°Åº²Ã¥Ñ¥¹¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£

  • ¤Ò¤È¤Ä¤Î¥Ç¥£¥ì¥¯¥·¥ç¥Ê¥ë¥é¥¤¥È¤òºîÀ®¤·Â¾¤Î¤¹¤Ù¤Æ¤Î¥é¥¤¥È¤òĺÅÀñ°Ì¤Çper-vertex/SH¡ÊĺÅÀñ°Ì¤ÎSpherical Harmonics ¡áµåÌÌÄ´Ï´ؿô¤òÍѤ¤¤¿´Ä¶­¸÷¥Þ¥Ã¥Ô¥ó¥°)¤Ë³ä¤êÉÕ¤±¤Þ¤¹¡Ê¤¿¤¤¤Ø¤ó¥·¥§¡¼¥À¤¬¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡Ë

  • approxview¤Ï -Àµµ¬²½¤µ¤ì¤¿¥Ó¥å¡¼¤ÎÊý¸þ¤ò¥Ô¥¯¥»¥ëñ°Ì¤Ç¤Ê¤¯ÄºÅÀñ°Ì¤Ç·×»»¤·¤Þ¤¹¡£¤³¤ì¤Ï¹â®¤Ç¤¹¤¬¡¢¥«¥á¥é¤¬¥µ¡¼¥Õ¥§¥¹É½Ì̤˶á¤Å¤¯¤È¥Ó¥å¡¼¤ÎÊý¸þ¤¬´°Á´¤Ë¤ÏÀµ¤·¤¯¤Ê¤ê¤Þ¤»¤ó¡£

  • halfasview¤Ï -¥é¥¤¥Æ¥£¥ó¥°µ¡Ç½¤ÎÂå¤ï¤ê¤Ë¡¢¥Ó¥å¡¼Êý¸þ¤Ë¥Ï¡¼¥Õ¥Ù¥¯¥È¥ë¤òÅϤ·¤Þ¤¹¡£ÄºÅÀ¤´¤È¤Ë¥Ï¡¼¥ÕÊý¸þ¤¬·×»»¤µ¤ìÀµµ¬²½¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï®¤¤¤Ç¤¹¤¬´°Á´¤ËÀµ¤·¤¯¤Ï¤Ê¤ê¤Þ¤»¤ó¡£


Äɵ­¡§¡ôpragma debug¤òCGPROGRAM ÆâÉô¤Ë½ñ¤¯¤³¤È¤Ç¡¢¥³¥ó¥Ñ¥¤¥é¤ÏÀ¸À®¤µ¤ì¤¿Â¿¤¯¤Î¥³¥á¥ó¥È¥³¡¼¥É¤òÀÚ¤êÎ¥¤·¤Þ¤¹¡£¥·¥§¡¼¥À¥¤¥ó¥¹¥Ú¥¯¥¿¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¸å¥·¥§¡¼¥À¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£



¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎÆþÎϹ½Â¤



ÆþÎϹ½Â¤¤ÎÆþÎÏÉô¤Ï°ìÈÌŪ¤Ë¥·¥§¡¼¥À¤¬É¬ÍפȤ¹¤ë¥Æ¥¯¥¹¥Á¥ãºÂɸ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥Æ¥¯¥¹¥Á¥ãºÂɸ¤Ï ̾Á°¤òÉÕ¤±¤ëɬÍפ¬¤¢¤ê¡¢¡ÉUV¡É¥Æ¥¯¥¹¥Á¥ã̾¡Ê¤Þ¤¿¤ÏUV2¤ò»ØÄê¤Ç2ÈÖÌܤΥƥ¯¥¹¥Á¥ãºÂɸ¥»¥Ã¥È¤ò»ÈÍѤ¹¤ë¡Ë¡£



ÆþÎϹ½Â¤ÂÎ¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ëÄɲäÎÃÍ¡§



  • float3 VIEWDIR¤Ï -¥ê¥à¥é¥¤¥Æ¥£¥ó¥°Åù¡¢»ëº¹¸ú²Ì¤ò·×»»¤¹¤ë¤¿¤á¤Î¥Ó¥å¡¼¤ÎÊý¸þ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹

  • float4 COLOR-ĺÅÀñ°Ì¤Î¿§¤ÎÊä´Ö¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

  • float4 screenPos¤Ï -È¿¼Í¸ú²Ì¤Î¤¿¤á¤Î¥¹¥¯¥ê¡¼¥ó¥¹¥Ú¡¼¥¹ºÂɸ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£Î㤨¤ÐWetStreet¥·¥§¡¼¥À¤Ê¤É¡£

  • float3 worldPos¤Ï -¥ï¡¼¥ë¥É¶õ´Ö¤Î°ÌÃÖºÂɸ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

  • float3 worldRefl¤Ï -¥ï¡¼¥ë¥É¶õ´Ö¤ÎÈ¿¼Í¥Ù¥¯¥È¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤¬o.Normal¤Ë½ñ¤­¹þ¤ß¤ò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤¹¡£Îã¡§¥ê¥Õ¥ì¥¯¥È³È»¶¥·¥§¡¼¥À¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • float3 worldNormal¤Ï -¥ï¡¼¥ë¥É¶õ´Ö¤ÎË¡Àþ¥Ù¥¯¥È¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤¿¤À¤·¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤¬o.Normal¤Ë½ñ¤­¹þ¤ß¤ò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡£

  • float3 worldRefl¡£INTERNAL_DATA¤Ï -¥ï¡¼¥ë¥É¶õ´Ö¤ÎÈ¿¼Í¥Ù¥¯¥È¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤¬o.Normal¤Ë½ñ¤­¹þ¤à¾ì¹ç¤Ç¤¹¡£¥Ô¥¯¥»¥ëñ°Ì¤ÎË¡Àþ¥Þ¥Ã¥×¤Ë´ð¤Å¤¤¤ÆÈ¿¼Í¥Ù¥¯¥È¥ë¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¡ÊIN¡¢o.Normal¡ËWorldReflectionVector¡£Îã¡§¥ê¥Õ¥ì¥¯¥È¡¦¥Ð¥ó¥×¥·¥§¡¼¥À¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • float3 worldNormal¡£INTERNAL_DATA¤Ï -¥ï¡¼¥ë¥É¶õ´Ö¤ÎË¡Àþ¥Ù¥¯¥È¥ë¤¬´Þ¤Þ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤¬o.Normal¤Ë½ñ¤­¹þ¤à¾ì¹ç¤Ç¤¹¡£ ¥Ô¥¯¥»¥ëñ°Ì¤ÎË¡Àþ¥Þ¥Ã¥×¤Ë´ð¤Å¤¤¤Æ¡¢Ë¡Àþ¥Ù¥¯¥È¥ë¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢WorldNormalVector¤ò¡ÊIN¡¢o.Normal¡Ë


¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤ÎÎã




¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Î¥«¥¹¥¿¥à¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë


¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À½ñ¤­¹þ¤ß»þ¤Ë¡¢¥µ¡¼¥Õ¥§¥¹¤ÎÀ­¼Á¤òµ­½Ò¤·¤Æ¤¤¤ë¡Ê¥¢¥ë¥Ù¥É¡¢¿§¡¢Ë¡Àþ¡¢...¡Ë¤È¥é¥¤¥Æ¥£¥ó¥°¤ÎÁê¸ßºîÍѤϥ饤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ë¤è¤ê·×»»¤µ¤ì¤Þ¤¹¡£¥Ó¥ë¥È¥¤¥ó¤Î¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ï¥é¥ó¥Ð¡¼¥È¡Ê³È»¶¾ÈÌÀ¡Ë¤ÈBlinnPhong¡Ê¥¹¥Ú¥­¥å¥é¥é¥¤¥Æ¥£¥ó¥°¡Ë¡£


¥«¥¹¥¿¥à¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤ò»ÈÍѤ¹¤ë¤È¤­¤Ë¤Ï¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Ç¹Ô¤¦¤³¤È¤¬²Äǽ¤Ç¤¹¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎCG / HLSL´Ø¿ô¤ÎÁȤ߹ç¤ï¤»°Ê¾å¤Î²¿Êª¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£¥Ó¥ë¥È¥¤¥ó¥é¥ó¥Ð¡¼¥È¤ÈBlinnPhong¤Î¥â¥Ç¥ë¤Ï¡¢Lighting.cginc¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


windows¤Î¾ì¹ç ¡ÊUnity¥¤¥ó¥¹¥È¡¼¥ë¥Ñ¥¹ /Data/ CGIncludes / Lighting.cginc


Mac¤Î¾ì¹ç /Applications/Unity/Unity.app/Contents/CGIncludes/Lighting.cginc


¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤ÎÀë¸À


¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤ÏÄ̾ïLighting¤Ç»Ï¤Þ¤ë̾Á°¤ò»ý¤Ä¤¤¤¯¤Ä¤«¤Îµ¡Ç½¤Ç¤¹¡£¥·¥§¡¼¥À¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¤¤¤º¤ì¤«¤Ç¤É¤³¤Ç¤âÀë¸À¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£´Ø¿ô¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£



  1. half4 Lighting̾Á°¡ÊSurfaceOutput S¡¢half3 lightDir¡¢ harf atten¡Ë ¤³¤ì¤Ï¡¢

  2. ¥é¥¤¥È¥â¥Ç¥ë¤Î¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹»ÈÍÑ»þ¥Ó¥å¡¼Êý¸þ¤Ë°Í¸¤·¤Þ¤»¤ó¡£¡ÊÎ㤨¤Ð¡¢³È»¶¡Ë¡£

  3. half4 Lighting̾Á°¡ÊSurfaceOutput S¡¢half3 lightDir¡¢half3 ViewDir¡¢harf atten¡Ë ¥é¥¤¥È¥â¥Ç¥ë¤Î¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹»ÈÍÑ»þ¥Ó¥å¡¼Êý¸þ¤Ë°Í¸¤·¤Þ¤¹¡£

  4. half4 Lighting̾Á° _PrePass¡ÊSurfaceOutput s¡¢half4 light¡Ë ¤³¤ì¤Ï¥Ç¥£¥Õ¥¡¡¼¥É¥é¥¤¥Æ¥£¥ó¥°¥Ñ¥¹¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡£


¤¹¤Ù¤Æ¤Î´Ø¿ô¤òÀë¸À¤¹¤ëɬÍפ¬¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¾ÈÌÀ¥â¥Ç¥ë¤Ï¥Ó¥å¡¼¤ÎÊý¸þ¤ò»ÈÍѤ·¤Æ¤â¤·¤Ê¤¯¤Æ¤â¤¤¤¤¤Ç¤¹¡£¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ï¡¢¥Ç¥£¥Õ¥¡¡¼¥É¥é¥¤¥Æ¥£¥ó¥°¤Ç¤Ï¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤¬Æ°ºî¤·¤Ê¤¤¾ì¹ç¤Ï_PrePassµ¡Ç½¤òÀë¸À¤·¤Æ¤¤¤Ê¤¤¤È»×¤¤¤Þ¤¹ ¡¡¤½¤ì¤ò»ÈÍѤ¹¤ë¤¹¤Ù¤Æ¤Î¥·¥§¡¼¥À¤Ï¥Õ¥©¥ï¡¼¥É¥ì¥ó¥À¥ê¥ó¥°¤Î¤ß¤òžÁ÷¤¹¤ë¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¥Ç¥³¡¼¥É¤ÎÊý¸þ¥é¥¤¥È¥Þ¥Ã¥×¤Ï¡¢¥Õ¥©¥ï¡¼¥É¤ª¤è¤Ó¥Ç¥£¥Õ¥¡¡¼¥É¤Î¥é¥¤¥Æ¥£¥ó¥°µ¡Ç½¤ÈƱÍͤÎÊýË¡¤Ç¤¤¤¯¤Ä¤«¤Î¾õ¶·¤Ç¥«¥¹¥¿¥Þ¥¤¥º¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¢¤Ê¤¿¤Î¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤¬¥Ó¥å¡¼Êý¸þ¤Ë°Í¸¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë±þ¤¸¤Æ°Ê²¼¤Î´Ø¿ô¤Î¤¤¤º¤ì¤«¤ò»ÈÍѤ·¤Þ¤¹¡£Î¾´Ø¿ô¤Ï¼«Æ°Åª¤Ë¥Õ¥©¥ï¡¼¥É¤ª¤è¤Ó¥Ç¥£¥Õ¥¡¡¼¥É¤Î¥ì¥ó¥À¥ê¥ó¥°¥Ñ¥¹¤ò½èÍý¤·¤Þ¤¹¡£



  1. half4 Lighting̾Á° _DirLightmap¡ÊSurfaceOutput S¡¢fixed4 color¡¢fixed4 scale¡¢bool surfFuncWritesNormal¡Ë ¤³¤ì¤Ï¥Ó¥å¡¼Êý¸þ¤Ë°Í¸¤·¤ÆÉ½¼¨¡ÊÎ㤨¤Ð¡¢³È»¶¡Ë¤µ¤ì¤Ê¤¤¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

  2. half4 Lighting̾Á° _DirLightmap¡ÊSurfaceOutput S¡¢fixed4 color¡¢fixed4 scale¡¢half3 ViewDir¡¢bool surfFuncWritesNormal¡¢out half3 specColor¡Ë ¤³¤ì¤Ï¡¢¥Ó¥å¡¼¤ÎÊý¸þ°Í¸¤·¤Æ¤¤¤ë¥é¥¤¥Æ¥£¥ó¥°¥â¥Ç¥ë¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£



http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaderLightingExamples.html




¥Ð¡¼¥Æ¥Ã¥¯¥¹¥·¥§¡¼¥À¤ª¤è¤Ó¥Õ¥é¥°¥á¥ó¥È¥·¥§¡¼¥À¤òºîÀ®


ShaderLab¤Î¥·¥§¡¼¥À¤ÏÊ̤Υ°¥é¥Õ¥£¥Ã¥¯¥¹¥Ï¡¼¥É¥¦¥§¥¢¤Î¤¿¤á¤ÎÊ£¿ô¤Î¥·¥§¡¼¥À¤Î¼ÂÁõ¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¸ÇÄ굡ǽ¥Ï¡¼¥É¥¦¥§¥¢¤Î¾õÂ֤ʤɤòÀßÄꤷ¡¢¥Þ¥Æ¥ê¥¢¥ë¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¤Ëɽ¼¨¤µ¤ì¤ë¥×¥í¥Ñ¥Æ¥£¤òµ­½Ò¤·¤Þ¤¹¡£¼ÂºÝ¤Î¥×¥í¥°¥é¥Þ¥Ö¥ë¥·¥§¡¼¥À-ĺÅÀ¥×¥í¥°¥é¥à¤È¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤Ê¤É¤¬-Á´ÂΤÎShaderLab¤Î"¥·¥§¡¼¥À"¤È¤¤¤¦¥³¥ó¥»¥×¥È¤Î¤Û¤ó¤Î°ìÉô¤Ç¤¹¡£
¥·¥§¡¼¥À¥Á¥å¡¼¥È¥ê¥¢¥ë´ðËÜŪ¤ÊƳÆþ¤Î¤¿¤á¤Ë¡£¤³¤³¤Ç¤Ï¡¢Äã¥ì¥Ù¥ë¤Î¥Ï¡¼¥É¥¦¥§¥¢¥·¥§¡¼¥À¤È¸Æ¤Ö¥·¥§¡¼¥À¥×¥í¥°¥é¥à¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£


¤¢¤Ê¤¿¤¬¥é¥¤¥Æ¥£¥ó¥°¤È¤ÎÂÐÏÃ¥·¥§¡¼¥À¤òºîÀ®¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤Î¥Þ¥Ë¥å¥¢¥ë¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¡£¤³¤Î¥Ú¡¼¥¸¤Î»Ä¤ê¤ÎÉôʬ¡ÊÎ㤨¤Ð¡¢ÆÃ¼ì¸ú²Ì¡¢Unity¤Î¥é¥¤¥È¤ÈÁê¸ßºîÍѤ·¤Ê¤¤¥·¥§¡¼¥À¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹²èÁü¸ú²Ì¤Ê¤É¡Ë

¥·¥§¡¼¥À¥×¥í¥°¥é¥à¤Ï¡¢¤É¤³¤«¤ÎÆâÉô¤Ë¡¢¥·¥§¡¼¥À¥Æ¥­¥¹¥È¤Î"¥¹¥Ë¥Ú¥Ã¥È"¤òËä¤á¹þ ​​¤à¤³¤È¤Ë¤è¤ê¡¢CG / HLSL¸À¸ì¤Ç½ñ¤«¤ì¤¿¥Ñ¥¹¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤½¤ì¤ÏÄ̾°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


 Pass {
// ... the usual pass state setup ...
CGPROGRAM
// compilation directives for this snippet, e.g.:
#pragma vertex vert
#pragma fragment frag
// the Cg code itself
ENDCG
// ... the rest of pass setup ...
}

Cg¤Î¥¹¥Ë¥Ú¥Ã¥È¡ÊÁÞÆþ¥Æ¥­¥¹¥È¡Ë


C£ç¥×¥í¥°¥é¥à¤Î¥¹¥Ë¥Ú¥Ã¥È¤Ï¡¢CGPROGRAM¤ÈENDCG¤Î´Ö¤Ë½ñ¤«¤ì¤Þ¤¹¡£


¥¹¥Ë¥Ú¥Ã¥È¤Î³«»Ï»þ¤Ë¥³¥ó¥Ñ¥¤¥ë¡¦¥Ç¥£¥ì¥¯¥Æ¥£¥Ö(»Ø¼¨)¤Ï¡ôpragmaʸ¤ÇÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Unity¤Ë¤è¤Ã¤ÆÇ§¼±¤µ¤ì¤ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£



  • ¡ôpragma £ö£å£ò£ô£å£ø name -£î£á£í£å¤Ï¥Ð¡¼¥Æ¥Ã¥¯¥¹¥×¥í¥°¥é¥à¤ò¼¨¤·¤Þ¤¹¡£

  • ¡ôpragma fragment name -name¤Ï¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤ò¼¨¤·¤Þ¤¹¡£

  • ¤Î¡ôpragma fragmentoption option-Äɲ媥ץ·¥ç¥ó¤ÏOpenGL¤Î¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤¹¡£ARB¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤Î»ÈÍѲÄǽ¤Ê¥ª¥×¥·¥ç¥ó¤Î¥ê¥¹¥È¤Î»ÅÍͤò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£http://www.opengl.org/registry/specs/ARB/fragment_program.txt

  • ¤³¤Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÏÈóOpenGL¤ò¥¿¡¼¥²¥Ã¥È¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Þ¤¿¤ÏĺÅÀ¥×¥í¥°¥é¥à¤Ë¤Ï±Æ¶Á¤òÍ¿¤¨¤Þ¤»¤ó¡£

  • ¡ôpragma target name -¥·¥§¡¼¥À¥¿¡¼¥²¥Ã¥È¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£¥·¥§¡¼¥À¥¿¡¼¥²¥Ã¥È¾ÜºÙ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • ¡ôpragma only_renderers space sepatratesd names-¤Î¤ßÍ¿¤¨¤é¤ì¤¿¥ì¥ó¥À¥é¤Î¤¿¤á¤Ë¥·¥§¡¼¥À¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥·¥§¡¼¥À¤Ï¡¢¤¹¤Ù¤Æ¤Î¥ì¥ó¥À¥é¡¼ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥ì¥ó¥À¥é¾ÜºÙ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • ¤Î¡ôpragma exclude_renderers space separated names -»ØÄꤵ¤ì¤¿¥ì¥ó¥À¥é¤Î¤¿¤á¤Ë¥·¥§¡¼¥À¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥·¥§¡¼¥À¤Ï¡¢¤¹¤Ù¤Æ¤Î¥ì¥ó¥À¥é¡¼ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥ì¥ó¥À¥é¡¼¾ÜºÙ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

  • http://docs.unity3d.com/Documentation/Components/SL-ShaderPrograms.html#renderers

  • ¡ôpragma glsl -¥Ç¥¹¥¯¥È¥Ã¥×OpenGL¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÍѤΥ·¥§¡¼¥À¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¡¢¡ÊÂå¤ï¤ê¤Ë¡¢ARBĺÅÀ/¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¤Ç¤Î¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Î¡ËGLSL¤ËC£ç / HLSL¤ËÊÑ´¹¤¹¤ë


³Æ¥¹¥Ë¥Ú¥Ã¥È¤Ï¡¢¥Ð¡¼¥Æ¥Ã¥¯¥¹¥×¥í¥°¥é¥à¡¢¥Õ¥é¥°¥á¥ó¥È¥×¥í¥°¥é¥à¡¢¤Þ¤¿¤Ï¤½¤ÎξÊý¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¡ôpragma vertex¤Þ¤¿¤Ï¡ôpragma fragment ¤Þ¤¿¤Ï¤½¤ÎξÊý¤ÏɬÍפ˱þ¤¸¤Æ»Ø¼¨¤µ¤ì¤Þ¤¹¡£




¥Ù¥¯¥È¥ë·×»»¤Î´ðËÜ



no title


¥Ù¥¯¥È¥ë¤Ïvector¡Ê£ø¡¤£ù¡¤£ú¡Ë¤Çɽ¸½¤µ¤ì¤ë¤¢¤ëºÂɸ¤«¤é¤¢¤ëºÂɸ¤Þ¤Ç¤Îº¹Ê¬¤Ç¡¢Êý¸þ¤ÈŤµ¤òɽ¸½¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
¥Ù¥¯¥È¥ë¤Ï¹çÀ®¤Ç¤­¾å¿Þ¤Î¤è¤¦¤Ë¥Ù¥¯¥È¥ëA¤È¥Ù¥¯¥È¥ëB¤ò¹çÀ®¤·¤¿¥Ù¥¯¥È¥ëA+B¤È¤·¤Æ°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£



no title



¥Ù¥¯¥È¥ë¤ÏŤµ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢Êý¸þ¤òɽ¸½¤·¤¿¤¤¤È¤­Â礭¤µ¡ÊŤµ¡Ë¤ò»ý¤Ã¤Æ¤¤¤ë¤È°·¤¤¤Ë¤¯¤¤¤Î¤ÇÂ礭¤µ¤¬£±¤Îñ°Ì¥Ù¥¯¥È¥ë¤Ë¤·¤Æ°·¤¤¤Þ¤¹¡£
¤³¤ì¤òÀµµ¬²½¡Ênormalize)¤È¸Æ¤ó¤Ç ¥·¥§¡¼¥À¤Î´Ø¿ô¤Ç¤Ïnormalize(Vector¡Ë¤ò»ÈÍѤ·¤Þ¤¹¡£



no title



¥²¡¼¥à¤Ç¤è¤¯»È¤ï¤ì¤ë·×»»¤ËÆâÀѤ¬¤¢¤ê¤Þ¤¹¡££²¤Ä¤Î¸òº¹¤·¤¿¥Ù¥¯¥È¥ë¤ò³Ý¤±¤¿¤â¤Î¤¬ÆâÀѤÇCos¦È¤ÎÃͤò¤È¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Ê¿¹Ô¤Ê¾ì¹ç£±Ä¾³Ñ¤Î¾ì¹ç£°¤ò¼è¤ê¤Þ¤¹¡£



¥·¥§¡¼¥À´Ø¿ô¤Ïdot(a,b¡Ë¤ò»ÈÍѤ·¤Þ¤¹¡£³°ÀѤÏcross(a,b)


¥Ù¥¯¥È¥ë¤ÎÆâÀѤª¤è¤Ó³°ÀѤò¤É¤Î¤è¤¦¤Ë¥²¡¼¥à¤Ç»ÈÍѤ¹¤ë¤«¤ÎÎã¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£


¥Ù¥¯¥È¥ëÆâÀѤγµÍ×





¿Þ¤Î¤è¤¦¤Ëa¥Ù¥¯¥È¥ë¤òb¥Ù¥¯¥È¥ë¤ØÅê±Æ¤·¤¿¥Ù¥¯¥È¥ëa'¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£

¤³¤Îa'¤ÎŤµ¤Ëb¥Ù¥¯¥È¥ë¤ÎŤµ¤ò¤«¤±¤¿Ãͤ¬ÆâÀѤÎÂ礭¤µ¤Ç¤¹¡£

¤¿¤À¤·£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Æß³Ñ¤Ç¤¢¤ì¤ÐÆâÀѤϥޥ¤¥Ê¥¹Ãͤˤʤê¤Þ¤¹¡£

£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Ä¾³Ñ¤Î»þ¤ÏÆâÀѤÏ0¤Ç¤¹¡£


ÆâÀѤÎÍÑÅÓ


¥²¡¼¥à¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤Ï¥Ù¥¯¥È¥ë¤ÎÆâÀѤò¼¡¤Î¤è¤¦¤ÊÍÑÅӤ˻Ȥ¤¤Þ¤¹¡£

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Ä¾¸ò¤¹¤ë¤«

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Ê¿¹Ô¤«

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤Î¸þ¤­(±Ô³Ñ¡¢Æß³Ñ¤«¤É¤¦¤«)ȽÄê

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤Î³ÑÅÙ

¡¦ÅÀ¤¬Ê¿Ì̤Îɽ¦¡¢Î¢Â¦¤É¤Á¤é¤Ë¤¢¤ë¤«È½Äê

¡¦Ê¿Ì̾å¤ËÅÀ¤¬¤¢¤ë¤«

¡¦ÊÒÊý¤Î¥Ù¥¯¥È¥ë¤ò¤â¤¦ÊÒÊý¤Ø¼Í±Æ¤·¤¿¥Ù¥¯¥È¥ë¤Î·×»»


¥Ù¥¯¥È¥ë³°ÀѤγµÍ×

³°ÀѤò¹Ô¤¦¤È¥Ù¥¯¥È¥ëa,b¤Ëľ¹Ô¤¹¤ë¥Ù¥¯¥È¥ë¤¬ºî¤é¤ì¤Þ¤¹¡£

¤½¤Î¤È¤­¤Î¥Ù¥¯¥È¥ë¤ÎŤµ¤Ï¡¢¥Ù¥¯¥È¥ëa,b¤ÇÊ¿¹Ô»ÍÊÕ·Á¤òºî¤Ã¤¿¤È¤­¤ÎÌÌÀѤòɽ¤·¤Þ¤¹¡£

¿Þ¤Î¤è¤¦¤Ë¤«¤±¤ë½çÈ֤ˤè¤Ã¤ÆÆÀ¤é¤ì¤ë¥Ù¥¯¥È¥ë¤Î¸þ¤­¤¬ÊѤï¤ê¤Þ¤¹¡£


³°ÀѤÎÍÑÅÓ

¥²¡¼¥à¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤Ï¥Ù¥¯¥È¥ë¤Î³°ÀѤò¼¡¤Î¤è¤¦¤ÊÍÑÅӤ˻Ȥ¤¤Þ¤¹¡£

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤Ë¿âľ¤Ê¥Ù¥¯¥È¥ë¤òµá¤á¤ë¡£

¡¦¥Ý¥ê¥´¥ó¤Î¸þ¤­(Ë¡Àþ¥Ù¥¯¥È¥ë)¤òµá¤á¤ë¡£

¡¦£²¤Ä¤Î¥Ù¥¯¥È¥ë¤¬½ê°¤¹¤ëÊ¿Ì̤ˤª¤¤¤Æº¸±¦¤Î°ÌÃÖ´Ø·¸¤òÃΤë

¡¦Ê¿Ì̾å¤Î»°³Ñ·Á¤ÈÅÀ¤ÎÆâ³°È½Äê

¡¦¥Ý¥ê¥´¥ó¤ÎÌÌÀѤò·×¤ë

¡¦Ê¿Ì̾å¤ÎÊÄÎΰè¤ÎÌÌÀѤò·×¤ë

¡¦Ê¿Ì̾å¤ÎÊÄÎΰè¤Î¸þ¤­(»þ·×²ó¤ê¤«¡¢È¿»þ·×²ó¤ê)

http://www.sousakuba.com/Programming/gs_gaiseki.html


¥Þ¥Æ¥ê¥¢¥ë¤Î¥·¥§¡¼¥À¡¼¤Ç¤Î·×»»Îã



no title


no title



L¡§LightDirection¡Ê¸÷¸»Êý¸þ¤Î¥Ù¥¯¥È¥ë¡Ë
V:ViewDirection(»ëÀþÊý¸þ¡á¥«¥á¥éÊý¸þ¤Î¥Ù¥¯¥È¥ë¡Ë
H:HarfVector(¥Ï¡¼¥Õ¥Ù¥¯¥È¥ë¡á¥Ý¥ê¥´¥óÌ̤ÎË¡Àþ¤È¥é¥¤¥ÈÊý¸þL¤ÎÃæ´Ö¤Ë¸þ¤«¤¦¥Ù¥¯¥È¥ë¡Ë
N:Normal¡Ê¥Ý¥ê¥´¥óÊ¿Ì̤ÎË¡ÀþÊý¸þ¡Ë
Shininess¡§(¸÷ÂôÀ®Ê¬¤Î¾è¿ô¡Ë
La:LightAmbient¡Ê¥é¥¤¥È¤Î´Ä¶­¸÷À®Ê¬¡Ë
Ld:LightDiffuse¡Ê¥é¥¤¥È¤Î¥Ç¥Õ¥å¡¼¥ºÀ®Ê¬¡Ë
Ls¡§LightSpecular(¥é¥¤¥È¤Î¥¹¥Ú¥­¥å¥é¡¼À®Ê¬¡Ë
Lo=¡²Color¡Ê¥Þ¥Æ¥ê¥¢¥ë¥«¥é¡¼¡Ë
Lo(s) ¡á¡²Speculer¡Ê¥Þ¥Æ¥ê¥¢¥ë¤Î¥¹¥Ú¥­¥å¥é¡Ë


ĺÅÀ¥·¥§¡¼¥À¤Ç¤ÎÎã¤Ç¤¹ ´Ø¿ô¤Çưºî¤¬¤ï¤«¤é¤Ê¤¤²Õ½ê¤ÏHLSL¤ÎÂбþɽ¤òUnity¤Î¥Ó¥ë¥È¥¤¥ó´Ø¿ô¤Ï"UnityCG.cginc"¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¸¡¾Ú¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
v2f¤Ïstruct¤ÇÄêµÁ¤µ¤ì¤¿¹½Â¤ÂΤǤ¹¡£¹½Â¤ÂÎ̾¡Éo¡É¤ÇÄêµÁ¤µ¤ì¤ëÃͤ¬v2f·¿¤ÇĺÅÀ¥·¥§¡¼¥À¤ËÌá¤ê¤Þ¤¹


v2f vert( appdata_base i)
{
v2f o;
o.position = mul( glstate.matrix.mvp, i.vertex );
float3 n =mul(glstate.matrix.invtransview[0],float4(i.normal,1));
float LdotN=saturate( dot( glstate.light[0].position,n));
o.color = glstate.lightmodel.ambient*_Color
o.color += LdotN * _Color * glstate.light[0].diffuse;

float3 L = ObjSpaceLightDir(i.vertex);
float3 V = ObjSpaceViewDir( i.vertex);
float3 H = normalize(L + V );

float NdotH = dot(i.normal , H);
o.color += _Specular * pow(NdotH,_Shiniess *128);
return o;
}


http://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_shading_model

http://ja.wikipedia.org/wiki/Phong%E3%81%AE%E5%8F%8D%E5%B0%84%E3%83%A2%E3%83%87%E3%83%AB

http://es.scribd.com/doc/90634580/109/The-Blinn-Phong-Shaders

http://www.arcsynthesis.org/gltut/Illumination/Tut11%20BlinnPhong%20Model.html


http://asura.iaigiri.com/OpenGL/gl28.html



¡ü¥¹¥¯¥ê¥×¥È¤«¤é¥·¥§¡¼¥À¡¼¤Ø¤Î¥¢¥¯¥»¥¹

¥·¥§¡¼¥À¤Ë¥¢¥¯¥»¥¹¤¹¤ë¾ì¹ç ºÇ½é¤Ë
renderer.material.shader¡áShader.Find( "¥·¥§¡¼¥À¤Î̾Á°" );
¤ò»ÈÍѤ·¤Æ¤É¤Î¥·¥§¡¼¥À¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤«¤òÄêµÁ¤·¤Þ¤¹¡£
¥ª¥Ö¥¸¥§¥¯¥È¤Ëmaterial¤¬Ê£¿ô»ÈÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¤Î¤Ç¤³¤ì¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£
¢¨»ÈÍѤµ¤ì¤Æ¤¤¤ë¥·¥§¡¼¥À̾¥×¥í¥Ñ¥Æ¥£¤¬¤ï¤«¤é¤Ê¤¤¾ì¹ç¥·¥§¡¼¥À¥Õ¥¡¥¤¥ë¤òÄ´¤Ù¤Æ¤âÎɤ¤¤Ç¤¹¤¬
¥¢¥Ë¥á¡¼¥·¥ç¥ó¥¦¥£¥ó¥É¥¦¤ò³«¤¤¤Æ¥Þ¥Æ¥ê¥¢¥ë¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¥­¡¼¤Î̾Á°¤òÄ´¤Ù¤Æ¤âÎɤ¤¤Ç¤¹¡£
¥·¥§¡¼¥À¤Ë¥×¥í¥Ñ¥Æ¥£¤¬Â¸ºß¤¹¤ë¤«Ì䤤¹ç¤ï¤»¤ë¤Ë¤ÏHasProperty¤ò»ÈÍѤ·¤Æ
renderer.material.HasProperty("¥×¥í¥Ñ¥Æ¥£Ì¾")¡¡¤È¤·¤Þ¤¹Ìá¤êÃͤÏboolean·¿¤Ç¤¹¡£

Îã¡§¥·¥§¡¼¥À¤Ë¥Õ¥í¡¼¥È·¿¤ÎÃͤòÀßÄꤹ¤ë¾ì¹ç

function Start () {   // ¡ÉGlossy ¡É¤È¤¤¤¦¥·¥§¡¼¥À¤òõ¤·¤Æ¥Þ¥Æ¥ê¥¢¥ë¤ËÀßÄꤷ¤Þ¤¹

    renderer.material.shader = Shader.Find(" Glossy");
}

function Update () {
//ÃÍShininess¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¡¡¤³¤³¤Ç¤Ïtime¤È1.0¤Î´Ö¤ò±ýÉü¤µ¤»¤Æ¤¤¤Þ¤¹
var shininess : float =
Mathf.PingPong (Time.time, 1.0);
renderer.material.SetFloat( "_Shininess", shininess );
}

¥Þ¥Æ¥ê¥¢¥ë¥¯¥é¥¹¤Î¥á¥ó¥Ð


Variables
shader:»ÈÍѤµ¤ì¤Æ¤¤¤ë¥Þ¥Æ¥ê¥¢¥ë¤ËÀßÄꤵ¤ì¤¿¥·¥§¡¼¥À.
color:¥á¥¤¥ó¥Þ¥Æ¥ê¥¢¥ë¤Î¥«¥é¡¼.
mainTexture:¥á¥¤¥ó¥Þ¥Æ¥ê¥¢¥ë¤Î¥Æ¥¯¥¹¥Á¥ã.
mainTextureOffset:¥á¥¤¥ó¥Æ¥¯¥¹¥Á¥ã¤Î¥ª¥Õ¥»¥Ã¥È.
mainTextureScale:¥á¥¤¥ó¥Æ¥¯¥¹¥Á¥ã¤Î¥¹¥±¡¼¥ë.
passCount:¸½ºß»ÈÍѤ·¤Æ¤¤¤ë¥Þ¥Æ¥ê¥¢¥ë¤Î¥Ñ¥¹¿ô¼èÆÀ(Read Only)
renderQueue: ¸½ºß¤Î¥Þ¥Æ¥ê¥¢¥ë¤Î¥ì¥ó¥À¡¼¥­¥å¡¼¤òÀßÄꤹ¤ë¡Êint·¿¡Ë


Constructors

Material:Text¤Ëshader¤ÎËÜÂΤòµ­½Ò¤·¤Ærenderer.material = new Material( shaderText );¤Ç¥Þ¥Æ¥ê¥¢¥ë¤ò¥Æ¥ó¥Ý¥é¥ê¤È¤·¤Æ°·¤¨¤ë¡£Íפ¹¤ë¤Ë¥¹¥¯¥ê¥×¥È¤«¤é¥Þ¥Æ¥ê¥¢¥ë¤ò°ì»þŪ¤ËÀ¸À®¤Ç¤­¤Þ¤¹¡£


Functions
SetColor:»ØÄꤷ¤¿¥«¥é¡¼¤ÎÃͤò¥»¥Ã¥È¤·¤Þ¤¹.
GetColor:»ØÄꤷ¤¿¥«¥é¡¼¤«¤éÃͤò¼èÆÀ¤·¤Þ¤¹.
SetVector:»ØÄꤷ¤¿¥Ù¥¯¥È¥ëÃͤËÃͤò¥»¥Ã¥È¤·¤Þ¤¹.
GetVector¡§»ØÄꤷ¤¿¥Ù¥¯¥È¥ëÃͤ«¤éÃͤò¼èÆÀ¤·¤Þ¤¹.
SetTexture:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¥×¥í¥Ñ¥Æ¥£¤Ë¥Æ¥¯¥¹¥Á¥ã¤ò¥»¥Ã¥È¤·¤Þ¤¹.
GetTexture:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¥×¥í¥Ñ¥Æ¥£¤«¤é¥Æ¥¯¥¹¥Á¥ã¤ò¼èÆÀ¤·¤Þ¤¹¡ÊÊÖ¤êÃͤÏtexture·¿¡Ë
SetTextureOffset:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¤Î¥ª¥Õ¥»¥Ã¥ÈÊѰ̤òÍ¿¤¨¤Þ¤¹ °ÜưÎ̤Ïvector£²·¿.
GetTextureOffset:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¤Î¥ª¥Õ¥»¥Ã¥ÈÊѰ̤ò¼èÆÀ¤·¤Þ¤¹.
SetTextureScale:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¤Ë¥¹¥±¡¼¥ëÃͤòÍ¿¤¨¤Þ¤¹ .
GetTextureScale:»ØÄꤷ¤¿¥Æ¥¯¥¹¥Á¥ã¤«¤é¥¹¥±¡¼¥ëÃͤò¼èÆÀ¤·¤Þ¤¹ .
SetMatrix:¥·¥§¡¼¥À¡¼¤Ë¥Þ¥È¥ê¥Ã¥¯¥¹ÊÑ´¹¹ÔÎó¤ò¥»¥Ã¥È¤·¤Þ¤¹.
GetMatrix:¥·¥§¡¼¥À¤«¤é¥Þ¥È¥ê¥Ã¥¯¥¹ÊÑ´¹¹ÔÎó¤ò¼èÆÀ¤·¤Þ¤¹.
SetFloat:»ØÄꤷ¤¿ÃÍ¤Ë¥Õ¥í¡¼¥È·¿¤ÎÃͤò¥»¥Ã¥È¤·¤Þ¤¹.
GetFloat:»ØÄꤷ¤¿Ãͤ«¤é¥Õ¥í¡¼¥È·¿¤ÎÃͤò¼èÆÀ¤·¤Þ¤¹.
HasProperty:¥·¥§¡¼¥À¤Ç»ØÄꤷ¤¿Ì¾Á°¤Î¥×¥í¥Ñ¥Æ¥£¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¤«Ì䤤¹ç¤ï¤»¤Þ¤¹.
GetTag:¥·¥§¡¼¥À¤«¤é¥¿¥°¤ò¼èÆÀ¤·¤Þ¤¹ ¡ÊÊÖ¤êÃͤÏString·¿¡Ë
Lerp:£²¤Ä¤Î¥Þ¥Æ¥ê¥¢¥ë¤Î̾Á°¤È¥ê¡¼¥×ÃͤòÀßÄꤹ¤ë¤³¤È¤Ç¥Þ¥Æ¥ê¥¢¥ë¤ò¥Ö¥ì¥ó¥É¤·¤Þ¤¹.
SetPass:Activate the given pass for rendering.
CopyPropertiesFromMaterial:¾¤Î¥Þ¥Æ¥ê¥¢¥ë¤«¤é¸½ºß¤Î¥Þ¥Æ¥ê¥¢¥ë¤Ë¥×¥í¥Ñ¥Æ¥£¤ò¥³¥Ô¡¼¤·¤Þ¤¹.


Äɵ­¡§´ØÏ¢¤·¤Æ¡É¥Æ¥¯¥¹¥Á¥ã¤Î²óž¡É¤Ç¸¡º÷¤¬¤¢¤ê¤Þ¤·¤¿¤Î¤Ç ¥µ¥ó¥×¥ë¤òºÜ¤»¤Æ¤ª¤­¤Þ¤¹¡£


¢£MatrixRotation ¥µ¥ó¥×¥ë


http://docs.unity3d.com/Documentation/ScriptReference/Material.SetMatrix.html



var rotateSpeed = 30;
var texture : Texture;

function Start() {

var m : Material = new Material (
"Shader \"Rotating Texture\" {" +
"Properties { _MainTex (\"Base\", 2D) = \"white\" {} }" +
"SubShader {" +
" Pass {" +
" Material { Diffuse (1,1,1,0) Ambient (1,1,1,0) }" +
" Lighting On" +
" SetTexture [_MainTex] {" +
" matrix [_Rotation]" +
" combine texture * primary double, texture" +
" }" +
" }" +
"}" +
"}"
);
m.mainTexture = texture;
renderer.material = m;
}

function Update() {

var rot = Quaternion.Euler (0, 0, Time.time * rotateSpeed);
var m = Matrix4x4.TRS (Vector3.zero, rot, Vector3(1,1,1) );
renderer.material.SetMatrix ("_Rotation", m);
}


¥Þ¥È¥ê¥¯¥¹¤Î¥È¥é¥ó¥¹¥Õ¥©¡¼¥à


TRS (pos : Vector3, q : Quaternion, s : Vector3) : Matrix4x4


¿·µ¬¤Ë¥Þ¥Æ¥ê¥¢¥ë¤òÀ¸À®¤·¤ÆUpDateʸ¤ÎÃæ¤ÇMatrix¤Ë²óžÀ®Ê¬¤òÍ¿¤¨¤Æ_Rotation¤ËÃͤòÀßÄꤷ¤Þ¤¹¡£TRS´Ø¿ô¤Ï¡Ê°Üư¡¢²óž(Quartterinion),¥¹¥±¡¼¥ë¡Ë¤òÀßÄꤹ¤ë¤³¤È¤ÇMatrix¤ËÃͤòÊÖ¤·¤Þ¤¹¡£¥Þ¥È¥ê¥Ã¥¯¥¹ÊÑ´¹¤Î´ðËܤȤʤëÊÑ´¹¹ÔÎó¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£



no title
no title
no title



¥Þ¥È¥ê¥Ã¥¯¥¹ÊÑ´¹¤ò¥·¥§¡¼¥À¤ÎÃæ¤Ç¤â¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


Îã¡§
void surf (Input IN, inout SurfaceOutput o) {

¡¡¡¡ float4 oColor;

¡¡¡¡ float2 UV;

UV =IN.uv_MainTex;

float4 sine = sin(_Time*_StretchTime);
float4 cosine = cos(_Time*_StretchTime);
pulsateMatrix._m00 = pulsateMatrix._m11 = cosine;
pulsateMatrix._m10 = -sine;
pulsateMatrix._m01 = sine;

float4 temp = float4 (UV.x, UV.y, 0, 0);
temp = mul(pulsateMatrix,temp);

UV.x = temp.x;
UV.y = temp.y;

oColor = tex2D(_MainTex, UV);
o.Albedo = oColor.rgb;
o.Alpha = oColor.a
}


Àè¤ËÀâÌÀ¤·¤¿Ä̤ê4¡ß£´¹ÔÎó¤Î¥á¥ó¥Ð¤ËÊÑ´¹¤Î¤¿¤á¤Î»°³Ñ´Ø¿ô¤òËä¤á¤³¤à¤Î¤Ç£ú¼´²óž¤Î¹ÔÎó¤ò
»ÈÍѤ·¤Æ£ø¡¤£ù¤ÎÃͤòU¡¤v¤ËÂåÆþ¤·¤Þ¤¹

_m00, _m01, _m02, _m03 ¡¡¡¡¡¡cos¦È -sin¦È¡¡0 0
_m10, _m11, _m12, _m13 ¢ª¡¡ sin¦È cos¦È 0 0
_m20, _m21, _m22, _m23¡¡¡¡¡¡¡¡0¡¡¡¡0¡¡0¡¡0
_m30, _m31, _m32, _m33¡¡¡¡¡¡¡¡0¡¡¡¡0 0¡¡0

_m00 =_m11 = cosine;
_m10 = -sine;  
_m01 = sine;


¥·¥§¡¼¥À¤Ç¤Î¥Æ¥¯¥¹¥Á¥ã¤Î¥Þ¥È¥ê¥Ã¥¯¥¹ÊÑ´¹¤Ï²Äǽ¤Ç¤¹¤¬¡¢GPU¤ËÉé²Ù¤¬¤«¤«¤ë¤¿¤á
GPU¤Î¶¯ÎϤÊPC¤Ç¤Î³«È¯¤Ë´Ø¤·¤Æ¤ÏÌäÂê̵¤µ¤½¤¦¤Ç¤¹¤¬ ¥â¥Ð¥¤¥ëµ¡´ï¤Î³«È¯¤Ç¤Ï
¥¹¥¯¥ê¥×¥È¤Ç·×»»¤ò¤·¤Æ¥·¥§¡¼¥À¤ËÃͤòÀßÄꤷ¤¿¤Û¤¦¤¬°ÂÄꤷ¤½¤¦¤Êµ¤¤Ï¤·¤Þ¤¹¡£

¤³¤ó¤Ë¤Á¤Ï Ĺ¤é¤¯¤Û¤Ã¤¿¤é¤«¤·¤À¤Ã¤¿ ¡É¤¦¤Ë¤Ð¤Ê¡Éµ­»ö¤òºÆ³«¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£
º£²ó¤ÏÍ×˾¤¬Â¿¤á¤Î¥·¥§¡¼¥À¤Ë´Ø¤¹¤ë¤ª¤Ï¤Ê¤·¤Ç¤¹¡£ ¤È¤¤¤Ã¤Æ¤â¥·¥§¡¼¥À¤À¤±¤Çʬ¸ü¤¤Ëܤ¬²¿ºý¤â½ñ¤±¤ë¤Û¤É¤Î¾ðÊóÎ̤¬¤¢¤ë¤¦¤¨¤Ë¿Ê²½¤·Â³¤±¤Æ¤¤¤ëʬÌî¤Ç¤¹¤Î¤Ç¡¢¤È¤ê¤¢¤¨¤º¤«¤¤¤Ä¤Þ¤ó¤Çµ­»ö¤Ë¤·¤Þ¤·¤¿¡£
Èó¾ï¤ËµÞ¤¤¤Ç½ñ¤¤¤¿¤¿¤á ¤¹¤³¤·°ÕÌ£¤¬Ä̤é¤Ê¤«¤Ã¤¿¤êÀâÌÀ¤¬ÉÔ½½Ê¬¤Ê¤È¤³¤í¤¬¤¢¤ë¤«¤È»×¤¤¤Þ¤¹¤¬ º£¸å¤âµ­»ö¤Ë¼ê¤òÆþ¤ì¤Æ¤¤¤­¤Þ¤¹¤Î¤Ç¤´ÍƼϤ¯¤À¤µ¤¤¤Þ¤»¡£¡£Unity¤ÎShaderLab¤Ç¤¹¤¬ ´ðËÜŪ¤Êµ­½Ò¤Ï¥À¥¤¥ì¥¯¥ÈX¤ÎHLSL ¤Þ¤¿¤ÏOpenGL¤ÎGLSL¤É¤Á¤é¤Ç¤âµ­½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤È¤¤¤¦½ÀÆðÀ­¤Î¤¢¤ë¤â¤Î¤Ç¤¹¡££³D¥½¥Õ¥È¤Ê¤É¤Ç¥«¥¹¥¿¥à¥·¥§¡¼¥À¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë£ã£ç£æ£ø¤È¤¤¤¦¥·¥§¡¼¥À¤â¤¢¤ê¤Þ¤¹¤¬ Ï«¤»¤º¥·¥§¡¼¥À¤ò°Ü¿¢¤¹¤ë¤³¤È¤Ï

²Äǽ¤Ç¤¹¤Î¤Ç¡¢³«È¯»þ¤Ë£³D¥½¥Õ¥È¾å¤Ç³Îǧ¤·¤Ê¤¬¤é¥â¥Ç¥ê¥ó¥°¤ò¤¹¤ë¤³¤È¤â½ÐÍè¤ë¤È»×¤¤¤Þ¤¹¡£³Ø¤ó¤ÀÃ챤¬¤Î¤Á¤Î¤Á±þÍѤ¬¸ú¤¯¤È¤¤¤¦°ÕÌ£¤Ç¤Ï

Èó¾ï¤Ë³«È¯¼Ô¤Ë¤È¤Ã¤Æ¤Ï¤¢¤ê¤¬¤¿¤¤¤³¤È¤Ç¤¹¡£

µ­»ö¤Ï£³Éô¤Ë¤ï¤±¤Æ

£±¡¥½é¤á¤Æ¤Î¥·¥§¡¼¥À ¡Ê´ðÁÃÃμ± ¤È¤¤¤Ã¤Æ¤â¤Á¤ç¤Ã¤ÈÆñ¤·¤¤¡Ë
£²¡¥Unity¸ø¼°¥·¥§¡¼¥À¥ê¥Õ¥¡¥ì¥ó¥¹¤Î°ÕÌõ¡ÊɬÍפʤȤ³¤À¤±¡Ë
£³¡¥¥·¥§¡¼¥À¤ò½ñ¤¤¤Æ¤ß¤Þ¤¹¡Ê£ó£ô£ò£õ£í£ð£ù¥¨¥Ç¥£¥¿¡Ë¤Ê¤É

»þ´Ö¤¬¤¢¤ì¤Ð¥¤¥á¡¼¥¸¥¨¥Õ¥§¥¯¥È¤Ê¤É¤â¤ä¤Ã¤Æ¤¤¤­¤¿¤¤¤«¤Ê
¡Ê¥Æ¥¯¥¹¥Á¥ã¥ì¥ó¥À¤Ï¥×¥íÈǤΤߤʤΤǥե£¥ë¥¿·Á¼°¤Î¤â¤Î¤Ï¥¤¥ó¥Ç¥£ÈÇ¤Ç¤ÏÆñ¤·¤¤¤Ç¤¹¤¬ ¥«¥á¥é¤ÎÁ°¤Ë¥·¥§¡¼¥ÀÆþ¤ì¤¿Èĥݥê¤òÃÖ¤¯ÉÏ˳¥·¥§¡¼¥À¤Ï²Äǽ¤Ê¤ó¤Ç¤¹¤èw¡Ë
º£²ó¤Ï¤³¤Á¤é¢­¤ò»²¹Í¤Ë¥·¥§¡¼¥À¤Î½éÊâŪ¤ÊÃμ±¤Ë¤Ä¤¤¤Æ½ñ¤«¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿





http://gameprogramming.me.land.to/PDF/ESL502.pdf

http://download.unity3d.com/support/resources/files/Unite08_Shaders.pdf


»²¹Íư²è ¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ê¤É

http://www.youtube.com/watch?v=37pc-eif24g&feature=plcp

http://www.youtube.com/user/JessyUV/videos?view=0

http://www.youtube.com/user/animate4evr



no title


Âç¤Þ¤«¤Ë¥·¥§¡¼¥À¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤¹¤ë¥·¥§¡¼¥À¤Ï2¤Ä¤Ëʬ¤±¤é¤ì¤Þ¤¹¡£¾å¼ê¤Î¤è¤¦¤ËGPU¤Îvetex¥×¥í¥»¥Ã¥µ¤ËÌ¿Îá¤òÁ÷¤ë¤Î¤¬vertexshader¡£Pixel¥×¥í¥»¥Ã¥µ¤ËÌ¿Îá¤òÁ÷¤ë¤Î¤¬Pixel ¥·¥§¡¼¥À¤Ç¤¹¡£


Vertex Shaders(ĺÅÀ¥·¥§¡¼¥À¡Ë


  • ¥ª¥Ö¥¸¥§¥¯¥È¶õ´Ö(¥í¡¼¥«¥ë¤ÊºÂɸ)¤«¤é¥ï¡¼¥ë¥ÉºÂɸ¤Ø¥ª¥Ö¥¸¥§¥¯¥È¤òÊÑ´¹¤·¤Þ¤¹¡£

  • ĺÅÀ¤´¤È¤Ë¤É¤Î¤è¤¦¤Ê¥Ç¡¼¥¿¤â·×»»¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

  • ¤½¤Î¾¤ÎÆþÎϥǡ¼¥¿¤Ï¤¹¤êÈ´¤±¤Þ¤¹¡£


no title



Pixel Shaders¡Ê¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¡Ë


  • ĺÅÀ¥·¥§¡¼¥À¤«¤éÁ÷¤é¤ì¤¿¥Ç¡¼¥¿¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

  • ¥Ô¥¯¥»¥ëñ°Ì¤Î¸÷¸»·×»»¤ò¹Ô¤¤¤Þ¤¹

  • ÀßÄꤵ¤ì¤¿¥Æ¥¯¥¹¥Á¥ã¤òÍѤ¤¤ÆºÇ½ªÅª¤Ê¥Ô¥¯¥»¥ë¤Î¿§¤ò·èÄꤷ¤Þ¤¹


no title



Tips: Vertex¥·¥§¡¼¥À¤âPixel¥·¥§¡¼¥À¤â¤Û¤ÜƱÍͤδؿô¤Çµ­½Ò¤Ç¤­¤ë¤Î¤Ç¤¹¤¬¡¢Pixel ¥·¥§¡¼¥À¤Ï¥Ç¡¼¥¿Î̤¬Â¿¤¤¤¿¤á vertex¥·¥§¡¼¥ÀÆâÉô¤ËPixel ¥·¥§¡¼¥À¤ÎÆâÍÆ¤ò°Üư¤·¤Æµ­½Ò¤·¤Æ¤·¤Þ¤¨¤Ð ¹â®²½¤¬´üÂԤǤ­¤Þ¤¹¡£


 


¥·¥§¡¼¥À¤Îµ­½Ò


Âç¤Þ¤«¤Ë¤Ï£Ã¡¿£Ã++¤È¤Û¤È¤ó¤ÉƱ¤¸¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ê¹½À®¤ò¤·¤Æ¤¤¤Þ¤¹¡£


¥·¥§¡¼¥À¤Î̾Á°¤ÎÄêµÁ
¡Ð
¥×¥í¥Ñ¥Æ¥£¤ÎÄêµÁ
¡¡¡Ð
¡¡¡¡¹½Â¤ÂΤÎÄêµÁ
¡¡¡¡¡¡¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤ÎÀë¸À
¡¡¡¡¡¡¡¡¡¡ ´Ø¿ô¤ÎÄêµÁ
¡¡¡¡¡¡¡¡¡¡Subshader(°ìÈÌŪ¤Ë¤Ï¥Æ¥¯¥Ë¥Ã¥¯ ¤ÎÄêµÁ¡Ë
¡¡¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ñ¥¹¤ÎÄêµÁ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡Ä
¡¡¡¡¡¡¡¡¡¡ }

¡¡¡Ñ
¡Ñ


¥·¥§¡¼¥À¤Îµ­½ÒÎã



Shader "Tutorial/Textured Colored" { //¥·¥§¡¼¥À¥Õ¥¡¥¤¥ë̾¤ÎÄêµÁ

Properties { //¥×¥í¥Ñ¥Æ¥£¤ÎÄêµÁ¡Ê¥¤¥ó¥¹¥Ú¥¯¥¿¤Ëɽ¼¨¤µ¤ì¤ë¡Ë
_Color ("Main Color", Color) = (1,1,1,0.5)
_MainTex ("Texture", 2D) = "white" { }
}
SubShader { //¥µ¥Ö¥·¥§¡¼¥À¤Îµ­½Ò¤³¤³¤«¤é

Pass {//¥Ñ¥¹¤ÎÄêµÁ¤³¤³¤«¤é

CGPROGRAM //Cg¥×¥í¥°¥é¥à¤Î³«»Ï

#pragma vertex vert //ĺÅÀ¥·¥§¡¼¥À¤Î̾Á°¤ÎÄêµÁ ¤³¤³¤Ç¤Ï¡Évert¡É
#pragma fragment frag //¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¡Ê¥Õ¥é¥°¥á¥ó¥È¥·¥§¡¼¥À¡Ë¤ÎÄêµÁ ¤³¤³¤Ç¤Ï¡Éfrag¡É
#include "UnityCG.cginc" //³°Éô¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É¡ÉUnityCg.cginc¡É¤ÏUnity¤Î¥·¥§¡¼¥À¤Î´Ø¿ô

float4 _Color; //float4·¿¤Î¡É_Color¡É¤È¤¤¤¦Ì¾Á°¤ÎÊÑ¿ô¤ÎÄêµÁ(r,g,b,a)
sampler2D _MainTex; //sanpler2D·¿ ¥Æ¥¯¥¹¥Á¥ã¤ÎUVÃͤÎÄêµÁ

struct v2f { //¹½Â¤ÂÎ(¤¤¤¯¤Ä¤«¤ÎÃͤò¤Þ¤È¤á¤Æ·¿¤È¤·¤ÆÄêµÁ¤¹¤ë¡Ë¤³¤³¤Ç¤Ï¡Év2¡Éf·¿
float4 pos : SV_POSITION; //float4·¿¤Î SV_POSITION·¿¤ÎÀë¸À(ĺÅÀºÂɸ) ¤³¤³¤Ç¤Ï"pos"
float2 uv : TEXCOORD0; //float2·¿¤Î TEXCOORD·¿¤ÎÀë¸À(¥Æ¥¯¥¹¥Á¥ãUV) ¤³¤³¤Ç¤Ï¡Éuv"
};
float4 _MainTex_ST;

v2f vert (appdata_base v) //¢¨£±
{
v2f o; //¹½Â¤ÂÎv2f·¿¤Î¥í¡¼¥«¥ë¤ÊÃÍ¡Éo"¤òÄêµÁ
o.pos = mul (UNITY_MATRIX_MVP, v.vertex); //UNITY_MATRIX_MVP¡Ê¸½ ¹Ô¥â¥Ç¥ë*¥Ó¥å¡¼*¼Í±Æ¹ÔÎó¡Ë¤òÍѤ¤¤ÆÄºÅÀºÂɸ¤ÎÊÑ´¹
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex); //¢¨£²
return o;
}
half4 frag (v2f i) : COLOR //¥µ¡¼¥Õ¥§¥¹¥·¥§¡¼¥À¤³¤³¤«¤é¡ÊÌá¤êÃÍCOLOR·¿¡Ë
{
half4 texcol = tex2D (_MainTex, i.uv); //harf4·¿¤ÎÊÑ¿ô¡Étexcol"¤Ë¥Æ¥¯¥¹¥Á¥ã¤Î¿§¤òÀßÄê
return texcol * _Color; //Ìá¤êÃͤËtexcol (¥Æ¥¯¥¹¥Á¥ã¤Î¿§)* _Color(¥Þ¥Æ¥ê¥¢¥ë¤Î¿§¡Ë¤òÀßÄê ¤¤¤ï¤æ¤ë¥«¥é¡¼¾è»»
}
ENDCG //Cg¥×¥í¥°¥é¥à¤Î½ªÎ»
}
}
Fallback "VertexLit" //¥Õ¥©¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô(¥·¥§¡¼¥À¤¬¼Â¹Ô¤Ç¤­¤Ê¤¤»þ¤Ë¸Æ¤Ð¤ì¤ë¥·¥§¡¼¥À ¤Ê¤ë¤Ù¤¯ ɸ½àŪ¤Ê¥·¥§¡¼¥À¤òÁªÂò¤¹¤ë¤³¤È¤Ç¸¡º÷¤¬Á᤯¤Ê¤ë¤è¤¦¤Ç¤¹¡Ë
}


¢¨£±¡§ UnityCg.cginc¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ³Îǧ¤¹¤ë¤È¹½Â¤ÂÎ appdata_base¤Ï

struct appdata_base {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};
¤ÈÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¢¨£²:      UnityCg.cginc¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ³Îǧ¤¹¤ë¤È

// Transforms 2D UV by scale/bias property  // ¥Æ¥¯¥¹¥Á¥ãUV¤Ë¥¹¥±¡¼¥ë¤È¥Ð¥¤¥¢¥¹¤òÉÕÍ¿¤¹¤ë´Ø¿ô¤Ç¤¹¡£

#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)



¥×¥í¥Ñ¥Æ¥£¤ÎÄêµÁ


http://docs.unity3d.com/Documentation/Components/SL-Properties.html


¥·¥§¡¼¥À¤Î̾Á°¤Î¸å¤Ë¥×¥í¥Ñ¥Æ¥£¤È¤¤¤¦¥·¥§¡¼¥À¤ËÍ¿¤¨¤ëÃͤòÀë¸À¤·¤Þ¤¹¡£¼ÂºÝ¤Ë·¿Àë¸À¤Ï¥µ¥Ö¥·¥§¡¼¥À¤ÎÃæ¤Ç¹Ô¤¤¤Þ¤¹¤¬¡¢¥×¥í¥Ñ¥Æ¥£¤ÎÀë¸À¤Ç¤Ï¥µ¥Ö¥·¥§¡¼¥À¤ÇÀßÄꤹ¤ëÃͤ½¤ì¤¾¤ì¤ËÂбþ¤µ¤»¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¾å¤Ç¤Îɽ¼¨¤ÈºÇ½é¤ËÂåÆþ¤µ¤ì¤ë½é´üÃͤòÀßÄꤷ¤Þ¤¹¡£


Îã¡§_Color ("Main Color", Color) = (1,1,1,0.5)


Properties { Property [Property ...] }

»ÈÍѤ¹¤ëÃͤÎ̾Á°¡Ê¡É¥¤¥ó¥¹¥Ú¥¯¥¿¾å¤Îɽ¼¨¤Î̾Á° ¡É,¥¤¥ó¥¹¥Ú¥¯¥¿¾å¤Î¥¨¥Ç¥£¥Ã¥Èɽ¼¨¤Î¼ïÎà¡Ë¡á¡ÊÀßÄꤹ¤ëÃͤνé´üÃÍ¡Ë


 
name ("display name", Range (min, max)) = number
float·¿¤Î¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¤Ç¤Ï¥¹¥é¥¤¥À¡¼¤È¤·¤ÆÉ½¼¨¤µ¤ì¤Þ¤¹

name ("display name", Color) = (number,number,number,number)


color¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£
name ("display name", 2D) = "name" { options }
2D¥Æ¥¯¥¹¥Á¥ã¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£
name ("display name", Rect) = "name" { options }
ĹÊý·Á¤Î¥Æ¥¯¥¹¥Á¥ã¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£
name ("display name", Cube) = "name" { options }
¥­¥å¡¼¥Ö¥Þ¥Ã¥×¥Æ¥¯¥¹¥Á¥ã¤Î¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£
name ("display name", Float) = number
float·¿¤Î¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£
name ("display name", Vector) = (number,number,number,number)
4À®Ê¬¥Ù¥¯¥È¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤·¤Þ¤¹¡£


Îã¡§


Shader "VertexLit" {
Properties {

_Color ("Main Color", Color) = (1,1,1,0.5)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" { }
}

SubShader {

Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]

}

Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
constantColor [_Color]
Combine texture * primary DOUBLE, texture * constant
}
}
}
}



SubShader¤ÎÄêµÁ
¡Ê°ìÈÌŪ¤Ë¤Ï¥Æ¥¯¥Ë¥Ã¥¯¤È¸Æ¤Ð¤ì¤ë ¤ÎÄêµÁ¡Ë

SubShader¤È¤Ï¡¢Cg´Ø¿ô¤Ç½ñ¤«¤ì¤¿¥ì¥ó¥À¥ê¥ó¥°ÊýË¡¤òµ­½Ò¤¹¤ë¥Ñ¥¹¤òÊ£¿ô¤Þ¤È¤á¤¿¤â¤Î¤Ç¤¹¡£


£±¤Ä¤Î¥Õ¥¡¥¤¥ë¤ËÊ£¿ô¤ÎSubShader¤òÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿SubShaderÆâ¤Ë¤Ï¡¢Ê£¿ô ¤Î¥Ñ¥¹¤òÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


Shader "MyShaderName" {
Properties {
... ¥×¥í¥Ñ¥Æ¥£¤ò½ñ¤­¤Þ¤¹...
}
SubShader {
... ¥µ¥Ö¥·¥§¡¼¥À¡¼¥³¥Þ¥ó¥É¤òµ­½Ò ...
Pass {
... Pass¥³¥Þ¥ó¥É¤òÄêµÁ...
}
... ɬÍפʤé¤Ð³¤±¤Æ¥Ñ¥¹¤òµ­½Ò...
}
SubShader {
... ¥µ¥Ö¥·¥§¡¼¥À¡¼¥³¥Þ¥ó¥É¤òµ­½Ò...
}
...¥Õ¥©¡¼¥ë¥Ð¥Ã¥¯¥ª¥×¥·¥ç¥ó¤òµ­½Ò...
FallBack "VertexLit"
}




¥Ñ¥¹¤ÎÄêµÁ


¥Ñ¥¹¤È¤Ï¡¢¥Ð¡¼¥Æ¥Ã¥¯¥¹¥·¥§¡¼¥À¡¼(vertex)¤È¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¡¼(fragment)¤ò¥»¥Ã¥È¤Ë¤·¤¿¤â¤Î¤Ç¤¹¡£

CGPROGRAM ¡ÄENDCG ¤Î´Ö¤Ç¡ôpragma ̾Á°¤Ç¥Ð¡¼¥Æ¥Ã¥¯¥¹¥·¥§¡¼¥À¡¼¤È¥Ô¥¯¥»¥ë¥·¥§¡¼¥À¡¼¤¬ºÇ½é¤Ë¼Â¹Ô¤¹¤ë´Ø¿ô¤È¥Ð¡¼¥¸¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£ ¥Ñ¥¹ÆâÉô¤Ç¥·¥§¡¼¥À¡¼¤Î¥á¥¤¥ó¤È¤Ê¤ë´Ø¿ô̾¤È¥Ð¡¼¥¸¥ç ¥ó¤òÀßÄꤹ¤ë¤â¤Î¤Ç¤¹¡£


Pass {

...Pass ¤Î½é´üÀßÄê
...


CGPROGRAM

#pragma vertex vert

#pragma fragment frag


¡ÄCg ¥³¡¼¥É¤òµ­½Ò¤·¤Þ¤¹


ENDCG 


}


´Ø¿ô¤ÎÄêµÁ

HLSL¤Ç¤Ï¡¢£Ã¡¿£Ã++¤ÈƱÍͤˡ¢´Ø¿ô¤òÄêµÁ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÄêµÁÊýË¡¤âƱ¤¸¤Ç¤¹¡£


Ìá¤êÃͤη¿´Ø¿ô̾(°ú¿ô¤Î·¿ÊÑ¿ô̾[ : ¥»¥Þ¥ó¥Æ¥£¥¯¥¹],

°ú¿ô¤Î·¿ÊÑ¿ô̾[ : ¥»¥Þ¥ó¥Æ¥£¥¯¥¹], ¡Ä ) [ Ìá¤êÃͤΥ»¥Þ¥ó¥Æ¥£¥¯¥¹]
{
(´Ø¿ô¤Î½èÍý)
¡Ä
return Ìá¤êÃÍ;
}


´Ø¿ôÆâ¤ÇÊ̤δؿô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤ä¡¢ÊÌ¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë´Ø¿ô¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ»È¤¦¤³¤È

¤â¤Ç¤­¤Þ¤¹¡£


#include "UnityCG.cginc"


windows¤Î¾ì¹ç Unity¥¤¥ó¥¹¥È¡¼¥ë¥Ñ¥¹ /Data/ CGIncludes / UnityCG.cginc

Mac¤Î¾ì¹ç /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc


 "UnityCG.cginc"¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤µ¤ì¤¿´Ø¿ô¤Ï¥Ó¥ë¥È¥¤¥ó´Ø¿ô¤È¸Æ¤Ð¤ì¤Þ¤¹¡£


Îã¡§

float4 _Time (t/20, t, t*2, t*3) //»þ´Ö¤òÊÖ¤¹´Ø¿ô
float4 _SinTime (t/8, t/4, t/2, t) //¥µ¥¤¥ó¤¢¤¿¤ê¤Î»þ´Ö¤òÊÖ¤¹´Ø¿ô

float4 _CosTime (t/8, t/4, t/2, t)  //¥³¥µ¥¤¥ó¡¦¡¦



_ModelLightColor[N] (¥â¥Ç¥ë¤Î¥Þ¥Æ¥ê¥¢¥ë¥«¥é¡¼*¥é¥¤¥È¥«¥é¡¼)
_SpecularLightColor[N] (¥â¥Ç¥ë¤Î¥¹¥Ú¥­¥å¥é¥«¥é¡¼*¥é¥¤¥È¥«¥é¡¼)


PositionFog() //ĺÅÀ¤Î¥Õ¥©¥°¤ÎÃͤò·×»»
ObjSpaceLightDir() //¥â¥Ç¥ë¤òÃæ¿´¤È¤·¤Æ¥é¥¤¥È¤ÎÊý¸þ¤ò·×»»
ObjSpaceViewDir() //¥â¥Ç¥ë¤òÃæ¿´¤È¤·¤Æ¥Ó¥å¡¼Êý¸þ¡Ê¥«¥á¥é¤ÎÊý¸þ¡Ë¤ò·×»»
TRANSFORM_TEX() //¥Æ¥¯¥¹¥Á¥ã¤Î°Üư¤Ê¤É¤ÎÊÑ´¹
DifuseLight() or SpecularLight() //¥é¥¤¥Ö¥é¥ê¤Ë¤Ê¤¤¡©





·¿

HLSL¤Ç¤Ï¡¢£Ã¡¿£Ã++¤ÈƱÍͤˡ¢´Ø¿ôÆâ¤Î¥í¡¼¥«¥ëÊÑ¿ô¤ä¥·¥§¡¼¥À¡¼Á´ÂΤǻ²¾È¤Ç¤­¤ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô¡¢
¹½Â¤ÂΡ¢ÇÛÎó¤òÀë¸À¤Ç¤­¤Þ¤¹¡£Àë¸ÀÊýË¡¤âƱ¤¸¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¹Ô¤¤¤Þ¤¹¡£

·¿Ì¾ÊÑ¿ô̾

ɸ½à¤ÎHLSL¤Ç¤Ï¡¢ÊÑ¿ô¤Î·¿¤È¤·¤Æ°Ê²¼¤Î¤â¤Î¤ò»ÈÍѤǤ­¤Þ¤¹¡£

bool - true ¤Þ¤¿¤Ïfalse
int - 32 ¥Ó¥Ã¥ÈÉ乿ÉÕ¤­À°¿ô
uint - 32 ¥Ó¥Ã¥ÈÉ乿¤Ê¤·À°¿ô
float - 32 ¥Ó¥Ã¥ÈÉâÆ°¾®¿ôÅÀÃÍ


¡üfloat¡§¹âÀºÅÙÉâÆ°¾®¿ôÅÀ¡£°ìÈÌŪ¤Ë32¥Ó¥Ã¥È¡¢ÉáÄÌ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Îfloat·¿¡£

¡ühalf¡§ÇÝÃÏÀºÅÙÉâÆ°¾®¿ôÅÀ¡£ÀºÅÙ¤Ï-60000¤«¤é60000 3.3·å¤ÎÈϰϤǡ¢°ìÈÌŪ¤Ë16¥Ó¥Ã¥È¡£

¡üfixed¡§ÄãÀºÅ٤θÇÄê¾®¿ôÅÀ¡£-2.0¤«¤é2.0¤ÎÈϰϤÈ256ʬ£±¤ÎÀºÅ٤ǡ¢°ìÈÌŪ¤Ë11¥Ó¥Ã¥È¡£

double - 64 ¥Ó¥Ã¥ÈÉâÆ°¾®¿ôÅÀÃÍ
sampler2D-uvºÂɸ
samplerCUBE-cube¥Þ¥Ã¥×ºÂɸ
uniform¡ÝÆþÎÏÀìÍѤÎÄê¿ô¥Ç¡¼¥¿


¥Ù¥¯¥È¥ë¤Ï¡¢vector¤â¤·¤¯¤Ï·¿Ì¾¤Î¤¢¤È¤Ë¿ô»ú¤ò¤Ä¤±¤ë¤³¤È¤Ë¤è¤Ã¤ÆÉ½¸½¤·¤Þ¤¹¡££´¼¡¸µ¥Ù¥¯¥È¥ë¤Þ ¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¿ô»ú¤Ï£±¡Á£´¤ÎÈϰϤǻØÄꤷ¤Þ¤¹¡£
int2 pos2d; // int ·¿¤Î£²¼¡¸µ¥Ù¥¯¥È¥ë
float3 pos3d; // float ·¿¤Î£³¼¡¸µ¥Ù¥¯¥È¥ë
vector <double, 4> vec4; // double·¿¤Î£´¼¡¸µ¥Ù¥¯¥È¥ë


³Æ¥á¥ó¥Ð¤Ï¡Éx, y, z, w¡É¤Þ¤¿¤Ï¡Ér, g, b, a¡É¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ë¤è¤ê¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£
pos.xyz pos.xy pos.xz pos.x; col.rgb col.rg col.gb col.a;
£ø¡Á£÷¡¢£ò¡Á£á¤Ï¼«Í³¤ËÁȤ߹ç¤ï¤»¤Æµ­½Ò¤Ç¤­¤Þ¤¹¡£


¹ÔÎó¤Ï¡¢ºÇÂ磴¡ß£´¤Þ¤ÇÄêµÁ¤Ç¤­¤Þ¤¹¡£¹Ô¤ÈÎó¤Î¿ô¤¬°Û¤Ê¤ë¹ÔÎó¤â°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ matrix¤Þ¤¿¤Ï ·¿Ì¾¤Î¤¢¤È¤Ë ¡É¹Ô¿ôxÎó¿ô¡É ¤ÇÀë¸À¤·¤Þ¤¹¡£
int3x2 mat_i; int ·¿£³¹Ô£²Îó
float4x4 mat_f;  float ·¿£´¹Ô£´Îó
matrix <double, 3, 3> mat_d; double·¿£³¹Ô£³Îó


¹ÔÎó¤Î¥á¥ó¥Ð¤Ø¤Î¥¢¥¯¥»¥¹¤Ï¡¢¥á¥ó¥Ð̾¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤ê¹Ô¤¨¤Þ¤¹¡£



¡ü£´¡ß£´¤Î¹ÔÎó¤Î¾ì¹ç

_m00, _m01, _m02, _m03
_m10, _m11, _m12, _m13
_m20, _m21, _m22, _m23
_m30, _m31, _m32, _m33



¤Û¤«¤Ë 
_11, _12, _13, _14
_21, _22, _23, _24
_31, _32, _33, _34
_41, _42, _43, _44


¤É¤Á¤é¤ò»ÈÍѤ·¤Æ¤âÎɤ¤¤Ç¤¹



À©¸æÊ¸

HLSL¤Ç¤Ï¡¢¥×¥í¥°¥é¥à¤Îή¤ì¤òÀ©¸æ¤¹¤ë¡Ö¥Õ¥í¡¼À©¸æÊ¸¡×¤â»ÈÍѤǤ­¤Þ¤¹¡£DirectX9.0¤Ç¤Ï¡¢ if-else, for, while, do-whileʸ¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£µ­½ÒÊýË¡¤â£Ã¡¿£Ã++¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ ¤¿¤À¤·¡¢brake, countinue, (switch-caseʸ)¤Ï¡¢DirectX10°Ê¹ß¤Ç¤Ê¤±¤ì¤Ð»ÈÍѤǤ­¤Þ¤»¤ó¡£


¥»¥Þ¥ó¥Æ¥£¥¯¥¹

¥·¥§¡¼¥À¡¼¤¬ºÇ½é¤Ë¼Â¹Ô¤¹¤ë´Ø¿ô¤Î°ú¿ô¤È¹½Â¤ÂΤΥá¥ó¥Ð¤Ë¡¢ÊÑ¿ô¤Î»ÈÍÑÌÜŪ¤ò¼¨¤·¤¿¡Ö¥»¥Þ¥ó¥Æ¥£ ¥¯¥¹¡×¤È¤¤¤¦Ê¸»úÎó¤ò»ØÄê¤Ç¤­¤Þ¤¹¡£ ´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤ëºÝ¡¢ÄºÅÀ¤Þ¤¿¤Ï¥Ô¥¯¥»¥ë¤Î¾ðÊó¤Ï¡¢³ºÅö¤¹¤ë¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤¬ÉÕ¤¤¤¿ÊÑ¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢ÄºÅÀ¤Þ¤¿¤Ï¥Ô¥¯¥»¥ë¾ðÊó¤ÎÃæ¤«¤éɬÍפʤâ¤Î¤À¤±¤ò¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Ê¤ª¡¢ÄºÅÀ¤Ë¤â¥Ô¥¯¥»¥ë¾ðÊó¤Ë¤â´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤¬ÉÕ¤¤¤Æ¤¤¤ëÊÑ¿ô¤Ï¡¢£°¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¥·¥§¡¼¥À¡¼¤¬ºÇ½é¤Ë¼Â¹Ô¤¹¤ë´Ø¿ô¤Î°ú¿ô¤¹¤Ù¤Æ¤Ë¡¢¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£



float4 : POSITION //ĺÅÀºÂɸ¡Êx,y,z,w)¢¨£÷¤Ï¥¹¥±¡¼¥ë¤ÎÃÍ
float4 : TANGENT //¥Î¡¼¥Þ¥ë¥Þ¥Ã¥×¤Î¥¿¥ó¥¸¥§¥ó¥ÈºÂɸ
float4: NORMAL; //ĺÅÀË¡Àþ¡Êx,y,z,w)
float4 : TEXCOORD0 //¥Æ¥¯¥¹¥Á¥ãºÂɸ¡ÊUV)
float4: TEXCOORD1// ¥Æ¥¯¥¹¥Á¥ãºÂɸ£²¤ÄÌܡʥƥ¯¥¹¥Á¥ãUV¤ÏXBOX360¤Ç¤Ï£±¥á¥Ã¥·¥å¤¢¤¿¤ê£·¤Ä¤Þ¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡©¤è¤¦¤Ç¤¹¡Ë
float4 : COLOR //¥«¥é¡¼¤ÎÃÍ¡Êr,g,b,a)

°ìÉô¤Ç¤¹¤¬ ¾åµ­¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹




ÁȤ߹þ¤ß´Ø¿ô°ìÍ÷


HLSLɸ½à´Ø¿ô¤Îɽ¤Ç¤¹¤¬Unity¤Î¥·¥§¡¼¥À¾å¤Ç¤Î¤¹¤Ù¤Æ¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î¸¡¾Ú¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¡£¥·¥§¡¼¥À¥¨¥Ç¥£¥¿¡¼¤Ê¤É¤Ç´Ø¿ô¤Îµ¡Ç½¤¬Ê¬¤«¤é¤Ê¤¤»þ¤ËÂбþɽ¤È¤·¤Æ»ÈÍѤ¹¤ë¤³¤È¤Ï½ÐÍè¤ë¤È»×¤¤¤Þ¤¹¡£


http://msdn.microsoft.com/ja-jp/library/bb509611(v=vs.85).aspx



no title

¢¬¤³¤Î¥Ú¡¼¥¸¤Î¥È¥Ã¥×¥Ø