unity3d - 将 XNA Shader 通道、混合和剔除模式移植到 Unity shaderlab
问题描述
我不得不将 XNA 着色器移植到 Unity 的着色器中,并想验证我是否正确地执行了此操作。
Pass1
使用 alpha 混合的部分,如SrcBlend
,DestBlend
和 set's cull to none 是我要确保我做对的唯一地方。
这是 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 中的等效通道设置完全相同吗?如果不是,则需要进行哪些更改才能获得确切的等效性。
解决方案
您应该只放置一次“混合”关键字:它后面的两个关键字分别是用于源和目标的混合因子。您可以将其视为格式为“Blend [SrcBlend] [DstBlend]”。
这是正确的混合:
Blend SrcAlpha OneMinusSrcAlpha
这会导致基本的 Alpha 混合。
推荐阅读
- java - 从 JNI 创建 Java 枚举
- java - 我们如何使用“And”和“Or”查询关键字在 jpa 存储库中创建自定义查询?
- java - 试图将图像保存到目录,保存到一个未知的地方
- c - fgets 在 C 中破坏 glibc 哈希表
- java - Spring @schedule 任务不返回
- angular - 从 Angular 6 组件调用动态加载的 JS
- powershell - 脚本不会从 txt 文件中逐行读取服务,而是将它们组合起来
- sql - Redshift 将手写笔记字段复制到 Redshift
- ubuntu - url 中添加了非标准 SSL 端口
- r - 在R中转置期间数据帧到矩阵