【UnityShader】Shader基础

本文介绍了Unity Shader的基础知识,包括材质、Shader模板、ShaderLab语言和Unity Shader的结构。内容涵盖Standard Surface Shader、Unlit Shader、Image Effect Shader和Compute Shader。还讨论了Shader在Inspector面板中的显示、渲染队列、LOD以及表面着色器和顶点/片元着色器的区别。
摘要由CSDN通过智能技术生成

材质

  材质是一个数据集,主要功能就是给渲染器提供数据和光照算法。

Unity Shader

  Unity Shader 是 Unity 为开发者提供的高层级的渲染抽象层。

Unity提供了 4 种 Unity Shader 模板

  • Standard Surface Shader
      包含了一个包含了标准光照模型的表面着色器模板;
  • Unlit Shader
      不包含光照(但包含雾效)的基本顶点/片元着色器;
  • Image Effect Shader
      为我们实现各种屏幕后处理效果提供了一个基本模板;
  • Compute Shader
      产生一个特殊的 Shader,这类 Shader 旨在利用 GPU 的并行性来进行一些常规渲染流水线无关的计算;

在Unity中需要配合使用材质和Unity Shader才能达到效果。常见的流程:

  1. 创建Unity Shader 和材质;
  2. 把 Unity Shader 赋给材质;
  3. 将材质赋给要渲染的对象;
  4. 在材质面板上调整 Unity Shader 属性(使用的纹理、漫反射系数等)来查看渲染效果;

ShaderLab

  Unity 提供的编写 Unity Shader 的一种说明性语言。

Unity Shader在 Inspector 面板中显示的内容

  • Default Maps
    指定该 Unity Shader 使用的默认纹理。当任何材质第一次使用该 Unity Shader 时,这些纹理就会自动被赋予到相应的属性上。
  • Surface shader
    是否是表面着色器。
  • Show generated code
    这个文件里将显示 Unity 在背后为该表面着色器生成的顶点/片元着色器。
  • Fixed function
    是否是固定函数着色器。
  • Compile and show code
    下拉列表可以让开发者检查该 Unity Shader 针对不同图像编程接口(例如 OpenGL、D3D9、D3D11等)最终编译成的 Shader 代码,直接单击该按钮可以查看生成的底层的汇编指令,可以利用这些代码来分析和优化着色器。
  • Cast shadows
    是否产生阴影
  • Render queue
    使用的渲染队列
  • LOD
    细节级别,可以在一个 shader 里写一出组 SubShader ,分别设置不同的 lod ,lod 越大的对应性能越好,越低的性能越差。就可以用设置 lod 的方法来控制游戏画面的渲染质量。在Unity3D->Project Setting->QualitySettings中的Maximum LODLevel可以设置最大LOD等级,Shader的LOD值是小于所设定的LOD值,才会被编译使用。Maximum LODLevel的等级可以设置7个级别,例如设置为1,则表示把最大LOD值设置为100,等级2,则最大LOD值为200,以此类推,若设置为0,则表示不进行LOD判断,任何LOD值的Shader都会被使用。
  • Ignore projector
    是否忽略投影
  • Disable batching
    是否关闭批处理

Unity Shader 的结构

// Shader 的名字,通过名字在材质面板的下拉列表中查找。
Shader "AAAA/NewUnlitShader"
{
    Properties
    {
        // Properties 是材质和 Unity Shader 的桥梁;
	    // Properties 语义块中包含了一系列的属性,这些属性将会出现在材质面板中;
        // Properties 可以不声明任何材质属性;
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Color Tint", Color) = (1.0, 1.0, 1.0, 1.0)

        // _Name ("Display name", Float) = 1 
        // 解释:
        //     _Name 属性的名字,一般由下划线开始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值