urp管线下实现扫光效果
基本思路,还是根据深度还原世界坐标(以下简称world_pos),根据坐标的xyz判断是否在一些范围内,然后进行基于xyz两个坐标轴进行扫光
这里进行一个扩展,让扫光可以沿着任一方向进行,
就是传入一个旋转变换矩阵,对world_pos进行变换,然后判断aabb盒,这样就可以实现非xyz轴方向的扫光效果
运行效果如下:

可以沿任意方向扫光

代码如下:
shader:
Shader "lsc/screen_scan_shader"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_scan_brush("Texture", 2D) = "white" {}
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
//sampler2D _CameraDepthTexture;
float4x4 _mtx_view_inv;
float4x4 _mtx_proj_inv;
//float4x4 _mtx_clip_to_world;
TEXTURE2D

本文介绍如何利用Unity渲染管线实现基于旋转变换矩阵的扫光效果,通过世界坐标变换和AABB判断,可实现非正交方向的光照控制,展示了详细的代码示例和运行效果。
最低0.47元/天 解锁文章
4428





