美文网首页unity3D技术分享Unity Shader分享
Unity3D Shader编程 | 学习笔记(二)

Unity3D Shader编程 | 学习笔记(二)

作者: 温素年 | 来源:发表于2017-12-09 22:27 被阅读30次

Unity3D Shader编程  原文链接:

http://blog.csdn.net/zhmxy555/article/category/2681301


今天看完了第二篇博客,然后实现了一下博客中的内容。

Subshder的结构

首先是接着上文,讲了一下Subshder的结构。前一篇文章已经说到Subshader中可以有一个或多个Pass。Pass块中可以写的内容如下:

Color Color                              颜色

Material  { }                              材质块 定义材质属性

Lighting  On | Off                     开启/关闭光照

SeparateSpecular  On | Off    开启/关闭独立镜面反射

ColorMaterial   AmbientAndDiffuse | Emission

使用每顶点的颜色替代材质中的颜色集。AmbientAndDiffuse 替代材质的阴影光和漫反射值;Emission 替代 材质中的光发射值。

其中Material块中可以写的内容如下:

DiffuseColor(R,G,B,A)     漫反射颜色构成

AmbientColor(R,G,B,A)   环境色颜色构成

SpecularColor(R,G,B,A)  对象反射高光的颜色

ShininessNumber            加亮时的光泽度

EmissionColor                  自发光颜色

而打在对象上的完整光照颜色最终是:

FinalColor = Ambient * RenderSettings ambientsetting +(Light Color * Diffuse + Light Color *Specular) + Emission

翻译过来的中文式子便是:

最终颜色=环境光反射颜色* 渲染设置环境设置 *(灯光颜色*漫反射颜色+灯光颜色*镜面反射颜色)+自发光


简单的Shader示例

博客上有很多示例,由简单到复杂,讲的很清楚。这里只粘一个光照材质完备版的代码,并附上注释。

想要复制的话可以开篇的链接里找到

其中,涉及到的纹理混合的知识,后面会讲解。

效果图

另外,晚上读了一点上次提到的《猫都能学会的Unity3D Shader入门指南》,发现内容还是蛮多的,所以准备以博客为主,这篇文章就当做参考。下面是一些博客上没有,或者之前没有get到的点的摘抄:

1.Shader(着色器)实际上就是一小段程序,它负责将 输入的Mesh(网格)以指定的方式 和 输入的贴图或者颜色等 组合作用,然后输出。

(这句话开始咋读都没读懂,做个断句……)

2.属性中的{option},它只对2D,Rect或者Cube贴图有关,当我们需要打开特定选项时可以把其写在这对花括号内。如果需要同时打开多个选项,可以使用空格分隔。可能的选择有ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal中的一个,这些都是OpenGL中TexGen的模式,具体的留到后面有机会再说。


吸一口再走吧~

相关文章

网友评论

    本文标题:Unity3D Shader编程 | 学习笔记(二)

    本文链接:https://www.haomeiwen.com/subject/dhtpixtx.html