首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何呈现与填充XNA不同的立方体的特定边缘?(Monogame)

如何呈现与填充XNA不同的立方体的特定边缘?(Monogame)
EN

Stack Overflow用户
提问于 2013-08-25 18:10:22
回答 1查看 526关注 0票数 2

我正在使用C#,Monogame和XNA4.0。在我的场景里,我有很多立方体。有些是相互联系的,有些则不是。我想用另一个阴影渲染立方体的边缘,而不是填充。除此之外,我想用另一种颜色(或更厚)呈现连接立方体的外部边缘,而不是立方体对象中的边缘。这里有一幅小画来说明我想做什么(很抱歉我的绘画技巧很差,但我想你会明白的)。

  1. 我知道如何用一个特定的着色器渲染一个立方体,我也能够渲染线框,但我无法连接这两种方法。值得注意的是,这种方法不能以不同的方式呈现外层的线条。
  2. 我尝试了后效果,如漫画着色器的边缘发现,但在这种方法,我不能只渲染特定的边缘。此外,如果两个立方体相邻,则着色器无法识别边缘。

我并不是从你那里寻找一个现成的解决方案,但我很乐意获得一些技巧/方法/教程/类似的项目/等等如何实现我的目标。外面有什么着色专家吗?我的智慧到了尽头。

(不过,如果您想发布一个现成的使用解决方案,我不会是miffy :D)

EN

回答 1

Stack Overflow用户

发布于 2013-08-26 01:01:49

这是一个遗憾,你没有使用延迟阴影,这将是相当直接的实现,如果你是。

如果您可以通过纹理查找访问屏幕上每个像素的正常和材质,则可以轻松地对此进行后置处理。您可以使用3x3过滤器内核,搜索足够大的正常不连续性(这将捕捉剪影边缘),也可以搜索位于物质ID之间转换的像素(这将捕捉蓝色和橙色立方体之间的边缘)。如果您的过滤器邻域满足这两种条件之一,则绘制一个黑色像素以形成轮廓。

如果在绘制多维数据集时使用MRT呈现,并将正常+ material编码为RGBA纹理(x、y、z、MRT),则应该能够做到这一点。

基本理论在本论文 (第13页)中作了描述。在这种情况下,不使用深度作为大纲的次要特征,您将使用材料(或对象ID,如果您希望每个立方体有一个轮廓)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18432091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档