Unity Water Shader】的更多相关文章

上图是一个物体浸入水中的效果 原理 我们使用相机渲染的整个场景的深度图减去需要忽略的模型的深度,这里忽略的是图中蓝色部分,就保留了其他的深度值. 用到Main Camera渲染的深度贴图: sampler2D _CameraDepthTexture; //在shader中声明,需要设置相机开启渲染深度图:深度图中记录的深度值:深度纹理中每个像素所记录的深度值是从0 到1 非线性分布的.精度通常是 24 位或16 位,这主要取决于所使用的深度缓冲区.当读取深度纹理时,我们可以得到一个0-1范围内的…
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: happylifemxy@163.com 文章开头,先给自己诚求个游戏研发实习的好去处. 浅墨今年1月.明年上半年有近半年的空暇时间可供实习. 近5年游戏编程经验,能够胜任全职的游戏开发工作.仅仅拿实习生的工资(性价比非…
<纪念碑谷>里有一关开始是一个宝箱展开后里面有一个water cube,其中还有小鱼在游.如下截图: 因为我们知道<纪念碑谷>是unity做的,而现在正开始学unity,所以也想做一个类似的. unity5的standard assets里面有一个WaterProDaytime,折射和反射都有,开始以为用它一拼就完事儿了,可没想到这个东西只能平放效果才对,竖着放效果就不对了,如下图所示: (下面水平放置的water水波纹是正常的,但上面竖立放置的water水纹变成竖直的长条,这种效…
这次主要讨论Unity自带的Shader中Transparent Shader Family 这个家族的Shader一共7种,原理和类型与Normal中的上差不多,只不过这些Shader是用在半透明或者全透明的物体上面的.他们的主纹理接受RGBA4个通道.如果你的模型一部分是半透明,一部分是不透明的.请分开使用两张材质,半透明的材质这个家族的Shader.这个家族的Shader的内容和Normal中同名的几乎一样,只是添加了半透明效果,因此不再做重复介绍. 通过读取纹理中的alpha值,这个Tr…
写在前面 Unity的用户量越来越大,越来越有钱,这几年摊子也铺的越来越大,所以各个版本总是有很多Bug.对于一些Bug官方在ReleaseNote里的说明是很不详细的,而对于一些渲染相关的Bug,有时候更是偷偷的修复,即使贴出来也信息量极少.如果你想复用它的一些内置Shader代码到自己的Shader中时千万要注意. 今天要分析的Bug是我在2017版本(本人使用2017.4)中遇到的,Shader编写完会出现一个 program 'fragXXX':Unrecognized sampler…
在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示. 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader Unity坐标系转换 1: transform.localToWorldMatrix 局部转世界的矩阵;2: transfrom.worldToLocalMatrix 世界坐标转局部坐标矩阵; MultiplyPoint, MultiplyPoint3x4 MultiplayVector 来进行坐…
Shader也叫着色器,是Unity里面比较难的一个点,网上有很多别人写好的shader,我们可以下载下来用或者修改学习. Shader可以做出很多非常不错的效果,因为它是插在渲染管道里面的程序,一来是性能好,是GPU执行的,不需要CPU再去做额外的处理,二来就是可控性强,可以控制到每个顶点,每个像素的着色. 比如把一张图片置灰,插入一个像素Shader,每个像素在纹理着色的时候把整个RGBA求一个灰度出来,这样就变成一个灰色的图片,这就是一个典型的像素Shader的使用. Shader 1:…
Unity provides a handful of builtin values for your shaders: things like current object's transformation matrices, time etc. Unity为你在编写shader是提供了少量的内置变量:类似 当前物体的变换矩阵,时间等. You just use them in ShaderLab like you'd use any other property, the only diff…
下面继续看基于surface的shader代码,基本与Vertex&Fragment shader差不多,只是不能写pass,然后只需要声明surface函数,就能处理所有的事情. Shader "T1/Hero/Diffuse" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Color (,,,) [HideInInspector]_BlendColor(, , , )…
先来看一段我们项目常见的Shader代码,这个是Vertex&Fragment shader,目前已经不常用了,不过还是适合我们理解一些基础知识和理解一些比较老的shader 代码.下次我们再讲unity主推的surface shader Shader "Custom/test" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Pass { Tag…