Unity
ZanDatsu
这个作者很懒,什么都没留下…
展开
-
修复grabpass制作的折射在水面以上也会扭曲的问题
之前被问到如何修复由于grabpass采样制作的水体折射问题:如上图,这是一个浸没在水面的立方体,由于获取grabpass会同时获取水面上部分立方体的图像,因此在扭曲的时候会将立方体上半部分进行扭曲。我的思路是通过对比深度图来确定是否有物体位于水上,水上的部分势必会遮挡住水面,因此深度值应该更小。既然我们能在grabpass图上通过偏移能采样到立方体,那么在深度图上同样能,下面是未经过偏移的深度采样:fixed depth =LinearEyeDepth(SAMPLE_DEPTH_TEXTURE_P原创 2020-08-14 17:53:35 · 489 阅读 · 1 评论 -
shaderlab实现水体(折射、反射、深度检测)
之前B站Unity官方发布了一个URP制作水体着色器的教程视频,我试着将它移植到shaderlab中,并增加反射、折射等效果。深度检测首先是深度检测。如果直接渲染水体材质,就无法体现深水区和浅水的明暗变化。(图片来源)为了营造这种明暗变化,需要读取相机深度图还原深度,然后同当前坐标对比,已确定水深。我们首先使用以下代码读取一下摄像机深度图:camera.depthTextureMode |= DepthTextureMode.Depth;这样,在shader中通过uniform sam原创 2020-08-08 17:24:05 · 2626 阅读 · 0 评论 -
动态草地的Shaderlab实现方法
最近游戏《对马岛之魂》发售了。其中的草地特动效十分先进:(图片来自网络)于是我也萌生了写一个动态草地的shader草模型现如今的许多手游甚至端游的草地考虑到硬件消耗,常常把草做成星形或者广告牌草地(图片来自网络)但是这样的草地很容易露出破绽,效果也不是特别好,于是这里我让每根草都拥有单独的模型。实际上更好的方法是做多段的长方形,然后使用mask贴图指定草地形状,这样可以使草地形状更加圆润。然后视情况调整、套用这篇文章中的Maya脚本制作出草丛簇。完成模型的制作。草地动效实现草地的动原创 2020-08-06 15:21:48 · 1484 阅读 · 1 评论