Boat Attack使用了Universal RP的许多新图形功能,可以用于探索 Universal RP 的使用方式和技巧。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

48 行
1.6 KiB

using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
[Serializable, VolumeComponentMenu("Custom/Pseudo Lensflare")]
public class PseudoFlareVolume : VolumeComponent
{
public BoolParameter enabled = new BoolParameter(false);
[Range(-10f, 10f), Tooltip("Grayscale effect intensity")]
public FloatParameter offset = new FloatParameter(0.0f);
[Range(0f, 10f), Tooltip("Grayscale effect intensity")]
public FloatParameter power = new FloatParameter(1.0f);
public FloatParameter ghostSpacing = new FloatParameter(0.25f);
public IntParameter ghostCount = new IntParameter(3);
public FloatParameter haloWidth = new FloatParameter(1.0f);
protected override void OnEnable()
{
base.OnEnable();
//RenderPipelineManager.beginCameraRendering += Inject;
}
protected override void OnDisable()
{
base.OnDisable();
//RenderPipelineManager.beginCameraRendering -= Inject;
}
private void Inject(ScriptableRenderContext context, Camera camera)
{
PseudoFlareVolume component = VolumeManager.instance.stack.GetComponent(typeof(PseudoFlareVolume)) as PseudoFlareVolume;
if (component == null || !component.enabled.value)
{
Debug.Log($"no volume component in camera {camera.name}");
return;
}
var renderer = camera.GetUniversalAdditionalCameraData().scriptableRenderer;
Debug.Log($"effect volume {renderer}");
PseudoLensflareFeature.InjectPass(renderer, new PseudoLensflareFeature.PseudoLensflarePass(new Material(Shader.Find("Hidden/PostFX/PseudoLensFlare"))));
}
}