【知识学习】阐述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…

论文阅读Vlogger: Make Your Dream A Vlog

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于SOAR模型的面部情绪识别

摘要 情绪表达在日常交流中起着特殊的作用,而检测情绪最重要的方法之一就是识别面部情绪状态。因此,自然人机交互的关键点是识别面部表情并根据感知到的情绪提供反馈。模型的实现涉及两个主要步骤。第一步是读取视频并将其转换为图像,然后对…

iOS包ShaderVariantCollection预热慢问题

1)iOS包ShaderVariantCollection预热慢问题 2)使用SBP打Bundle如何读取AssetBundleManifest 3)如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用 4)为什么我的水这么干净,和UE教程里的有差别 这是第392篇…

Pandas 学习笔记(一)

一、pandas简介 Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。 Pandas 是一个开放源码…

ubuntu 18.04 server源码编译安装freeswitch 1.10.11——筑梦之路

前言 这里主要编译支持语音通话、视频通话、短信、webrtc功能的PBX。 安装编译工具包和依赖包 sudo apt-get updatesudo apt-get install -y autoconf git libtool g zlib1g-dev libjpeg-dev libcurl4-openssl-dev libspeex-dev libldns-dev libedit-dev libssl-dev pkg-con…

百问网全志D1h开发板投屏功能实现

投屏功能实现 D1系列号称点屏神器,不仅能点屏,还能用于投屏。 源码准备 百问网为 【百问网D1h开发板】提供了投屏功能需要使用的源码,直接git下载即可: git clone https://github.com/DongshanPI/DongshannezhaSTU_DLNA_Scree…

平板WPS转换的PDF文件保存位置解析

在日常工作和生活中,我们经常需要将文档转换成PDF格式进行分享,以确保接收者能够无障碍地查看文件内容,不受软件版本或操作系统的限制。WPS作为一款功能强大的办公软件,也提供了文档转换为PDF的功能。然而,有时在转换并…

基于振弦采集仪的工程安全监测技术研究与应用

基于振弦采集仪的工程安全监测技术研究与应用 随着工程规模的不断扩大和复杂性的增加,工程安全监测变得越来越重要。工程安全监测的目的是保证工程的安全运行,预防事故的发生,保护人们的生命财产安全。其中,振弦采集仪作为一种重…