【UE】尝试一种老派的平面假反射做法,与进一步改进效果的思路

news2024/11/15 8:24:51

在这里插入图片描述
在实践中,常常需要为类似荧幕,LED广告牌等平面制作反射。
但会遇到各种问题,例如在使用屏幕空间反射时,平面必须在画面内
平面反射捕获与光线追踪又代价高昂

因此,在一些情况下依然会使用一种历史悠久的反射手法
在这里插入图片描述


这种old school的做法,核心原理就是在地下放一个对称的面片(如下图所示)

在这里插入图片描述
其中,有关的Shader都在地下的面片中

  • 地面上部的面片是普通的半透明,这是为了防止其参与SSR屏幕空间反射
  • 地面和周围模型,都是正常的模型和材质
  • 只有藏在地下,用于表现反射的面片是特殊的,接下来我们就制作它

制作

创建材质

我们拷贝一个地面上部面片的材质

  • M_Plane 为地面上面片材质
  • M_Plane_R 为地面下的反射材质
    在这里插入图片描述
    他们现在内容相同,材质如下

在这里插入图片描述
在这里插入图片描述

放置对称模型

复制模型并对称

不用说,首先复制一个面片,然后将面片Z轴翻转
在这里插入图片描述

更换材质

然后为下部面片更换材质为M_Plane_R

在这里插入图片描述> 在这里插入图片描述

接下来将两个面片的对称轴移动到地面水平位置,此时下部面片已经进入地下,看不到了
在这里插入图片描述

制作Shader

接下来我们就要开始制作反射Shader(M_Plane_R)了

1.禁用深度测试

打开M_Plane_R,第一步就是为其禁用深度测试
在这里插入图片描述
现在,透明被绘制出来了

在这里插入图片描述

2.制作自定义深度

现在我们要自己写一个深度
在这里插入图片描述
这里利用半透明的特性,SceneDepth-PixelDepth求得面片到表面距离
然后对距离进行一个Remap,让透明度根据距离进行线性衰减
最后使用Power,Exp=2 (图里写错成0)让这个过渡以指数进行衰减

效果如下:
在这里插入图片描述
在这里插入图片描述
到此老派的做法已经完成了
我把反射面片附加到了上部模型,使其一起移动,效果如下
在这里插入图片描述

改进

我们并不在此结束,因为效果仍然有巨大改进空间
在延迟渲染引擎中,半透明本质是一种后期效果,因此它可以拿到Gbuffer

粗糙度

接下来我们尝试为其应用粗糙度
我们可以获取Gbuffer中的粗糙度,然后对贴图进行高斯模糊等处理

0成本模糊方案

考虑我们制作这个反射,本身就是为了节省成本
因此这里使用了一种0成本的模糊方案,这要求贴图有MIP
在这里插入图片描述
TextureSample选择MIP模式

在这里插入图片描述
在这里插入图片描述

演示不同值的影响
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
随着MIP的增大,贴图分辨率逐渐减小,也就会变得模糊,这张贴图有13个等级的MIP

我们利用这个特性进行0成本的模糊。

原理演示:
在这里插入图片描述

如图所示,这里我们使用了粗糙度作为蒙版输入MIP:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/263fe9b35f69485f963834d63e22aedb.png
在这里插入图片描述
随着粗糙度增加,反射光线理应减少,表现为更多的地面颜色
因此翻转粗糙度,乘入透明度,以减少光线
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

法线

现在只可以在平面进行投影
但我们还可以拿到法线Gbuffer
那么我们待续…

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

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

相关文章

树(二叉树)

树 1.1 特性 1.1.1 什么是树 树(Tree)是(n>0)个节点的有限集合T,它满足两个条件: (1) 有且仅有一个特定的称为根(Root)的节点。 其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm&#x…

【Docker】Linux系统以及威联通QNAP部署思源笔记的通用教程

本文首发于 ❄️慕雪的寒舍 本文测试的是旧版本v2.11.4的部署方式,实测当前(2024.08.15)最新的v3.1.3版本也可以用相同的方式部署。本文的部署方式共写了三种,非qnap的linux系统也可以参考本文部署思源笔记。 阅读本文之前&#…

SpringBoot 集成积木报表

SpringBoot 集成积 前言 积木报表是jeecg的一款开源但代码不开源的一款自定义报表,可以基于网页灵活 调整报表的布局、样式等内容,无需编程,专为企业数据分析、报表制作而设计; 降低管理人员汇总制作报表的门槛,解决…

在表格上,按照单元格数值显示单元格背景进度条

想要实现的效果如下: 单元格背景进度条的大小取决于当前单元格里的数值 TreeList和GridControl的设置方法都是相同的:都是通过给列设置FormatRule来实现的。 相关代码及设置如下: 1、给控件绑定数据源,我的数据源是一个DataTab…

25届网安秋招,信息泄露常问之配置信息泄露

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

基于STM32开发的智能花园灌溉系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化土壤湿度监测与处理灌溉控制与状态指示Wi-Fi通信与远程监控应用场景 家庭花园智能灌溉农业田地的智能灌溉管理常见问题及解决方案 常见问题解决方案结论 1. 引言 随着智能家居技术…

录屏神器!一键搞定视频录制,小白也能轻松上手

在工作当中录制会议内容或者看电影录制精彩瞬间、学习时录制网课的重点部分等等都是需要借助可以实现屏幕录制的工具,让我们的日常更加精彩并且有回忆的记录,今天就来给大家整理了四款好用的录屏工具,实现保存高清、流畅的电脑屏幕的精彩记录…

重定向

重定向原理 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> int main() { close(1); int fd open("myfile", O_WRONLY|O_CREAT, 00644); if(fd < 0){ perror("o…

V-ASSISTANT软件无法设置V90伺服软限位

使用V-ASSISTANT软件配置V90伺服参数时&#xff0c;软限位功能是灰色且未勾选&#xff0c;无法设置软限位&#xff0c;如下图所示&#xff1a; 原因&#xff1a;设置零点位置之后需要在PLC中激活软限位&#xff08;如FB284中ConfigEPOS管脚的Bit2&#xff09; FB284中的Confi…

python学习之路 - pyecharts快速入门

目录 一、pyecharts入门1、pyecharts模块介绍a、概况 2、pyecharts基础入门&#xff08;以折线图为例&#xff09;a、安装依赖b、创建折线图c、常用配置项 3、pyecharts创建柱状图a、创建基本柱状图b、创建反转柱状图c、创建含有时间线的柱状图 4、pyecharts地图可视化a、生成中…

WSL-ubuntu下载安装配置cudnn

下载 安装cuDnn的话需要和CUDA版本对应&#xff0c;可参考官网&#xff1a; cuDNN Archive | NVIDIA Developer 我的cuda是11.8 这个cuDNN8.9.7_Linux直接下载&#xff1a; https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/11.x/cudn…

无人机技术的最新进展及未来趋势

一、飞行控制技术的提升 复杂环境下的稳定性&#xff1a;现代无人机在飞行控制系统方面的升级&#xff0c;使其能在复杂环境中稳定飞行&#xff0c;例如强风条件下或狭窄空间内。 智能避障系统&#xff1a;新型无人机配备有高精度的传感器和先进的算法&#xff0c;能够实现自…

vue3快速入门(一)新建项目与安装插件

步骤很详细&#xff0c;直接上教程 在对应路径下&#xff0c;cmd输入npm create vuelatest,然后按图所示进行选择&#xff08;仅供新手参考&#xff09; 安装以下插件 3.重启vscode&#xff08;为了确保插件生效&#xff09; 4.在vscode启动内置终端 输入npm i或pnpm i安装依赖…

浅谈 mysql 单、双引号的3种用法

mysql 单引号和双引号的使用&#xff0c;主要有以下3种情形 1、在引用字符型或日期类型的值时使用。 2、使用 as 创建别名时使用&#xff0c;别名如含特殊字符&#xff0c;则必须使用单引号或双引号。 3、解决数据原文中存在的单双引号问题。 注&#xff1a;本文所指的单、…

【Docker】Docker学习01 | 什么是docker?

本文首发于 ❄️慕雪的寒舍 因为本人没有学习过docker&#xff0c;虽然部署过很多镜像&#xff0c;但是对于docker底层的实现一概不知。趁学习一个新项目的契机&#xff0c;将docker的相关概念了解清楚。 安装docker的教程请查看 Linux主机安装docker。 如果你想和我一起学习do…

内存管理篇-02内存硬件电路和接口

1. 内存硬件实现机制 通过D触发器构建寄存器和内存的结构对比,这里主要先表达sram复杂&#xff0c;dram简单。 2. sram和ddr sdram结构图对比 主要是想对比sram和dram在和CPU连接过程的差异。sram需要的地址线较多&#xff0c;dram需要的较少&#xff0c;但是需要多次发送&…

如何用Python进行民宿数据分析?可视化工具应用教程

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

微信小游戏授权问题

微信小程序获取用户相关信息的接口&#xff0c;如wx.getUserCloudStorage&#xff0c;报错&#xff1a;please go to mp to announce your privacy usage。 需要在微信公众平台设置用户隐私保护。

CentoOS 7下配置并部署 DataX 3.0与DataX-web

数据同步框架 DataX DataX本身作为离线数据同步框架,采用 Framework plugin架构构建。将数据源读取和写入抽象成为Reader/ Writer插件,纳入到整个同步框架中。 Reader: Reader为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。 Writer: Writer为数据写入模块,负责…

一种间距可调式在线测宽仪!

关键词&#xff1a;在线测宽仪,测宽仪,板材测宽仪,板材 我们都知道&#xff0c;在板材生产线中&#xff0c;为了应对多方市场需求&#xff0c;生产的板材规格众多&#xff0c;甚至宽度范围相差甚大。而现在应用于产线的在线测宽仪多为光学测量方式&#xff0c;这也就意味着&…