着色器斜切多维数据集的边缘?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了着色器斜切多维数据集的边缘?相关的知识,希望对你有一定的参考价值。
这个问题与使用着色器有关(可能在Unity3D环境中,但是Metal或OpenGL很好),
在网格最小的立方体上实现圆形边缘。
- 我只想使用12个三角形的极简主义网格立方体,
- 然后通过着色器,
- 实现每个块的边缘(/角)略微倾斜。
事实上,这可以用着色器完成吗?
谢谢,着色大师!
答案
我最近完成了这样的着色器。它可以工作的唯一方法是为每个顶点提供4个法向量而不是一个(平滑,清晰,给定顶点的三角形每个边缘一个)。您还需要一个float3来检测边缘。
为了在网格中添加这样的数据,我制作了一个自定义网格编辑器,附带来自Unity Asset Store的Playtime Painter Asset。将使用下一次更新发布着色器。也将发布到公共GitHub。
您可以看到一些暗线,这是因为它开始插入到远离光源的法线向量,但由于没有其他三角形,因此结果在面向摄像机的三角形上可见。
更新(2/12/2018)实现了通过剪切最终具有远离相机的法线的像素,可以平滑轮廓形状。它没有针对所有可能的场景进行测试,但对于简单的形状非常有用:
目前,Playtime Painter有一个简化版本的着色器,它在2个法线向量之间进行插值,并在某些边缘上给出了正确的结果。
写了一个article。
另一答案
一般来说,Relief Mapping能够像this图片一样修改对象轮廓。你需要准备一个在边界处降低的高度图,就是这样。但是我认为使用这样的着色器可能对这种简单的效果来说太过分了,所以也许最好只在你的几何体中制作它。
以上是关于着色器斜切多维数据集的边缘?的主要内容,如果未能解决你的问题,请参考以下文章