首页 > 其他分享 >自定义深度渲染实现物体描边

自定义深度渲染实现物体描边

时间:2024-08-30 17:04:20浏览次数:12  
标签:场景 自定义 渲染 UV Depth 描边 深度 像素点

自定义深度渲染实现物体描边

Scene Texture

首先我们要先了解清楚关于深度渲染的几个属性的含义

  • Scene Texture(场景纹理)节点:通过这个节点,输入UV值,你可以获取到这个UV对应的像素点的各个属性,比如Scene Color(场景颜色),Scene Depth(场景深度),Custom Depth(自定义深度),Opacity(不透明度)等等。
    如果不输入UV,则默认为对所有像素点都做一样的处理。

  • Scene Depth(场景深度):当前画面上的像素点和摄像机之间的距离,也就是从你看得到的地方开始算,比如镜头正对着一面墙,墙后有块石头,那么UV(0.5,0.5)获取到的场景深度就是墙中间的部分与摄像机之间的距离,跟石头无关了。

  • Custom Depth(自定义深度):想获得被遮挡的物体离相机的距离,就要开启物体上的自定义深度了。如果在UV对应的像素点方向上有物体开启了自定义深度,即使被遮挡也可以获取到它的场景深度。如果该位置没有物体开启自定义深度,那么访问到的值则是无穷大。

  • 所以我们就可以根据自定义深度和场景深度的差来判断是否有东西被挡住,如果被挡住显示什么颜色等等了。

  • Post Process Input0这个节点其实就是SceneColor,也就是场景本来的颜色。SceneColor只能用于MaterialDomainSurface(表面)的材质。

  • ScreenPosition(屏幕位置)ViewportUV输出的就是每个像素点在屏幕上的UV值,等于是每个像素点的UV都获取一次,然后进行处理。

  • SceneTexelSize(场景纹素大小):这是一个float2的值,对应着UV,(u,v),uv均为正数。

  • Custom Depth Stencil Value(自定义深度蒙版值):这个值的作用就是用来处理更复杂的情况的,等于把开启了自定义深度的物体再分级,也是可以在Scene Texture中获取到的。默认为0

    要记得在编辑器里把Custom Depth-Stencil Pass改为Enabled with Stencil,这样蒙版值才会生效。

  • 可以在编辑器窗口打开Buffer Visualization(可视化缓冲区)设置为Custom Stencil,可以看到蒙版值非0的物体。(还可以试试其他选项感受下)

后处理材质

M_DepthRenderTest 可通过 WidthEdgeColor 调整描边宽度和颜色

边缘像素

深度差值

Post Process Volume:这个是用来控制后期处理效果的模块,可以在左侧可放置的Volumes里找到。

在settings里可以设置范围,如果勾选了Unbound,则是覆盖整个世界空间。

标签:场景,自定义,渲染,UV,Depth,描边,深度,像素点
From: https://www.cnblogs.com/Dreammoon/p/18389077

相关文章

  • HarmonyOS开发指南:ArkUI自定义Toast弹窗样式规范
     可以通过使用自定义弹窗和定时器达到类似Toast的效果。场景一:自定义弹窗实现弹窗中加入icon和文字,支持Button。方案:⦁   使用@CustomDialog装饰器装饰自定义弹窗,在此装饰器内进行自定义内容(也就是弹框内容)、并创建构造器,与装饰器呼应相连。⦁   使用定时器,在页面......
  • vite3接入vue-quill:处理图片,自定义字体和字体大小,切换源码模式
    环境适用版本:node:14.21.2"vue":"^3.2.26""vite":"^3.1.0"安装模块:"@vueup/vue-quill":"^1.2.0","quill-html-edit-button":"^3.0.0","quill-image-resize-module":"^3......
  • 自定义TextView实现首尾相接跑马灯效果
    需求:TextView内容不满一行的时候不滚动,超过一行的时候缓慢滚动到最后,然后添加空白间隔继续滚动(我们项目用的是三个View一块滚动,停止应该是不一块停止的,毕竟三条内容应该不一样长,所以就需要个监听是否都停止了,如果都停止了,就一块开启继续滚动)importandroid.animation.Animato......
  • 金蝶云星空组织间结算清单增加自定义字段说明
    单据增加字段相关结算单增加,基础资料控件,映射资料。 业务单据-其他出库单增加字段 配置功能特性   创建结算清单时,会生成到自定义字段上      ......
  • 鸿蒙HarmonyOS自定义组件开发和使用_鸿蒙自定义组件
    自定义组件的介绍在开发和使用自定义组件直接,我们需要了解什么是自定义组件?在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行UI界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离,后......
  • net core自定义 Configuration Provider
    创建CustomConfigurationProvider首先,我们需要创建一个自定义的ConfigurationSource和ConfigurationProvider来支持配置文件的读取和监控。publicclassCustomConfigurationSource:IConfigurationSource{publicstringFilePath{get;}publicCustomConfig......
  • 网络防火墙之自定义chain
    网络防火墙自定义链链管理:-N:new,自定义一条新的规则链-X:delete,删除自定义的空的规则链-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受DROP:丢弃-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除 ......
  • Java-List结合ComableFuture自定义线程池的工具类
    为了结合CompletableFuture处理列表中的数据,并利用自定义线程池来并行处理这些元素,我们可以创建一个工具类ListCompletableFutureUtil,它包含一个静态方法processListConcurrently,该方法接收一个列表、一个处理每个元素的函数以及一个自定义线程池,并利用CompletableFutur......
  • 洛雪音乐限定复活 - 自定义音源
    洛雪音乐之前因为被发了绿师函所以软件本身不再提供各大平台的接口,但是保留了自定义音源的功能,目前还能支持播放缓存下载功能。感谢sixyin为广大网友做出的贡献。下面简单介绍一下使用方法:Step1准备文件下载并安装洛雪音乐(lx-music-desktop)[官方页面]|[下载链接]下......
  • go 结构体切片自定义排序
    常见类型的默认实现gosort包默认支持int(sort.Ints(x[]int))、float64s(sort.Float64s(x[]float64))、string(sort.Strings(x[]string))从小到大排序,反序使用类似于sort.Sort(sort.Reverse(sort.Ints(x[]int)))的方式。结构体切片的自定义实现packagemainimport( "fmt" "s......