UnityShader学习1 基本概念
1.Shader是图形可编程方案的图形片段。
2.渲染管线是一种计算机数据到最终图形的形象描述。
3.unity shader就是加工贴图的方法,得到成品材质。
4.shader有三大主流编程语言
a. HLSL,是基于DirectX。
b. GLSL, 是基于OpenGl。
c.CG,NVIDIA公司推出的 C for luanguage。
OpenGl跨平台优秀;DirectX仅支持微软的产品,比如windows、XBox;CG是OpenGL和DirectX的高级语言,一种脚本语言。
5.GPU为图形处理器。
6.UnityShader有三种写法,分别为:surface shader;vertx and fargement shader;fixedfunction shader。
其中,surfshader是unity最推荐的一种写法,大部分效果都可以完成,没有pass通道,unity会把surfshader编译成vertex and fragment shader;
fixedfunctionshader最简单,适合老一点的硬件,仅能完成部分效果,但是速度快,支持所有平台;
vertex and fragment shader最精细、最硬核。
这段话是别人文章里复制来的:unity 最后会根据你打包的不同平台已经使用的图形API 再把shaderlab的代码生成HLSL或者GLSL
在unity钟,你选中一个shader,属性窗口里点击gen xxx 可以看到它为不同平台生产单真正shader。
7.shaderlab的基本结构
Shader "Custom/NewSurfaceShader" {//Unity的菜单 Properties {//属性 _Color/*_Color是变量*/ ("Color"/*"Color",这是在编辑窗口里显示的名字*/, Color/*Color是类型*/) = (1,1,1,1)//_Color是变量 } SubShader { /*SubShader这东西可以有多个,按顺序向下执行,只执行一个。
为了应对不同的硬件,可以写多个,从难到简,当硬件不支持第一个,就会向下运行*/ } } FallBack "Diffuse"//当上面的SubShader都不能执行的时候,Unity会执行FallBack指定的unity内置着色器。 }
关于内置着色器,下面会列举几个,详细请看官方手册。
a. Unlit:不发光也不被光影响,适合UI。
b.VertexLit:顶点光照。顶点上进行光照处理。
c.Diffuse:漫反射,在片段里进行光照运算。
d.Normal mapped:法线贴图。对贴图进行采样,然后进行光照计算,主要用于增加模型贴图。
e.Specular:高光。
f.Normal mapped Specular:高光发现贴图。
g.Parallax Normal mapped Specular:视差高光发现贴图。视差就是左右眼看到的物体不一样,就是更精细。
浙公网安备 33010602011771号