您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
32 行
1.0 KiB
32 行
1.0 KiB
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.PostProcessing;
|
|
|
|
[Serializable]
|
|
[PostProcess(typeof(InvertOpaqueRenderer), PostProcessEvent.BeforeTransparent, "Custom/LWtest/Invert Opaque")]
|
|
public sealed class InvertOpaque : PostProcessEffectSettings
|
|
{}
|
|
|
|
public sealed class InvertOpaqueRenderer : PostProcessEffectRenderer<InvertOpaque>
|
|
{
|
|
internal static readonly int opaqueTemp = Shader.PropertyToID("_MainTex");
|
|
|
|
public override void Render(PostProcessRenderContext context){
|
|
var sheet = context.propertySheets.Get(Shader.Find("Hidden/Custom/LWtest/InvertOpaque"));
|
|
|
|
bool srcEqualsDest = context.destination == context.source;
|
|
|
|
if(srcEqualsDest)
|
|
context.GetScreenSpaceTemporaryRT(context.command, opaqueTemp);
|
|
|
|
context.command.BlitFullscreenTriangle(context.source, srcEqualsDest ? opaqueTemp : context.destination, sheet, 0);
|
|
|
|
if (srcEqualsDest)
|
|
{
|
|
context.command.BlitFullscreenTriangle(opaqueTemp, context.destination);
|
|
context.command.ReleaseTemporaryRT(opaqueTemp);
|
|
}
|
|
|
|
}
|
|
|
|
}
|