URP管线下Shader中的SubShader Tags、Pass Tags、ShaderLab Commands总结

一、SubShader Tags

        SubShader Tags是提供SubShader信息的键值对,它们允许你指定特定的设置好让渲染管线知道如何处理SubShader。

        下面分别介绍一下SubShader中的tag。

1、 RenderPipeline

        这个tag用来指定SubShader的目标渲染管线,不同的渲染管线有特定的需求和特征,因此,设置适当的渲染管道标记对于实现所需的渲染行为至关重要。

        对于URP渲染关心,这个值应该设置为"UniversalPipeline "。

2、 Queue

        这个tag允许你决定SubShader执行的渲染队列,渲染队列用来决定场景中不同物体的渲染顺序,以确保正确的渲染结果并避免视觉错觉,这是一个很重要的tag。

        可用的值有:"Background"、"Geometry"、"AlphaTest"、"Transparent"、"Overlay"。

        动态修改示例:

material.renderQueue = 2000;

3、 RenderType

        这个tag定义了SubShader的渲染类型,它的值可能是 "Opaque"、 "Transparent" 、 "TransparentCutout"之类的。一般来说这个tag不太重要,它可以用于使用RenderStateBlocks来覆盖的特定子着色器。

4、 DisableBatching

        Batching 是Unity使用的一种技术,通过对象合批来减少绘制调用以优化渲染性能。当禁用批处理标签设置为"True"时,将阻止Unity使用此子着色器对对象进行合批处理。

        可用的值有:"True"、"False"和"LODFading"。

5、ForceNoShadowCasting

        如果要将使用此Shader的物体强制不使用投射阴影,则可以使用这个tag。它通常会与override 或replacement shaders一起使用。

       可用的值有:"True"和"False"。

6、 CanUseSpriteAtlas

        当使用二维精灵时,这个tag允许您指定这个SubShader是否可以使用精灵地图集以提高性能。

         可用的值有:"True"和"False"。

7、 PreviewType

        这个tag确定如何在Unity编辑器的检查器中预览子着色器。对于开发人员在开发期间可视化SubShader的表现是很有用的。

        可能的值有:"Sphere"、"Plane"和"Skybox"。

二、Pass Tags

        与应用于整个SubShader 的tag不同,Pass tag只在特定Pass内起作用。您可以为同一对象定义不同的渲染技术,从而实现复杂和动态的视觉效果。

1、LightMode

        该tag用于定义特定的Pass是否应该由特定的渲染流程进行渲染。例如,当在Deferred 渲染路径中时,Unity将渲染一个GBuffer。当渲染GBuffer时,Unity寻找具有UniversalGBuffer的LightMode 的Pass,然后渲染该Pass。类似地,在渲染深度纹理时,Unity会寻找具有DepthOnly的LightMode 的Pass。如果没有找到相应的Pass,Unity将不会对应的Shader。

        可能的值有:"UniversalForward"、"UniversalGBuffer"、"UniversalForwardOnly"、"Universal2D"、"ShadowCaster"、"DepthOnly"、"Meta"、"SRPDefaultUnlit"。其实如果不设置"LightMode"的值的话,其默认值就是"SRPDefaultUnlit",就是向前渲染和延迟渲染都可以的意思。

        URP中不支持的值有:"Always"、"ForwardAdd, PrepassBase"、"PrepassFinal"、"Vertex"、"​​​​​​​VertexLMRGBM"、"​​​​​​​VertexLM"。

三、ShaderLab Commands

1、Cull

        可能的值有:"Front"、 "Back"或者"Off"

2、ZTest

        可能的值有:Less、LEqual、Equal、Greater、GEqual、Equal、NotEqual、Always、Never。

        动态修改示例:

material.SetInt("_ZTest", (int)UnityEngine.Rendering.CompareFunction.LessEqual);

3、ZWrite

         可能的值有:On或者Off。

        动态修改示例:

material.SetInt("_ZWrite", 1);

4、Blend

        可能的值有:One、ZeroSrcColor 、SrcAlpha、DstColor、DstAlpha、OneMinusSrcColor、OneMinusSrcAlpha、OneMinusDstColor、OneMinusDstAlpha 。

        常见使用组合:

Blend SrcAlpha OneMinusSrcAlpha // 传统透明度
Blend One OneMinusSrcAlpha // 预乘透明度
Blend One One // 加法
Blend OneMinusDstColor One // 软加法
Blend DstColor Zero // 乘法
Blend DstColor SrcColor // 2x 乘法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3源码梳理:运行时之基于h函数生成vnode的内部流程

VNode 节点类型 对于vnode而言,具备很多节点类型vue源码中patch函数switch处理包含了好几种类型,常见类型如下 Text:文本节点Comment:注释节点Static:静态dom节点Fragment:包含多个根节点的模板被表示为一…

SHT10温湿度传感器——STM32驱动

———————实验效果——————— 🎄硬件外观 🎄接线 🎈 3.3V供电 🎈 IIC通讯 🎄 代码获取 🎈 查看下方 ———————END———————

FB使用汇编模拟GoSub(子函数)功能

在FB里不支持GoSub功能,在面对函数内简单又重复的操作,而所涉及变量又比较多的时候,再在外边定义一个函数就显得累赘,此时如果可以有一个函数内部的子函数,就显得方便多了。 在汇编探索里发现,可以使用汇编…

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘 2023/12/18 17:06 百度搜索:下载 windows10 https://www.microsoft.com/zh-cn/software-download/windows10 下载 Windows 10 更新之前,请参阅 Windows 版本信息状态中的已知问题&a…

企业要想成功就必须培养“支持说真话的文化”

大家好,欢迎来到我的博客。今天,我想和大家谈谈企业文化的重要性,特别是支持说真话的文化。 1. 为什么说真话很重要? 在当今社会,说真话似乎越来越难了。我们害怕得罪别人,害怕被孤立,害怕被认…

系统设计——系统安全

HTTPS 是如何工作的? 安全超文本传输​​协议(HTTPS)是超文本传输​​协议(HTTP)的扩展。HTTPS 使用传输层安全性(TLS)传输加密数据。如果数据在网上被劫持,劫持者得到的只是二进制…

php去掉数组的key,重组数组的方法

php去掉数组的key,重组数组的方法 方法一:foreach循环方法二:array_values()函数方法三:array_map()函数方法四:强制类型转换 方法一:foreach循环 使用foreach循环遍历数组时,可以只取出数组的…

TaxtArea中内嵌一张放松图片,该图片实现属性悬浮放大功能

TaxtArea中内嵌一张发送图片&#xff0c;该图片实现属性悬浮放大功能&#xff0c;离开还原效果&#xff0c;点击发送按钮后&#xff0c;发送图片变为loading&#xff0c; <div class"textarea-wrapper" ><a-textarearef"textArea"v-model.trim&q…

汇编语言学习(3)

更好的阅读体验&#xff0c;请点击 YinKai s Blog 。 内存段 ​ 上面讨论的汇编程序的三个部分&#xff0c;也代码各种内存段。 ​ 有趣的是&#xff0c;如果将 section 关键字替换为 segment&#xff0c;将会得到相同的结果&#xff0c;这是因为对于汇编器而言&#xff0c;这…

web应用开发技术的一些概念

一、Servlet 1.Servlet的工作过程&#xff1a; Servelt的工作流程示意图 &#xff08;1&#xff09;客户端发起一个Http请求到服务器&#xff0c;请求特定的资源或者是要执行特定的操作 &#xff08;2&#xff09;服务器在接收到请求后&#xff0c;根据请求相应的URL将请求分发…

PostgreSQL进阶操作

PostgreSQL进阶操作 SQL执行顺序 (9) SELECT (10) DISTINCT col1, [OVER()] (6) AGG_FUNC(col2) (1) FROM table1 (3) JOIN table2 (2) ON table1.col table2.col (4) WHERE constraint_expression (5) GROUP BY col (7) WITH CUBE|ROLLUP (8) HAVING constraint_expression…

21、同济、微软亚研院、西安电子科技大提出HPT:层次化提示调优,独属于提示学习的[安妮海瑟薇]

前言&#xff1a; 本论文由同济大学、微软亚洲研究院、西安电子科技大学&#xff0c;于2023年12月11日中了AAAI2024 论文&#xff1a; 《Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models》 地址&#xff1a; [2312.06323]…

C++泛型超详细合集-泛化的编程方式-程序员编写一个函数/类的代码让编译器去填补出不同的函数实现-供大家学习研究参考

以Add函数为例&#xff0c;在函数模板存在的同时&#xff0c;我们还可以单独写一个int类型的add函数。这都归功于函数重载的存在。 同时&#xff0c;我们还可以使用<int>来指定函数模板重载为已存在的Add函数。因为本质上这两个函数是不同的&#xff0c;并不会冲突。 下…

js 数据类型

js的八种数据类型&#xff1a; 基本类型&#xff08;基本类型&#xff09;&#xff1a;Number&#xff0c;String&#xff0c;Boolean&#xff0c;Undefined&#xff0c;Null&#xff0c;Symbol 引用数据类型&#xff08;对象类型&#xff09;&#xff1a;Object&#xff0c;…

mybatis中xml文件容易搞混的属性

目录 第一章、1.1&#xff09;MyBatis中resultMap标签1.2&#xff09;MyBatis的resultType1.3&#xff09;MyBatis的parameterType1.4&#xff09;type属性1.5&#xff09;jdbcType属性1.6&#xff09;javaType属性1.7&#xff09;ofType属性 友情提醒: 先看文章目录&#xff…

【k8s】--insecure-registry详解 ( 访问仓库、https、http)

文章目录 一、--insecure-registry是什么二、如何使用--insecure-registry三、--insecure-registry的安全风险四、--insecure-registry的替代方案五、总结参考 一、–insecure-registry是什么 --insecure-registry是docker中用来设置与docker registry通信的安全限制的一个参数…

猫粮哪个牌子好又安全?好又安全的主食冻干猫粮牌子推荐

现在越来越多的铲屎官关注猫咪的食品选择&#xff0c;而冻干猫粮一直是热门话题。其中主食冻干的肉含量很高&#xff0c;富含猫咪成长所需的蛋白质、维生素等营养物质。而且冻干工艺还保留了食材的原始风味&#xff0c;复水后可以恢复鲜肉的口感&#xff0c;猫咪很喜欢吃&#…

人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)

上期文章我们分享了人工智能Keras图像分类器(CNN卷积神经网络的图片识别的训练模型),本期我们使用预训练模型对图片进行识别:Keras CNN卷积神经网络模型训练 导入第三方库 from keras.preprocessing.image import img_to_array from keras.models import load_model impor…

.net web API的文件传输(上传和下载)客户端winform

防止反复造轮子&#xff0c;直接上代码。 客户端代码如下&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using …

conda channel的镜像设置

目录 前言1 显示所有channel2 移除清华镜像3 添加可用的清华源4 下载opencv5 一些其他的conda指令参考文献 ———————————————— 版权声明&#xff1a;本文为CSDN博主「宇内虹游」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链…