我不得不将XNA着色器移植到Unity的着色器中,并希望验证我是否正确地做到了这一点。
使用SrcBlend、DestBlend等alpha混合的Pass1部分是我唯一想要确保正确的地方。
这是XNA着色器版本:
pass Pass1
{
AlphaBlendEnable = true;
SrcBlend = SRCALPHA;
DestBlend = INVSRCALPHA;
CullMode = None;
VertexShader = compile vs_2_0 TheVertexShader();
PixelShader = compile ps_2_0 ThePixelShader();
}这是我制作的Unity Shaderlab端口:
Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 100
Blend SrcAlpha One
Blend DstAlpha OneMinusSrcAlpha
ZWrite Off
Cull Off 它似乎在Unity中工作得很好,但这是否与Unity中的pass设置完全相同?如果不是,则重新进行更改以获得精确的等价性。
发布于 2019-01-04 21:26:02
你应该只放一次" blend“关键字:它后面的两个关键字是分别用于源和目标的混合因子。你可以把它想象成在"Blend SrcBlend“格式上。
下面是正确的混合:
Blend SrcAlpha OneMinusSrcAlpha这会产生基本的alpha混合。
https://stackoverflow.com/questions/52537853
复制相似问题