Unity3D着色器Shader编程入门

自学Unity3D也有大半年了,对Shader一直不敢入坑,最近看了些资料,以及通过自己的实践,对Shader还是有一点了解了,分享下仅作入门参考。
    更多精彩请关注【狗刨学习网】

    因Shader是对图像图像渲染的,学习前可以去了解下图形图像学及GPU编程相关的知识。强烈推荐《GPU 编程与CG 语言之阳春白雪下里巴人》,这本书网上有电子版。

    还有一本是关于Unity3D的Shader开发的《Unity着色器和屏幕特效开发秘笈》该书是《Unity Shaders and Effects Cookbook》翻译过来的。
  
    首先来看下Shader实现的效果:

    1、新建一个球体Sphere,然后再Project中创建一个材质球Material。

      
    2、将新建的材质球赋值给该球体对象的Mesh Renderer组件的Materials中

      

    选择不同的Shader,并调节参数,就可以看到不同的效果了。
3、在Project中新建一个Shader,打开后会默认一个写好的Shader

  1. [font=新宋体][size=2]Shader "Custom/testShader" {  //Shader【关键字开头】"Custom/testShader"【Shader的名字,分好用来分组】
  2.     Properties {                               //里面包含了Unity中进行赋值的属性
  3.         _MainTex ("Base (RGB)", 2D) = "white" {}//_MainTex【属性名】"Base (RGB)"【属性描述,将会在Unity面板中出现】2D【属性类型】"white"【默认值】
  4.         _Alpha("透明度",Range(0,1))=0
  5.     }
  6.     SubShader {//子着色器,可以写多个用来适配不同的硬件或平台
  7.         Tags { "RenderType"="Opaque" }//着色器标签【硬件将通过判定这些标签来决定什么时候调用该着色器】
  8.         LOD 200//Level of Detail
  9.         
  10.         CGPROGRAM//CG语言开始
  11.         //申明程序使用surface【表面着色器】处理方法为下面的surf,使用Lambert光照模型
  12.         #pragma surface surf Lambert 

  13.         sampler2D _MainTex;//sampler2D类型的变量,名字和属性中的名字一致,用来接收Unity传入的参数
  14.         half _Alpha;

  15.         struct Input {//结构体,用于输入数据
  16.             float2 uv_MainTex;//uv_开头用于取传入的贴图的UV
  17.         };

  18.         void surf (Input IN, inout SurfaceOutput o) {//表面着色器的方法
  19.             half4 c = tex2D (_MainTex, IN.uv_MainTex);//tex2D方法 对贴图中一个点进行采样
  20.             o.Albedo = c.rgb;//对输出的rgb颜色进行赋值
  21.             o.Alpha = c.a;//透明度赋值
  22.         }
  23.         ENDCG//CG语言结束
  24.     } 
  25.     FallBack "Diffuse"//回滚
  26. }[/size][/font]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值