Shader顶点着色器修改顶点高度的一个思路

37 篇文章 3 订阅

        有时候希望通过某些图片信息或者渐变信息或者数组之类的内容来使用Shader顶点着色器修改顶点高度,这时候会发现一个问题,顶点着色器中无法使用纹理采样,而ShaderGraph的Gradient属性即无法exposed也无法使用代码修改,而Shader或者ShaderGraph也无法使用数组属性。这时候可以考虑的办法是使用C#脚本让图片或者渐变或者数组之类的内容来决定物体的顶点颜色,然后在Shader或者ShaderGraph中通过顶点颜色来决定顶点高度。

        后来发现图片是可以作用于顶点着色器着色器的,只不过不要使用Sample Texture 2D节点来采样,应该使用Sample Texture 2D LOD节点来采样。不过这里始终有个问题,就是在Shader中更改顶点位置的时候,顶点法线始终无法更新,这会导致光照结果错误。目前能想到的办法有两个,一个是不管效率如何,直接在C#脚本中更改顶点位置,同时重新计算顶点法线;另一个办法是制作一张与灰度图对应的法线贴图,这样在把灰度图作为顶点高度参数的情况下,把法线贴图也贴上去。节省一点儿的办法是用一个png图片,让这个图片的rgb通道表示法线方向,a通道表示高度,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值