unity shader中都有哪些属性如何使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity shader中都有哪些属性如何使用相关的知识,希望对你有一定的参考价值。
参考技术A 如果是进行3d游戏开 发的话,想必您对着两个词不会陌生。Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组 合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设 置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适的 renderer(渲染器)来进行渲染(输出)了。所以说Shader并没有什么特别神奇的,它只是一段规定好输入(颜色,贴图等)和输出(渲染器能够读懂的点和颜色的对应关系)的程序。而Shader开发者要做的就是根据输入,进行计算变换,产生输出而已。
Shader大体上可以分为两类,简单来说
表面着色器(Surface Shader) - 为你做了大部分的工作,只需要简单的技巧即可实现很多不错的效果。类比卡片机,上手以后不太需要很多努力就能拍出不错的效果。
片段着色器(Fragment Shader) - 可以做的事情更多,但是也比较难写。使用片段着色器的主要目的是可以在比较低的层级上进行更复杂(或者针对目标设备更高效)的开发。
unity3d 如何代码修改某个shader的颜色
1.打开软件,新建工程如下图所示。点击创建工程按钮。
2.在层级面板中穿件Cube,在项目面板鼠标右键中创建材质,如下图所示
3.在项目面板下创建脚本文件,如图所示
4.双击脚本文件打开,编写代码如下
5.创建标准shader,如下图所示
6.并将创建的shader替换给Cube对象
7.双击打开5中创建的Shader文件,查看参数信息(参数信息的结果是为了书写4中的代码,参见经验视频)
8.将3中的脚本附加给Cube。
9.点击运行,结果如图。
参考技术A有些Material确实没有Color属性.
选取材质球Shader的时候一定要看是否可以在监视面板中修改颜色属性.如果可以修改,基本上都可以用renderer.material.color = 颜色; 修改.
等同于 renderer.material.SetColor("_Color",颜色);
有些不能直接通过面板调试赋值修改的,就没法更改颜色.
有些获取颜色的时候报错说找不到"_Color"定义,但是可以在检视面板中更改材质球颜色,如下图:
你可以通过renderer.material.SetColor("_TintColor",颜色);来修改.
第一个参数是指定要修改的变量名.根据左下角的TintColor决定应该是什么字符串.前面加上一个英文下划线.
追问他说找不到_TintColor。。。
追答那你把第一个参数改成以下几个挨个试一试看看.这些都是经常碰到的.
"_MainColor",
"_SpecularColor"
"_SpecColor",
"_TextColor",
"_EmissiveColor",
如果都不行的话,那很可能就是你选择的Shader不带颜色参数.无法修改.
修改颜色可以用renderer.material.color追问
为啥有些material没有颜色可改,那样好像会报错的
追答楼上回答的很全面了
有些shader是没法改颜色的,这是出于某种限制的原因
以上是关于unity shader中都有哪些属性如何使用的主要内容,如果未能解决你的问题,请参考以下文章