我在XNA中有树问题。当我有树时,我需要使用alpha混合来使非叶子部分透明,但模型的某些部分没有正确显示,因此alpha混合失败。我想知道是否有可能读取网格位置来对它们进行排序,或者是否有任何其他方式来获得透明的非叶部分。 在模型中排序可能不起作用,因为我想从各个角度看这棵树。在XNA中排序网格
4
A
回答
1
在3D环境中混合Alpha可能是一个棘手的问题。 Shawn Hargreaves在几年前写了一个article,涉及大多数主要问题(标题为Painter's Algorithm专门处理您的问题)。长话短说:没有技术可以做到完美,所以问题就变成了:你愿意做出什么样的折衷?
做alpha测试而不是alpha混合可能是最简单的解决方案。这是一个二元测试,其中一个不透明像素出现或不出现,所以这些像素的绘制顺序在很大程度上是不相关的。这会给你带来很大的优势,但如果你的纹理有足够的分辨率,它仍然可以看起来不错。我知道魔兽世界使用这种技术,并且我很确定我记得在暗黑破坏神III中看到它。
您可以使用内置的AlphaTestEffect
来执行此操作,或者自己在像素着色器中实现它。
0
您要查找的内容称为订单独立透明度,可以使用名为“Depth peeling”的方法实现。如果您没有使用XNA的Reach配置文件并且可以编写自定义着色器 - 您可以实现此技术以实现正确的混合,而无需担心网格级信息或必须对当前帧/视图重新排序。
Here是另一个DX9(但很容易适应XNA)的实现。
相关问题
- 1. 在网格中排序Div
- 2. XNA中网格的偏移
- 3. AngularJs中的网格排序
- 4. 排序在属性网格
- 5. 排序在GridView asp网格
- 6. 网格列排序
- 7. 在网格面板中排序
- 8. 在实际排序中使用kendo网格排序机制
- 9. Xna模型网格部分
- 10. xna的基本网格?
- 11. wp7 xna仿真器网格
- 12. XNA精灵排序模式
- 13. 网格视图排序
- 14. Bootstrap网格排序响应
- 15. 排序网格视图中asp.net
- 16. 排序JavaScriptObject在数据网格与GWT
- 17. 排序在剑道网格不工作
- 18. 在滑动网格上调用排序
- 19. 在kendo ui网格中对网上论坛排序
- 20. AngularJS在单元格中的网格排序模板
- 21. 在PHP中排序表格
- 22. 在网格中加载所有数据后对网格进行排序
- 23. 当在可排序的网格上使用connectWith时,JQuery可排序中断
- 24. 在Tapestry中更改网格中排序按钮的位置5
- 25. 在排序后在数据网格中保留选定的行
- 26. 在jqgrid中如何在排序后保持网格状态
- 27. XNA - 网格覆盖太突出
- 28. XNA/MonoGame:深度排序alpha混合UserPrimitives
- 29. 如何绕过SpriteBatch排序? C#XNA
- 30. 来自阵列的XNA排序分数
不 - 有一种技术可以做他想做的事。 – Ani
我没有说没有任何技术可以做他想做的事。例如,对每个三角形进行单独排序是一种非常简单的技术,可以满足他的要求。我说没有完美的技术,深度剥离也是如此。它需要你使用HiDef配置文件,它需要你编写复杂的着色器,它需要额外的几何通行证,可能或不可以接受......只有图恩可以回答什么技术适合他的需求的问题。我建议了其中之一。 –
这种排序是在碎片级别完成的,所以它给出了足够的通行证实际上会产生像素完美结果。对性能和质量进行微调也很容易。虽然你说得很对,但它很复杂,需要多次通过。 – Ani