gpt4 book ai didi

c# - Unity 后处理 PostProcessEffectRenderer 显示在编辑器中但不在构建中

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:40 28 4
gpt4 key购买 nike

将 PostProcessEffectRenderer 的实现添加到 Unity 后处理堆栈后,该效果在 Unity 编辑器中完美运行,但未在构建的游戏中显示。

对构建质量的更改没有效果,使用最高质量设置不显示效果,为 Windows x86_64 构建。

灰度.cs

using System;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

[Serializable]
[PostProcess(typeof(GrayscaleRenderer), PostProcessEvent.AfterStack, "Custom/Grayscale")]
public sealed class Grayscale : PostProcessEffectSettings
{
[Range(0f, 1f), Tooltip("Grayscale effect intensity.")]
public FloatParameter blend = new FloatParameter { value = 0.5f };
}

public sealed class GrayscaleRenderer : PostProcessEffectRenderer<Grayscale>
{
public override void Render(PostProcessRenderContext context)
{
var sheet = context.propertySheets.Get(Shader.Find("Hidden/Custom/Grayscale"));
sheet.properties.SetFloat("_Blend", settings.blend);
context.command.BlitFullscreenTriangle(context.source, context.destination, sheet, 0);
}
}

灰度着色器

Shader "Hidden/Custom/Grayscale"
{
HLSLINCLUDE

#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/StdLib.hlsl"

TEXTURE2D_SAMPLER2D(_MainTex, sampler_MainTex);
float _Blend;

float4 Frag(VaryingsDefault i) : SV_Target
{
float4 color = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.texcoord);
float luminance = dot(color.rgb, float3(0.2126729, 0.7151522, 0.0721750));
color.rgb = lerp(color.rgb, luminance.xxx, _Blend.xxx);
return color;
}

ENDHLSL

SubShader
{
Cull Off ZWrite Off ZTest Always

Pass
{
HLSLPROGRAM

#pragma vertex VertDefault
#pragma fragment Frag

ENDHLSL
}
}
}

最佳答案

经过多次试验和错误后,我意识到这是由 Unity 排除隐藏着色器造成的,因为它在构建时缺少对游戏中任何内容的引用。在构建时,Unity 将仅包含附加到场景中使用的 Material 或在“始终包含的着色器”数组中的项目设置中添加的着色器。

Project Settings/Graphics/Always Included Shaders

我都试过了,它解决了我的问题,有人建议在你的游戏中创建一个引用隐藏着色器的虚拟对象会更好,因为它让 Unity 决定场景中是否需要它。无论哪种方式,这对我来说都是固定的。

关于c# - Unity 后处理 PostProcessEffectRenderer 显示在编辑器中但不在构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55660837/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com