UnityShader 学习笔记(三)

Unity Shader的形态

surface shaders unity封装的vertex fragment shaders比较完善的 shader 缺点性能较差

vertex and fragment shaders 原始可编程shader

fixed function shaders 固定管线渲染流程,也就是GPU集成的,不需要自己写。

https://docs.unity3d.com/Manual/SL-Reference.html unity shader 官方文档

Shaderlab 基本结构

1.shaderlab 不区分大小写

Properties 存放属性值的区域 可显示在Material(材质球)界面上方便修改

SubShaders 用于写shader代码区域,多个SubShaders 是可以编写多个区域,可以选择性调用,方便切换效果,和选择渲染机制

Fallback  是一个默认的渲染shader信息,如果所有subshaders不适配当前设备,就会默认去找fallback执行shader的去渲染

//shader的名字
shader "name"{
    Properties
    {
        //shader内调用的命,显示在Material上的名字,类型,默认值
        _MyTexture ("My Texture", 2D) = "white" { }
    }

    SubShaders//为渲染编写的代码区域
    {
        
    }

    SubShaders//为渲染编写的代码区域
    {
        
    }
    Fallback "Diffuse"
{
        

Build-In Shader 内置Shader

介绍几个 内置的shader 可以参考

Unlit 不发光,不接受光照,只是渲染一个纹理的shader 渲染速度较快

VertexLit 接受顶点光照的Shader

Diffuse 漫反射光照shader

Normal mapped 支持法线贴图的shader 比漫反射效果更好 需要两张纹理才能渲染 一个纹理贴图,一个法线纹理贴图

Specular 高光反射的shader

Normal Mapped Specular 高光法线贴图 

Parallax Normal mapped 视差法线贴图,增加了视差算法

Parallax Normal mapped Specular 视差高光法线贴图 

知识点:

法线贴图:个人理解就是,模型凹凸面层次采样的贴图,为了更好的显示凹凸层次感,专门一张贴图来保存这些信息,在融合到渲染时

网上摘文

法线贴图就是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。对于视觉效果而言,它的效率比原有的凹凸表面更高,若在特定位置上应用光源,可以让细节程度较低的表面生成高细节程度的精确光照方向和反射效果。

视差 就是从有一定距离的两个点上观察同一个目标所产生的方向差异。从目标看两个点之间的夹角,叫做这两个点的视差角,两点之间的连线称作基线。只要知道视差角度和基线长度,就可以计算出目标和观测者之间的距离。

猜你喜欢

转载自blog.csdn.net/qq_18709863/article/details/84256659