1.创建了个人文件夹,复制了部分场景。 2.编写了URP的屏幕后特效框架。 3.制作了一个场景内模拟树叶飘落的粒子,增加一些场景内的动感。 4.制作了几个Shader 1)利用2D的顶点着色器制作了一个边缘扭曲的Shader可以用在飘落树叶上,模拟3D树叶翻飞的感觉。 2)制作了溶解的Shader,建议用在可破坏的障碍上。 3)制作了一个闪光的Shader,可以用在障碍物上突出障碍物,但是Shader还需修改,现在太违和了。 TODO:做了一半昼夜交替的效果,这也是忘了哪个老师的建议说可以加入一个太阳在运动,效果大概可以用灯光来做,目前测试的颜色变化是B先减弱15%,G减弱20%,然后B回升R减弱。 ps:我的拓展坞不见了接不了手柄,需要等明天到货后开发动起来的特效,这个键盘操作太脑檀了,我不认为普通人可以顺畅的两只手同方向依次按键还不会乱。 建议: 建议为可破坏的障碍物添加提前消失的机制,现在如果冲撞力度不大,碎块只会破碎不会分离,但碰撞体会关闭,很奇怪,建议使用Shader让其破碎后消失。(但是溶解消失的shader与游戏风格不搭,也可以给碎块一个右的力,做一个击飞效果)
52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
|
|
public class RenderPassFeature : ScriptableRendererFeature
|
|
{
|
|
public enum Target
|
|
{
|
|
Color,
|
|
Texture
|
|
}
|
|
[System.Serializable]
|
|
public class HLSettings
|
|
{
|
|
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
|
|
public Material mMat;
|
|
public Target destination = Target.Color;
|
|
public int blitMaterialPassIndex = -1;
|
|
public string textureId = "_ScreenTexture";
|
|
public float contrast = 0.5f;
|
|
}
|
|
|
|
public HLSettings settings = new HLSettings();
|
|
RenderTargetHandle m_renderTargetHandle;
|
|
|
|
HLRenderPass m_ScriptablePass;
|
|
|
|
public override void Create()
|
|
{
|
|
int passIndex = settings.mMat != null ? settings.mMat.passCount - 1 : 1;
|
|
settings.blitMaterialPassIndex = Mathf.Clamp(settings.blitMaterialPassIndex, -1, passIndex);
|
|
m_ScriptablePass = new HLRenderPass("HLPostEffectRender", settings.renderPassEvent, settings.mMat, settings.contrast);
|
|
m_renderTargetHandle.Init(settings.textureId);
|
|
}
|
|
|
|
|
|
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
|
|
{
|
|
var src = renderer.cameraColorTarget;
|
|
var dest = (settings.destination == Target.Color) ? RenderTargetHandle.CameraTarget : m_renderTargetHandle;
|
|
if (settings.mMat == null)
|
|
{
|
|
Debug.LogWarningFormat("丢失blit材质");
|
|
return;
|
|
}
|
|
m_ScriptablePass.Setup(src,dest);
|
|
renderer.EnqueuePass(m_ScriptablePass);
|
|
}
|
|
}
|
|
|
|
|