LOD:Level of Detail
作用:unity引擎会根据不同的LOD值在使用不同的SubShader
Unity选择对应的Subshader会从上往下寻找第一个小于等于LOD值的子着色器。一个着色器中会有一到多个SubShader,但是系统每次只会执行一个子着色器,选择子着色器的标准就是根据子着色器所设置的LOD的值来进行选择。

如何设置Shader的LOD的值:通过Shader的下面属性进行设置:shader.maximumLOD=500;

(1)新建Shader脚本如下:

Shader "Custom/LODShader" {Properties{_Color("Color", Color) = (1,1,1,1)_MainTex("Albedo (RGB)", 2D) = "white" {}_Glossiness("Smoothness", Range(0,1)) = 0.5_Metallic("Metallic", Range(0,1)) = 0.0}// 每次只会根据情况来选择一个可执行的SubShader// 找到第一个<= Shader.maximumLOD 这个subShader执行;SubShader{Tags { "RenderType" = "Opaque" }LOD 600 // LOD-----------------这里设置为600CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard fullforwardshadows// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input {float2 uv_MainTex;};half _Glossiness;half _Metallic;fixed4 _Color;void surf(Input IN, inout SurfaceOutputStandard o) {o.Albedo = fixed3(1.0, 0.0, 0.0);}ENDCG}SubShader{Tags { "RenderType" = "Opaque" }LOD 500 // LOD-----------------这里设置为500CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard fullforwardshadows// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input {float2 uv_MainTex;};half _Glossiness;half _Metallic;fixed4 _Color;void surf(Input IN, inout SurfaceOutputStandard o) {o.Albedo = fixed3(0.0, 1.0, 0.0);}ENDCG}SubShader{Tags { "RenderType" = "Opaque" }LOD 400 // LOD-----------------这里设置为400CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard fullforwardshadows// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input {float2 uv_MainTex;};half _Glossiness;half _Metallic;fixed4 _Color;void surf(Input IN, inout SurfaceOutputStandard o) {o.Albedo = fixed3(0.0, 0.0, 1.0);}ENDCG}FallBack "Diffuse"
}

描述如下:该Shader中存在三个SubShader,LOD分别设置为600,500,400.。其对应的颜色分别设置为红色、绿色、蓝色

(2)创建一个立方体,使用该Shader对应的材质

(3)创建脚本LODCtrl,通过键盘的ABC控制Shader内部的LOD,该脚本挂载给相机。代码如下所示

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LODCtrl : MonoBehaviour
{public Shader shader;//将Shader拖进来即可void Start(){Debug.Log(this.shader.maximumLOD);}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.A)){// 当前这个shader最大的LOD_value;this.shader.maximumLOD = 600;}if (Input.GetKeyDown(KeyCode.B)){this.shader.maximumLOD = 500;}if (Input.GetKeyDown(KeyCode.C)){this.shader.maximumLOD = 300;}}
}

(4)运行,查看效果,通过按ABC按键,修改maximumLOD的值。查看Cube颜色的变化。

Unity Shader LOD使用相关推荐

  1. Unity Shader LOD详解

    主旨 介绍shader lod,需要先看官方文档 Shader LOD的作用 微调不同硬件上的着色器性能 使用方法 1 shader里定义多个subshader,然后设置其lod值 2 c#代码设置某 ...

  2. Unity Shader着色器优化

    对游戏开发者而言,着色器长久以来就是游戏开发中的重要部分,在Unity中编写并实现着色器的过程直观且高效,优秀的着色器还可以创造非常精美的游戏画面,同时保证极高的性能.今天将由Unity的技术工程师张 ...

  3. Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释

    图1:在Unity内将sphere细分后 图2:在Unity内将sphere细分后 Unity官网关于细分着色器的资料比较少,只有在Surface Shader中使用的例子.我看了下Surface S ...

  4. 2d shader unity 阴影_【Unity Shader】平面阴影(Planar Shadow)

    来介绍一种适用于移动平台的高性能实时阴影解决方案--平面阴影(Planar Shadow). 由于Unity内置的实时阴影实现方式是屏幕空间阴影贴图(Screen Space Shadow Map)非 ...

  5. Unity Shader - GrabPass 实现武器热扭曲拖尾效果

    文章目录 先来看看效果 实现思路 Unity带的TrailRender组件 编写脚本实现 CSharp Shader 参数 注意性能 还可以优化 总结 Project 以前龙之谷喜欢选战士,帅气. 战 ...

  6. Unity Shader 实现透明护盾效果

    这是大致的效果图,图片压得有点糊.我参考了本篇博客 Unity shader护盾特效. 这是原博客展示的图片: 本例采用了特殊的模型与贴图,原博客里有视频链接的教程,从模型到贴图. 以下是代码 // ...

  7. Unity Shader - URP ShadowCast ShadowRecieve - 投影 和 接受阴影

    文章目录 Shadow Caster Using URP Shadow Caster Pass Using Custom Shadow Caster Pass 先来看看 [没有] apply shad ...

  8. Unity Shader 常规光照模型代码整理

    Unity Shader 常规光照模型代码整理 本次整理在Unity中几种常见的光照模型,包含 1.BlinnPhong(常规光照模型) 2.ForwardRender(多灯光带有衰弱前向渲染) 3. ...

  9. Unity Shader学习-高光反射

    Unity Shader学习-高光反射 高光反射计算公式 高光反射 = 光源的色彩和强度 * 材质的高光反射系数 * pow(max(0,视角方向 · 反射方向),_Gloss) 视角方向 = ref ...

最新文章

  1. Android模拟器SD卡的使用
  2. python笔记本-如何用Python在笔记本电脑上分析100GB数据(下)
  3. Eclipse如何导入maven项目,以及配置maven
  4. controller实现pdf的下载功能
  5. boost::fibers::unbuffered_channel用法的测试程序
  6. ML.NET 0.9特性简介
  7. 仿造小红书页面代码html,jQuery仿小红书登录页,背景图垂直循环滚动登录页,向上循环滚动的动画,实现一张背景图片的无缝向上循环js滚动...
  8. voip和rtc_WebRTC与VoIP的对比
  9. get------引用接口
  10. Kubernetes(K8s) 1.14.3 单机版配置 node 节点 是 taint 时解决方法
  11. 面向对象12:==运算符和equals()方法、toString()方法
  12. html登陆滑动验证,js实现滑动滑块验证登录的方法
  13. 收评:5月24日资金流向(摘自益盟)
  14. 关于校园招聘 - 秋招和春招
  15. 继Pyecharts之后,蚂蚁又开源一款国产可视化利器
  16. 12306火车订票系统谈网站架构优化
  17. python 日历壁纸_极客编程日历2018桌面壁纸
  18. Android中RecyclerView的长按
  19. bzoj-1025 [SCOI2009]游戏
  20. debian linux上usb摄像头,debian linux 下面安装摄像头

热门文章

  1. CodeForces 104B-Testing Pants for Sadness(思维题)
  2. Linux学习之grub配置文件介绍
  3. 超宽屏显示器32寸,双11电竞游戏显示器的最佳选择
  4. 花了几百万,仍然无法消除「数据孤岛」,这份数字化建设方案下载
  5. l293d电机驱动_L293D电机驱动器IC
  6. Android屏幕旋转设置
  7. FM6124D 是一款专为 LED 模块和显示器设计的驱动 IC
  8. 如何在html中加入音效,给网页中的按钮和图片添加声音
  9. 抽屉远离在计算机的应用,中学趣味数学:抽屉原理与电脑算命
  10. MaNGOS-Zero源码学习之realmd认证登录服务器(一):认证登录基本流程