gpt4 book ai didi

shader - 是否可以在像素着色器中跳过颜色输出?

转载 作者:行者123 更新时间:2023-12-02 05:03:16 28 4
gpt4 key购买 nike

我正在编写一个 PixelShader(HLSL、SM40)并尝试在某些情况下完全跳过输出。我当前的代码如下所示:

float4 PS( PS_INPUT input) : SV_Target
{
float4 result=float4(1,1,1,0);
if(input.Col.r >= 0.999998f)
result=float4(0,0,0,0);
return result;
}

但是这只会写出看不见的黑色像素(因为黑色是这里的背景颜色)。但在某些情况下,如果像素之前是彩色的,像素就会明显变黑。我的意图是跳过写入渲染目标。有没有办法跳过这个,例如代码可能看起来像这样的非工作代码:

float4 PS( PS_INPUT input) : SV_Target
{
float4 result=float4(1,1,1,0);
if(input.Col.r >= 0.999998f)
return; //or 'return null;'
return result;
}

编辑 - 现在我们有一个工作示例(未优化以保持其可比性):

float4 PS( PS_INPUT input) : SV_Target
{
float4 result=float4(1,1,1,0);
if(input.Col.r >= 0.999998f)
discard;
return result;
}

最佳答案

这可以通过内部函数 clip( doc ) 或流控制语句 discard ( doc ) 来实现。在你的情况下 clip 应该是最适合的:)

关于shader - 是否可以在像素着色器中跳过颜色输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673670/

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