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:视差高光发现贴图。视差就是左右眼看到的物体不一样,就是更精细。

 

posted on 2019-05-09 17:02  炼金师  阅读(129)  评论(0)    收藏  举报

导航