Unity--Shader(一)

作者: Lamzz | 来源:发表于2016-12-12 23:31 被阅读57次

一、Shader的介绍

Shader(着色器)
Shader是专门用来渲染3D图形的一种技术,他分为Vertex Shader(顶点着色器) & Pixel Shader(像素着色器)

二、Shader的种类

Shader分三类:
1、HLSL(High Level Shading Language):
微软的DirectX图形API继承的Shader。
2、GLSL(OpenGL Shading Language):
用于OpenGL系列图形集的Shader。
3、CG(C for Graphics):
一种可以被OpenGL和Direct3D广泛支持的图形处理器编程语言。是OpenGL和DirectX的上层语言,CG程序运行在OpenGL和DirectX标准顶点和像素着色器的基础上的。

Unity所有的渲染都需要shader来完成,内置的着色器超过80个,可以轻松利用其内置的着色器来完成各种画面效果,并且还提供了自定义shader,方便扩展。Unity使用shaderLab开发语言来组织shader内容,并会针对不同的平台进行编译,类似微软的FX文件或者NAIDIA的CgFX.

三、内建Shader的分类:

1、普通(Normal):用于不透明对象
2、透明(Transparent):用于半透明和全透明对象
3、透明镂空效果(TransparentCutOut):用于完全透明和完全不透明部分组成(不含半透明部分)的对象,像栅栏一样。
4、自发光(Self-llluminated shader Family):用于能反射环境立方体贴图的不透明对象
5、反射(Reflective Shader Family):用于能反射环境立方体贴图的不透明对象
每个类别下包含若干复杂性各异的shader

四、几种常用的Shader

1、Bumped Diffuse 漫反射


Paste_Image.png

2、Bumped Specular 法线高光效果



Paste_Image.png
法线高光效果可以让物体的凹凸效果更加明显

图中左边为漫反射bumped diffuse,右边为高光、凸凹效果bumped specular

3、StandardShader 标准着色器

StandardShader是基于物理的着色器,也就是说不管你选择什么样的贴图都会与光照产生反应,这些贴图可以是同一张图片,Unity会使用必要的资源进行计算。


Paste_Image.png Paste_Image.png

一个简单的Shader脚本:


Paste_Image.png
Paste_Image.png

这个shader定义颜色属性的默认值(1,0.5,0.5,1)_Color(将在Unity3D的材质检索器中作为主要颜色属性显示)。然后一个单一的subshader定义。该subshader组成一个渲染通道,打开顶点照明,并设置了它的基本材质属性。

相关文章

  • Unity--Shader(一)

    一、Shader的介绍 Shader(着色器)Shader是专门用来渲染3D图形的一种技术,他分为Vertex S...

  • Unity--Shader(二)

    一、Shader编程语言基础 一、CG语言基础知识 1、内置元类型: Float :32位浮点型Half :16...

  • unity--Shader实现LOL幽灵船长皮肤效果

    LOL中船长有一款叫做幽灵船长的皮肤,相信大家应该都知道,虽然不是什么好看的皮肤,没什么特效,但是还是有点意思的。...

  • 。一一,一,一,一。

    一,、

  • 一 一

    2018年6月22日 星期五 雨 一水一万物 一星一宇宙 一字一文章 一书一世界 一读一微笑 一赞一知音

  • 一 一

    杨德昌《一 一》,早年曾看过一遍。 婷婷短发,白净,蓝色衬衫,学生裙,黑皮鞋,白袜子,学习很好的中学女生。温柔,懂...

  • 一 一

    给自己无处安放的灵魂找到了家!简书,我的新写作时光!继续,在流年里拾荒,禅落一身的光!

  • 一.一

  • 一.一

    一节车厢,一只行囊,肯为当时一念疯狂。 一根点燃,一缕惆怅,不许未来一片迷茫。 一眼远看,一众不详,哪知各位一去何...

  • 一(一)

    我叫一,总有人喜欢在背后说我,因为很多时候我都是自己一个人。很多人都说我很孤单,看起来很可怜,但我觉得很奇怪,他们...

网友评论

    本文标题:Unity--Shader(一)

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