【发布时间】:2015-01-08 16:49:22
【问题描述】:
我有一个问题,希望你能帮助我。我一直忙于用 xna 制作游戏,最近开始涉足着色器 (hlsl)。我喜欢、使用并希望改进这个着色器。
着色器通过绘制模型的背面(黑色)并沿其法线平移顶点来创建轮廓。现在,对于平滑阴影模型,这很好。但是,我使用的是平面阴影模型(我是通过手机发布的,但如果有人对这意味着什么感到困惑,我可以稍后上传图片)。这意味着顶点沿其对应面的法线平移,从而导致面之间出现可见间隙。
现在,问题是:有没有办法计算(在着色器或 xna 中),我应该如何翻译每个顶点,或者是唯一可行的选择只是制作 3d 模型的副本,但平滑阴影?
先谢谢了,希望大家多多指教!
编辑:或者,我可以只加载一个平滑着色模型,并尝试在着色器中对其进行平面着色。然而,这意味着我必须能够找到相应面的所有顶点的法线,添加它们的法线,并对结果进行归一化。有没有办法做到这一点?
EDIT2:到目前为止,我发现了一些最终似乎不起作用的选项:现在不推荐在 hlsl 中设置“shademode”。将填充模式设置为“线框”会很整洁(同时剔除正面),只要我能够设置线条粗细。
我正在这里研究一个新想法。我也许可以遍历顶点,找到它们在屏幕上的位置,并使用 RoundLine 库之类的东西在这些点之间绘制二维线。我要试试这个,看看它是否有效。
【问题讨论】:
标签: xna shader hlsl vertex outline