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

我并不是从你那里寻找一个现成的解决方案,但我很乐意获得一些技巧/方法/教程/类似的项目/等等如何实现我的目标。外面有什么着色专家吗?我的智慧到了尽头。
(不过,如果您想发布一个现成的使用解决方案,我不会是miffy :D)
发布于 2013-08-26 01:01:49
这是一个遗憾,你没有使用延迟阴影,这将是相当直接的实现,如果你是。
如果您可以通过纹理查找访问屏幕上每个像素的正常和材质,则可以轻松地对此进行后置处理。您可以使用3x3过滤器内核,搜索足够大的正常不连续性(这将捕捉剪影边缘),也可以搜索位于物质ID之间转换的像素(这将捕捉蓝色和橙色立方体之间的边缘)。如果您的过滤器邻域满足这两种条件之一,则绘制一个黑色像素以形成轮廓。
如果在绘制多维数据集时使用MRT呈现,并将正常+ material编码为RGBA纹理(x、y、z、MRT),则应该能够做到这一点。
基本理论在本论文 (第13页)中作了描述。在这种情况下,不使用深度作为大纲的次要特征,您将使用材料(或对象ID,如果您希望每个立方体有一个轮廓)。
https://stackoverflow.com/questions/18432091
复制相似问题