【知识学习】阐述Unity3D中Stencil的概念及使用方法示例

在Unity3D中,Stencil(模板)是一种高级的图形渲染技术,它允许开发者对渲染过程进行精细控制。Stencil Buffer是附加在颜色缓冲区和深度缓冲区之外的另一个缓冲区,它可以用来存储每个像素是否应该被渲染的信息。

Stencil Buffer 的基本概念

  • Stencil Test: 模板测试,它在像素片段通过深度测试之后进行,根据模板缓冲区中的值来决定是否渲染该像素。
  • Reference Value: 参考值,模板测试将使用这个值与模板缓冲区中的值进行比较。
  • Compare Function: 比较函数,定义了模板测试的条件,比如等于、不等于、小于等。
  • Stencil Actions: 模板动作,定义了测试通过或失败时对模板缓冲区的值进行的操作,如替换、增加、减少等。

使用 Stencil 的场景

  1. 轮廓线渲染:在物体周围绘制轮廓线。
  2. 遮挡剔除:防止某些对象被其他对象遮挡。
  3. 特殊效果:如阴影、反射、折射等。

使用方法示例

在Unity中,Stencil的使用通常涉及到自定义Shader。以下是一个简单的Stencil Shader示例,它展示了如何使用Stencil来实现一个简单的轮廓线效果:

Shader "Custom/StencilOutline" {Properties {_MainTex ("Texture", 2D) = "white" {}_OutlineColor ("Outline Color", Color) = (0,0,0,1)_OutlineWidth ("Outline Width", Float) = 1.0}SubShader {Tags { "RenderType"="Opaque" }LOD 100Pass {CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata {float4 vertex : POSITION;};struct v2f {float4 pos : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;fixed4 _OutlineColor;float _OutlineWidth;v2f vert (appdata v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target {// 根据模板测试的结果来决定是否渲染轮廓线return _OutlineColor;}ENDCG}}FallBack "Diffuse"
}

在这个Shader中,我们没有实现完整的轮廓线渲染逻辑,但是它展示了如何设置一个Shader来使用Stencil。在实际使用中,你需要在Pass中设置Stencil的状态,例如:

Stencil
{Ref 1Comp AlwaysPass Replace
}

行代码设置了Stencil的参考值为1,总是通过测试,并且当测试通过时,使用替换操作来更新Stencil Buffer的值。

在Unity的渲染管线中,你可能还需要在渲染设置中配置Stencil状态,或者使用命令如GL.Stencil()来动态设置Stencil状态。

请注意,Stencil的使用需要对Unity的渲染流程和Shader编写有一定的了解。Stencil技术可以创建一些非常酷的效果,但是也需要仔细考虑性能影响和渲染顺序。

扫描下方二维码

获取更多游戏开发知识和学习资料~

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

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

相关文章

自动化物流控制系统WCS应用与异常处理

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载 WCS的定义与作用: 物流仓储设备…

探索AIGC治愈系创作:Stable Diffusion 带你轻松复刻某书爆款动漫卡通文案!

hello,大家好我是安琪! 情感治愈类一直是受众群体很高非常火爆的赛道,安琪也关注到在某书平台上,漫画治愈类风格的内容也是非常的受欢迎。先来看看以下一些案例 看看这几个账号内容的质量就可以看出该部分内容是很受欢迎的&#x…

go get 和 go mod tidy 的区别

go get 和 go mod tidy 的效果很相近,它们都可以下载需要的依赖项并更新 go.mod 和 go sum 所以在使用时经常会发生混淆。其实它们最主要区别就在于 go mod tidy 能在我们从代码中移除某个依赖之后,重新整理 go.mod 和 go.sum 文件,比如我们在…

论文阅读Vlogger: Make Your Dream A Vlog

摘要 论文介绍了一个名为“Vlogger”的通用人工智能系统,它能够根据用户的描述生成分钟级的视频博客(vlog)。与通常只有几秒钟的短视频不同,vlog通常包含复杂的故事情节和多样化的场景,这对现有的视频生成方法来说是一…

正版软件 | DupInOut Duplicate Finder:智能清理,让数据井然有序

在信息爆炸的时代,我们经常面临数据管理的挑战。DupInOut Duplicate Finder 是一款专为Windows 设计的重复文件查找工具,帮您快速识别并删除重复的文档、音乐、视频和照片,让您的计算环境更加清洁、有序。 精准查找,一键删除 DupI…

专利-高效低成本声音克隆系统及其资源优化管理方法

一、发明背景 当前声音克隆技术的成本较高,例如,原有技术的成本大约为500美元。这种高成本限制了声音克隆技术的广泛应用和商业化潜力。 二、发明的新颖性 描述基于对等节点结构的声音克隆集群,每个节点都能提供训练和推理服务。强调前端处…

下拉选择输入框(基于elment-ui)

最近在需求中,需要有一个下拉选择功能,又得可以输入,在 element-ui 官网找了,发现没有适合的,然后在修炼 cv 大法的我,也在网上看了一下,但是也都感觉不合适,所以就自己写了一个&…

Todesk远程连接Ubuntu卡100%,以及小窗口打不开

Todesk远程连接Ubuntu卡100%,以及小窗口打不开 使用Todesk远程连接Ubuntu一直卡100%进不去还有todesk里的小悬浮窗打开就会小时(小下拉框会消失) 使用Todesk远程连接Ubuntu一直卡100%进不去 还有todesk里的小悬浮窗打开就会小时(小…

追求准确,还是追求举一反三,聊天机器人智能程度的困境 | Chatopera

在为企业客户上线聊天机器人客服的过程中,总会遇到一个问题,这让用户和我们都感到纠结。 到底是追求让机器人能准确的回答问题,还是让机器人可以举一反三的回答问题。 准确的回答问题,就是不容许回答错了,但是这样机…

这5款Windows高质量软件,吊打付费,谁用谁爽

咱们话不多说,进入我的电脑。 一键远控 一个支持远程控制电脑、传输文件、观看视频、锁定电脑屏幕以及重启和关机的免费远程控制软件。 再输入对应的设备识别码和验证码后,就可以对另一台电脑进行各种操作,同时也支持多台设备同时也能控制。…

Spring Boot中的文件下载实现

Spring Boot中的文件下载实现 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下在Spring Boot中如何实现文件下载的技术细节和最佳实践。 介绍…

北京物流调度app开发,放心邮,安全到

随着交通运输的不断发展与完善,我国快递物流行业也不断成熟。但普通的快递所能运输的种类和数量有限,且可能对一些贵重、易碎的物品造成损害。为此,人们将目光投向了运输种类和数量更广泛的物流运输。为了让传统的物流运输能够像快递一样便捷…

vue2 使用 highlight.js 实现代码高亮(一些使用上遇到的坑)

一,使用 1.下载 npm install highlight.js --save2.封装成全局自定义指令 utils/highlight.js import hljs from "highlight.js"; import highlight.js/styles/stackoverflow-light.css //sql语言提供的关键字不全可以自定义补充 var sql = hljs.getLanguage(sql)…

本地调试时不将服务挂到nacos

本地调试的时候不将服务挂到nacos从而影响前端和测试使用,需要在edit Configurations...加入一句配置信息。 -Dspring.cloud.nacos.discovery.register-enabledfalse

由浅入深,走进深度学习(补充篇:转置卷积和FCN)

本期内容是针对神经网络层结构的一个补充,主要内容是:转置卷积和全连接卷积网络 相关内容: 由浅入深,走进深度学习(2)_卷积层-CSDN博客 由浅入深,走进深度学习(补充篇&#xff1a…

7月开始,考研数学0️⃣基础线代30天满分规划

线代零基础? 那千万不要去跟李永乐老师的线代课程,因为李永乐老师的线代课程比较进阶,适合有一定基础的同学去听,下面这两位才是零基础线代的神! 一个是喻老,另外一个是汤家凤! 这两个老师的…

阎石《数字电子技术》面试建议

参考书:《数字电子技术基础》 阎石 高教出版社 整体来说数电要比模电简单,能问的地方也不多,但是一定要注意犄角嘎拉里的东西 , 比如去年就有老师问 sram 是什么的缩写,很简单,但平时不注意就会回答不上来。…

UE4_材质_水涟漪、水深制作_Ben教程

学习笔记,不喜勿喷!侵权立删,祝愿生活越来越好! 效果图如下: 创建水材质的教程,首先需要外出收集一些参考,看一看你将要做的事情很重要,确定将要模仿物体的关键属性,从这…

华为面试题及答案——机器学习(二)

21. 如何评价分类模型的优劣? (1)模型性能指标 准确率(Accuracy): 定义:正确分类的样本数与总样本数之比。适用:当各类样本的数量相对均衡时。精确率(Precision): 定义:预测为正类的样本中实际为正类的比例。适用:当关注假阳性错误的成本较高时(例如垃圾邮件检测…

小山菌_代码随想录算法训练营第三十五天| 509. 斐波那契数 、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数 文档讲解&#xff1a;代码随想录.斐波那契数 视频讲解&#xff1a;手把手带你入门动态规划 | LeetCode&#xff1a;509.斐波那契数 状态&#xff1a;已完成 代码实现 class Solution { public:int fib(int n) {if (n < 1)return n;vector<int> dep(n…