自从昨天写了第一篇博文,感觉有些挡不住的想写第二篇,可能也和心情有关吧,最近即将离职,但是还没有找到工作,内心有一丝迷茫。可能是心里无处宣泄吧,把这些用文字表达出来。
我所写的这些东西仅仅是自己的一些想法,对于别人可能没有什么意义。你可以理解为废话、鬼话,这也是我把标签写为“鬼话连篇”的原因。
最近这段时间一直在学习,Shader,框架等,越来越发现自己了解的知识好少啊。框架是在看一个叫做StrangeIOC,这个下一篇再说吧。Shader是从这个地方学习的。都是美女博主写的很基础的东西,很感谢美女博主的分享。
Shader这个东西吧,我觉得我是不会专门去编写这个东西,但是了解一些还是很有必要的。毕竟很多游戏公司会要求你会这个。
—————— 正文开始 ——————
在这里我不会很仔细介绍,只会说一下,哪部分是什么东西。先来贴一个普通的Surface Shader代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Shader "Custom/BasicDiffuse" { Properties { ///////(1)//////// _EmissiveColor ("Emissive Color", Color) = (1,1,1,1) _AmbientColor ("Ambient Color", Color) = (1,1,1,1) _MySliderValue ("This is a Slider", Range(0,10)) = 2.5 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM ////////(2)//////// #pragma surface surf Lambert ////////(3)//////// float4 _EmissiveColor; float4 _AmbientColor; float _MySliderValue; ////////(4)//////// struct Input { float2 uv_MainTex; }; ////////(5)//////// void surf (Input IN, inout SurfaceOutput o) { //We can then use the properties values in our shader float4 c; c = pow((_EmissiveColor + _AmbientColor), _MySliderValue); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
|
1)这部分是属性,也是外部显示的东西。格式为 变量名(“外面显示的字”,属性) = 值
属性包括2D 图片,Color 颜色,Range(min,max) 带取值范围的数值
如果你要使用这些属性,还必须要在SubShader里面写对应的变量,变量名称必须一致,例如上面的(1)和(3)
2)这个部分是声明,那个步骤用哪个函数。上面说的是surface处理,使用surf这个函数,光照使用Lambert光照(预制的光照)。
4)这个结构体,里面的UV后面是你的图片变量名。上面写的MainTeX是一个内置值。
上面的东西讲的很少,可能得不到什么有用的东西。你要是想做Shader我可以告诉你个插件,叫做ShaderForge,制作Shader超级简单,我仅仅学了一下午,就做出来一个闪光的Shader。OK,鬼话讲完了,收工。