欢迎来到天天文库
浏览记录
ID:34074603
大小:115.50 KB
页数:4页
时间:2019-03-03
《unityd着色器shader编程入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、自学Unity3D也有大半年了,对Shader一直不敢入坑,最近看了些资料,以及通过自己的实践,对Shader还是有一点了解了,分享下仅作入门参考。 更多精彩请关注【狗刨学习网】 因Shader是对图像图像渲染的,学习前可以去了解下图形图像学及GPU编程相关的知识。强烈推荐《GPU编程与CG语言之阳春白雪下里巴人》,这本书网上有电子版。 还有一本是关于Unity3D的Shader开发的《Unity着色器和屏幕特效开发秘笈》该书是《UnityShadersandEffectsCookbook》
2、翻译过来的。 首先来看下Shader实现的效果: 1、新建一个球体Sphere,然后再Project中创建一个材质球Material。 4/4 2、将新建的材质球赋值给该球体对象的MeshRenderer组件的Materials中 选择不同的Shader,并调节参数,就可以看到不同的效果了。3、在Project中新建一个Shader,打开后会默认一个写好的Shader1.[font=新宋体][size=2]Shader"Custom/testShader"{ //S
3、hader【关键字开头】"Custom/testShader"【Shader的名字,分好用来分组】2. Properties{ //里面包含了Unity中进行赋值的属性3. _MainTex("Base(RGB)",2D)="white"{}//_MainTex【属性名】"Base(RGB)"【属性描述,将会在Unity面板中出现】2D【属性类型】"white"【默认值】4. _Alpha("透明度",Range(0,1))=05. }
4、6. SubShader{//子着色器,可以写多个用来适配不同的硬件或平台4/41. Tags{"RenderType"="Opaque"}//着色器标签【硬件将通过判定这些标签来决定什么时候调用该着色器】2. LOD200//LevelofDetail3. 4. CGPROGRAM//CG语言开始5. //申明程序使用surface【表面着色器】处理方法为下面的surf,使用Lambert光照模型6. #pragmasurfacesu
5、rfLambert 7.8. sampler2D_MainTex;//sampler2D类型的变量,名字和属性中的名字一致,用来接收Unity传入的参数9. half_Alpha;10.11. structInput{//结构体,用于输入数据12. float2uv_MainTex;//uv_开头用于取传入的贴图的UV13. };14.15. voidsurf(InputIN,inoutSurfaceOutputo){//表面着色器的
6、方法16. half4c=tex2D(_MainTex,IN.uv_MainTex);//tex2D方法对贴图中一个点进行采样17. o.Albedo=c.rgb;//对输出的rgb颜色进行赋值18. o.Alpha=c.a;//透明度赋值19. }4/41. ENDCG//CG语言结束2. } 3. FallBack"Diffuse"//回滚4.}[/size][/font]4/4
此文档下载收益归作者所有