![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unityshader
5I7U
这个作者很懒,什么都没留下…
展开
-
水的渲染(水体)
水体渲染有很多种方法,这里写的很详细。我这里使用Flow Map的方法,先渲染水的主体,白沫以后再写。先放两张参考图:方法介绍本质上就是UV动画,需要的重要素材有两种,一是法线贴图,二是方向贴图。Flow Map的典型使用代码如下所示://get and uncompress the flow vector for this pixelfloat2 flowmap = tex2D( FlowMapS, tex0 ).rg * 2.0f - 1.0f;float cycleOffset = t原创 2020-05-17 15:49:22 · 1956 阅读 · 0 评论 -
伪次表面散射梳理
渲染角色的时候需要表现出皮肤的通透感,找到下面四种模拟的方法:预积分,贴图映射,matcap,模拟透光。预积分的方法把次表面散射的效果预计算成一张二维查找表,查找表的参数分别是dot(N,L)和曲率,因为这两者结合就能够反映出光照随着曲率的变化。fixed3 sss =tex2D(_SSSLUT,float2(nl*0.499+0.5,cuv));但是边缘不够通透,这种方法可能更适用于写实效果。贴图映射其实上面的预积分方法也属于贴图映射的手段。先来看看效果,原文档在这里。采样的贴图:原创 2020-05-16 19:22:30 · 1300 阅读 · 0 评论 -
替换着色器Replacement Shader的用法
方法解释1.Tags可以自定义。2.subshader标签的使用:原本的shader:Tags { “RenderType”=“Opaque” }替换的shader:Tags { “RenderType”=“Opaque” }Tags { “RenderType”=“SomethingElse” }标签为"RenderType"=“Opaque"的,会被同样是"RenderType”="Opaque"标签的替换shader所替换。需要替换的shader,RenderType后面的键值要一样原创 2020-05-12 10:13:55 · 1141 阅读 · 0 评论 -
前向渲染路径下多灯光混合梳理
Shade4PointLights:计算四个逐顶点光照,只能用于BasePass,方向、颜色、衰减都已经包含在内,输出的是漫反射,需要直接加载最后的结果中。ShadeSH9:球谐光照,只能用于BasePass。AddPass:每多一个逐像素光照,就调用一次AddPass。模式要使用Blend One One(也可以使用其他混合模式),否则会覆盖BasePass。AddPass中不用计算环境光。如果只有BassPass,除了第一个最亮的平行光之外,其他都会按点光源来计算,可以通过Shade4PointL原创 2020-05-10 22:14:40 · 557 阅读 · 0 评论 -
Unity深度图的理论知识
深度图的解释在坐标变换中,顶点从裁剪空间到屏幕空间中间有两个步骤,一个是NDC,一个是屏幕映射。NDC在NDC之前,x,y,z,w的值跟Near和far有关,w的范围就是[Near,Far]。经过NDC,即用w除以x,y,z,此时x,y,z的值范围是[-1,1],w是1.(但在OpenGl中,z的范围是[0,1])。z就是深度值。储存到纹理中映射一下:d=z*0.5+0.5屏幕映射经过NDC后,在根据屏幕像素来把x,y映射到屏幕上。映射方法:screen_x = clip_x * pix原创 2020-05-09 16:15:01 · 1619 阅读 · 0 评论 -
UnityShader水墨渲染的尝试
UnityShader水墨渲染的尝试描边混合纹理先上一张原图,模型素材之类的可以在这里下载描边使用最基本的dot(n,v)来计算边缘,根据需要给控制项,这里我使用了pow来使明暗对比更强烈,又除以一个值调整过渡。half nv = max(saturate(dot(bump, viewDir)),0.0001);//这里用除法调节起来比较好控制fixed outline = po...原创 2020-05-05 18:37:50 · 3516 阅读 · 0 评论