当前位置:网站首页>Unity URP入门实战
Unity URP入门实战
2022-07-26 14:51:00 【T.D.C】
导读
本文讲述
如何从应用层面使用URP
如何在代码层面为URP增加更多的渲染特性
如果拓展URP的后处理效果
URP管线特性
光源数量:
直线光外加4个其他光源
内置管线的多Pass Forward Rendering,会在多光源时对额外的光源使用新的FowardAdd Pass计算,Pass数量是影响物体的光源数量,最大值为8
缺点:
1 不支持多相机叠加
2 Defferred Renderring,现在URP里面没有延迟渲染,也没有时域抗锯齿TAA
使用URP的第一步是配置URP的Asset

获得2个配置文件

改个名字

设置图形选项

配置质量选项
不配置这个在Camera里面选不了Renderer

配置后处理

拖上去

为URP增加新的渲染特性:CustomRenderPassFeature
原理:XXXFeature类提供XXXPass给Renderer,以此增加一个渲染特性

此时会得到一个RenderFeature类

里面有模板代码,可以按需拓展
拓展后处理
拓展URP后处理的原理
使用一个在最后才执行的Pass,对当前相机的渲染输出进行处理
步骤
1 新建类继承Volume,这一步是为了给后处理提供数据设置。可以不做这一步,因为可以直接走RenderFeature的配置里读也可以
2 增加一个renderer feature,在这个Feature中创建自定义pass,在pass里进行后处理
后处理用的shader
使用Shader Graph或者自己写一个URP的shader,用这个shader建一个材质,使用这个材质完成后处理
有个要注意的是,如果不想做额外的设置,shader里的输入贴图名字写死叫 _MainTex
后处理用的自定义RenderPassFeature示例代码
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class TestUrpPostRenderPassFeature : ScriptableRendererFeature
{
public Material postMat;
class CustomRenderPass : ScriptableRenderPass
{
private int effectRtPropId = Shader.PropertyToID("testUrpRt");
private RenderTargetIdentifier effectRtId;
private RenderTargetIdentifier source;
public Material postMat;
public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)
{
source = renderingData.cameraData.renderer.cameraColorTarget;
RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor;
descriptor.depthBufferBits = 0;
cmd.GetTemporaryRT(effectRtPropId, descriptor, FilterMode.Bilinear);
effectRtId = new RenderTargetIdentifier(effectRtPropId);
// Debug.Log("custom urp setup camera");
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
CommandBuffer cmd = CommandBufferPool.Get("Custom Post Processing");
cmd.Clear();
Blit(cmd, source, effectRtId, postMat);
Blit(cmd, effectRtId, source);
context.ExecuteCommandBuffer(cmd);
CommandBufferPool.Release(cmd);
// Debug.Log("custom urp execute");
}
public override void OnCameraCleanup(CommandBuffer cmd)
{
cmd.ReleaseTemporaryRT(effectRtPropId);
// Debug.Log("custom urp release");
}
}
CustomRenderPass m_ScriptablePass;
public override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingTransparents;
m_ScriptablePass.postMat = postMat;
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(m_ScriptablePass);
}
}
参考资料
应用方面的介绍看官方文档
Shader Stripping | Package Manager UI website
实现分析和讲解
[Universal RP]Unity通用渲染管线学习 - 知乎
后处理的参考资料
renderer feature:
Unity3D URP中使用Render Feature实现后处理效果 - whcsrl_技术网
Custom Post Processing in Unity URP | Febucci
volume
代码
获得当前相机的输出RenderTargetIdentifier
var renderer = renderingData.cameraData.renderer;
source = renderer.cameraColorTarget;
边栏推荐
猜你喜欢

CAS单点登录
![[draw with toolbar]](/img/d4/9cb06599f9a8fe5f8149cb7870c103.png)
[draw with toolbar]

Realize the full link grayscale based on Apache APIs IX through MSE

PyTorch中 torch.nn与torch.nn.functional的区别

Wechat applet - "do you really understand the use of applet components?

What is the transport layer protocol tcp/udp???

怎样在nature上查文献?

Siamrpn: recommended regional network and twin network

Self encoder AE (autoencoder) program

RPN:Region Proposal Networks (区域候选网络)
随机推荐
[nuxt 3] (XII) project directory structure 1
RPN: region proposal networks
Cve-2022-33891 vulnerability recurrence
SA Siam: Twin network for real-time target tracking
Is the MySQL index tree built before each search or when the index is built?
Whaledi message queue stability improvement practice
Notes (5)
Canvas laser JS special effect code
Use of LINGO software
Sharkteam releases Web3 security situational awareness report in the second quarter of 2022
C语言入门必刷100题合集之每日一题(1-20)
CVE-2022-33891漏洞复现
如何查找国内各大学本科学位论文?
Simple implementation of pytorch
[Huawei online battle service] how can new players make up frames when the client quits reconnection or enters the game halfway?
Difference between filter and interceptor
Establishment of SSO single sign on environment based on CAS
go开发调试之Delve的使用
[1.2. return and risk of investment]
QCF for deep packet inspection论文总结