UE4 后处理材质 镜头光晕(Lensflare)效果

2023-11-09

介绍:

基于PostProcessMaterial实现镜头光晕(Lensflare)的效果。

不使用UE自带的Lensflare,在ShaderToy上发现一个好看的:
ShaderToy地址: ShaderToyLensflareSample
在这里插入图片描述

将其移植到UE4中,效果还行(去掉了巨亮的太阳光圈效果)↓

在这里插入图片描述
叠加天空盒子
在这里插入图片描述
纯黑背景

步骤:

1.场景摆后处理Volume,设置为Unbound

在这里插入图片描述

2.创建后处理材质,MaterialDomain选Post Process即可

在这里插入图片描述

3.这样连蓝图

红框是两个Cutom节点,里面写了Shader
在这里插入图片描述

要上代码了,点赞收藏一下不过分吧 =w=

4.SunPosUV节点将太阳位置转换为屏幕空间UV
// An highlighted block
	half3 CameratoWorldVectorX = mul(half3(1.0, 0.0, 0.0), (half3x3)(View.CameraViewToTranslatedWorld));
	half3 CameratoWorldVectorY = mul(half3(0.0, 1.0, 0.0), (half3x3)(View.CameraViewToTranslatedWorld));

	half3 LocalCameraX = half3(1.0, 0.0, 0.0) * dot(SunLightVector, CameratoWorldVectorX);
	half3 LocalCameraY = half3(0.0, 1.0, 0.0) * dot(SunLightVector, CameratoWorldVectorY);
	
	
	//Divide xy to find perspective projection
	half2 PerspectiveProjection = (LocalCameraX + LocalCameraY).rg; 

	//unpack 0-1
	half2 ScreenUV = PerspectiveProjection * half2(0.5, -0.5) + half2(0.5, 0.5);
    return ScreenUV;
5.Lensflare节点程序计算绘制Lensflare,原ShaderToy里不需要的去掉了
float2 uv = fragCoord.xy - 0.5;
uv.x *= iResolution.x/iResolution.y; //fix aspect ratio

float2 mouse = iMouse - 0.5;
mouse.x *= iResolution.x/iResolution.y; //fix aspect ratio
float2 pos = mouse.xy;


float2 main = uv-pos;
float2 uvd = uv*(length(uv));

// 太阳光晕,去掉
//float ang = atan(main.x/main.y);
// float dist=length(main); dist = pow(dist,.1);
// float n = Texturesample(View.PerlinNoiseGradientTexture, float2(ang*16.0,dist*32.0));

// float f0 = 1.0/(length(uv-pos)*16.0+1.0);

// f0 = f0 + f0*(sin(noise(sin(ang*2.+pos.x)*4.0 - cos(ang*3.+pos.y))*16.)*.1 + dist*.1 + .8);


//float f1 = max(0.01-pow(length(uv+1.2*pos),1.9),.0)*7.0;

float f2 = max(1.0/(1.0+32.0*pow(length(uvd+0.8*pos),2.0)),.0)*00.25;
float f22 = max(1.0/(1.0+32.0*pow(length(uvd+0.85*pos),2.0)),.0)*00.23;
float f23 = max(1.0/(1.0+32.0*pow(length(uvd+0.9*pos),2.0)),.0)*00.21;

float2 uvx = lerp(uv,uvd,-0.5);

float f4 = max(0.01-pow(length(uvx+0.4*pos),2.4),.0)*6.0;
float f42 = max(0.01-pow(length(uvx+0.45*pos),2.4),.0)*5.0;
float f43 = max(0.01-pow(length(uvx+0.5*pos),2.4),.0)*3.0;

uvx = lerp(uv,uvd,-.4);

float f5 = max(0.01-pow(length(uvx+0.2*pos),5.5),.0)*2.0;
float f52 = max(0.01-pow(length(uvx+0.4*pos),5.5),.0)*2.0;
float f53 = max(0.01-pow(length(uvx+0.6*pos),5.5),.0)*2.0;

uvx = lerp(uv,uvd,-0.5);

float f6 = max(0.01-pow(length(uvx-0.3*pos),1.6),.0)*6.0;
float f62 = max(0.01-pow(length(uvx-0.325*pos),1.6),.0)*3.0;
float f63 = max(0.01-pow(length(uvx-0.35*pos),1.6),.0)*5.0;

float3 c = float3(0.0, 0.0, 0.0);

c.r+=f2+f4+f5+f6; c.g+=f22+f42+f52+f62; c.b+=f23+f43+f53+f63;
c = c*1.3 - float3(length(uvd), length(uvd), length(uvd))*.05;
// c+=float3(f0, f0, f0);

float3 color = float3(1.4,1.2,1.0)*c;
color -= Noise*.015;

float w = color.x+color.y+color.z;
color =  lerp(color,float3(w, w, w)*0.5,w*0.1);
//color = cc(color,.5,.1);
float4 OutColor = float4(color,1.0);
return OutColor;

除0,越界还需要手动处理下,楼主偷懒了

可以自行修改参数和Noise贴图,调整表现效果~

需要判断遮挡的话,采一下SceneDepth就行~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4 后处理材质 镜头光晕(Lensflare)效果 的相关文章

  • Unity --- 文本的使用

    1 先讲讲legacy 旧版 的文本text 在一个画布上创建一个文本 这个文本也是一个游戏物体 且是画布的子物体 上面这个就是文本的inspector界面 在字体参数处我们可以点开框框选择新的字体资源 前提是我们有导入这个字体资源 行间距
  • Unity+Pico 手柄按键控制

    一 定义手柄按键API 1 InputDevices GetDeviceAtXRNode 通过XRNode获取对应的设备 2 XRNode是一个枚举类型 包含LeftEye RightEye CenterEye Head LeftHand
  • HLSL 偏导数 ddx / ddy

    HLSL ddx ddy 在光栅化的时刻 GPUs会在同一时刻并行运行很多Fragment Shader 但是并不是一个pixel一个pixel去执行的 而是将其组织在2x2的一组pixels分块中 去并行执行 偏导数就正好是计算的这一块像
  • Unity笔记:修改代码执行的默认打开方式

    使用 External Tools 偏好设置可设置用于编写脚本 处理图像和进行源代码控制的外部应用程序 External Script Editor 选择 Unity 应使用哪个应用程序来打开脚本文件 Unity 会自动将正确的参数传递给内
  • 时间戳获取

  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体 遇到的问题描述 解决方式 Font Asset Creator 面板扩展
  • unity实现相机位置移动

    在unity场景中经常有通过键盘中W S A D Q E等按键控制相机移动的需求 相机位置更新 控制代码如下 private void Update if active return Translation if enableTransla
  • Unity --- 触摸方法,以及灯光与烘培的使用

    触摸方法 1 首先触摸分为两大类 多点触摸和单点触摸 这两种方式的触摸通过下面这个触摸数来进行判断 当其等于1的时候 为单点触摸 当其大于1的时候为多点触摸 2 当我们在调用触摸方法的时候我们首先需要打开对应的多点 单点触摸 上面这个是开启
  • PicoNeo3开发VR——小白教程

    不断更新中 欢迎大佬们来指导 纠错 导入PicoVRSDK 1 新创一个Unity工程 Unity版本最好选择2019 4以上版本 以及需配置好安卓环境 然后导入官方picoVRSDK 2 渲染设置 Graphics APIs暂不支持Vul
  • Unity 使用LineRenderer连接2个物体

    1 在Hierarchy面板中创建2个GameObject A和B 这就是希望连接的2个物体 2 同理创建1个EmptyObject C 挂上LineRenderer组件 记得给Materials赋值 3 创建1个新的C 脚本LineMan
  • Unity 用脚本操作常用UI控件(上)

    控件介绍 在界面系统的术语中 将一个具有独立状态 外观和操作的对象称为控件 例如 常用的交互控件有按钮 输入框 滑动条等 常见的非交互式控件有文本标签 图片等 Unity采用了父子物体和组件的设计思想 其每个界面控件 往往也是由游戏物体挂载
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • unity网络资源导入

    1 找到需要导入的文件 这里导入fbx格式 2 打开unity界面 在Asset目录下创建文件夹FBX 将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3 选中需要的fbx预制体并拖至场景中 4 双击定位到当前物体 5 找到需
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U

随机推荐

  • workman 日志_workerman 的属性

    Created by PhpStorm User zeopean Date 2016 08 26 Time 16 35 use Workerman Worker use Workerman Lib Timer require once Wo
  • (译) JSON-RPC 2.0 规范(中文版)

    起源时间 2010 03 26 基于2009 05 24版本 更新 2013 01 04 作者 JSON RPC工作组 lt json rpc googlegroups com gt 原文链接 http www jsonrpc org sp
  • Linux 如何解决共享库的版本控制(避免Dll Hell)

    Linux 系统 也同样面临和Window一样的问题 如何控制动态库的多个版本问题 Window之前没有处理好 为此专门有个名词来形容这个问题 Dll hell 其严重影响软件的升级和维护 Dll hell 是指windows 上动态库新版
  • k8s集群环境搭建

    环境规划 集群类型 一主多从 一台master节点和多台node节点 搭建简单 但是有单机故障风险 适合用于测试环境 多主多从 多台master节点和多台node节点 搭建麻烦 安全性高 适合用于生产环境 为了测试简单 本次搭建的是一主两从
  • Unity—UGUI控件

    补上昨天的UGUI控件 以后会持续两天一更 直至月末 结尾有彩蛋呦 每日一句 窗外有风景 手里有课本 眼里有梦想 心中有未来 目录 UGUI控件 Canvas画布 需求 UI是UI 3D是3D Rect Transform矩形变换 API
  • 面试中常见的小程序题

    function unique1 arr i从1开始遍历arr中每个元素 同时声明数组r 初始化一个元素为arr中第0个元素 for var i 1 r arr 0 i
  • 时间序列算法Prophet代码实现——以天气预测模型为例

    最近在做销售量预测模型相关的项目 重新拾起时间序列算法 包括AR 自回归模型 MA 移动平均模型 ARIMA 差分回归移动平均模型 等 综合预测效果想要特别记录时间序列中的Prophet算法 操作简单 效果显著 一 算法简介 Prophet
  • 【满分】【华为OD机试真题2023 JAVA&JS】优雅数组

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 优雅数组 知识点双指针数组滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 如果一个数组中出现次数最多的元素出现大于等于k次 被称为 k 优雅数组 k也可以被
  • python 区块链学习(一) 单链结构实现

    最近在纠结以后的研究方向 就先看了看云链 即一种云计算 区块链 物联网设备的架构模式 虽然还是雨里雾里 还是决定先把区块链的编程落实一下 python 区块链学习 二 python 区块链学习 三 0x00 系统环境 本次使用的为Pytho
  • pycharm注释快捷键

    选中需要注释的行代码 按ctrl 进行注释
  • 分红 10 亿,小游戏《羊了个羊》背后实控人拿走 3亿 !股价暴跌 38%

    关注后回复 进群 拉你进程序员交流群 一个月前 一款名为 羊了个羊 的突然爆火 让无数人沉迷不可自拔 但正如一颗流星 昙花一现的它很快消失在公众视野中 10月10日 厦门吉比特技术公司披露 其间接持有 羊了个羊 开发商北京简游科技20 的股
  • git idea 如何删除本地分支_在intellij idea 中怎么不用git 解除关联

    展开全部 file gt settings gt version control 选中这一栏 右边有个 点红色减号 就解除了 然后去项目目录下删除 git这个文件夹 你可以不删除 为了以后继续关联62616964757a686964616f
  • 使用IDEA构建jar然后转执行程序exe的爬坑

    https download csdn net download leoysq 87939492 构建jar
  • Storybook(一)

    TOC 欢迎使用Storybook 你好 这是你第一次使用 Storybook 这个工具 如果你想学习如何使用Storybook 可以仔细阅读这篇文章 了解一下Storybook的基本知识 基本用法 我们对Storybook进行了一些说明
  • 简单的个人介绍网页-主页面【附代码】

    主页面 代码1 style css nav height 41px border top 3px solid b4fffa border bottom 1px solid edeef0 background color fcfcfc lin
  • 微机原理中操作数位置总结

    立即数 立即数在CS里 CS在存储器里 但和存储器操作数有本质的区别 但是不属于存储器数的一种 本质上是立即数寻址而不是存储器寻址 寄存器数 在cup内部 AX BX CX DX属于EU部件 存储器操作数 1看他有没有段超越前缀 超越到了什
  • 在职的我竟然一次通过了注册测绘师考试(注册测绘师备考经验分享)

    先上一波成绩吧 首先说一下我是万万没想到案例能过的 本来做好二战准备的 认为案例答的不够全面 时间不够了 既然过了那我就回想下从几个方面简短的整理下经验吧 没过的话叫教训 希望帮助给后面的同学 时间准备 确切的开始时间记不清了 但应该是20
  • Unity SpriteAtlas 打包AssetBundle的一些问题总结

    1 新版sprite要打包成图集 需要手动创建SpriteAtlas资源 然后选择需要打包进图集资源的Sprite目录或资源文件 参考 https docs unity3d com Manual class SpriteAtlas html
  • 从入门到入土:[SEED-Lab]- Packet Sniffing and Spoofing Lab

    此博客仅用于记录个人学习进度 学识浅薄 若有错误观点欢迎评论区指出 欢迎各位前来交流 部分材料来源网络 若有侵权 立即删除 本人博客所有文章纯属学习之用 不涉及商业利益 不合适引用 自当删除 若被用于非法行为 与我本人无关 SEED Lab
  • UE4 后处理材质 镜头光晕(Lensflare)效果

    介绍 基于PostProcessMaterial实现镜头光晕 Lensflare 的效果 不使用UE自带的Lensflare 在ShaderToy上发现一个好看的 ShaderToy地址 ShaderToyLensflareSample 将