Shaderlab
L牵蜗牛看世界
善待自己,做好普通一猿
展开
-
【ShaderLab学习】UnityShader基础理解
渲染管线—模型是如何绘制到屏幕上的渲染管线主要分为:应用程序阶段、顶点处理、面处理、光栅化、像素处理。下面就来具体说说。1、应用程序阶段:这个比较好理解,比如我们使用unity开始游戏,创建一个物体有,物体要正确显示,需要CPU计算好,物体的顶点坐标、法向量、纹理坐标、纹理等数据,然后传给通过数据总线传给图形硬件。2、顶点处理:通过一系列的坐标系转换,将模型的顶点在摄像机前进行位移,并最终投...原创 2018-10-10 23:18:11 · 365 阅读 · 0 评论 -
【Shaderlab练习】Normal Matrix - 对法向量(Normal)的变换矩阵的推导
Normal Matrix 对法向量(Normal)的变换矩阵的推导Graphics中,用Matrix把点从一个空间转换至另一个空间是比较常见的操作,如把World Space Position转换到View Space。但是对于NonOrthogonal matrix(非正交矩阵)来说,转换之后的Normal就不垂直于它的Tangent了。推荐几篇不错的推导过程:第一篇:原文链接:法线...原创 2018-12-03 13:45:52 · 2273 阅读 · 0 评论 -
【Shaderlab练习】T_VertexControlByNoise
T_VertexControlByNoise 控制模型顶点按照Nosie算法缩放位移Githubhttps://github.com/l2xin/ZT_ShaderLearning/tree/master/Assets/L2xin/004_VertexControlByNoise效果gifnoise_fractalnoise_sum_absvalue_noise...原创 2018-12-01 16:03:24 · 500 阅读 · 0 评论 -
【Shaderlab练习】T_VertexScaleBase & T_VertexScaleTangent 控制顶点缩放
T_VertexScaleBase & T_VertexScaleTangent 控制顶点缩放Githubhttps://github.com/l2xin/ZT_ShaderLearning/tree/master/Assets/L2xin/003_VertexScale顶点基础缩放T_VertexScaleBase效果gif相当于模型整体缩放_MaxScale;v.ve...原创 2018-11-28 01:50:29 · 266 阅读 · 0 评论 -
【Shaderlab练习】T_DoubleFaceMirrorReflection 双面镜面反射
T_DoubleFaceMirrorReflection 双面镜面反射Githubhttps://github.com/l2xin/ZT_ShaderLearning/tree/master/Assets/L2xin/002_DoubleFaceMirrorReflection效果如下:Cull Off需关闭裁剪背面剔除或者正面剔除。法线方向和光源方向dot计算出镜面反射结果o...原创 2018-11-28 01:45:17 · 370 阅读 · 0 评论 -
【Shaderlab练习】T_VertexMoveShader 控制模型顶点移动
T_VertexMoveShader 控制模型顶点移动效果gif顶点偏移固定值v.vertex.xyz += _MaxDistance * v.normal.xyz;时间相关要对顶点移动做周期控制,想到正弦余弦曲线,使用_SinTime或者_CosTime._Time float4 Time (t/20, t, t2, t3)_SinTime float4 Sine o...原创 2018-11-28 01:37:34 · 603 阅读 · 0 评论 -
【ShaderLab学习】SubShader Tags理解
ShaderLab: SubShader Tags作用SubShaders使用标签来告诉引擎如何以及何时将其渲染。语义:Tags { "TagName1" = "Value1" "TagName2" = "Value2" } 指定TagName1具有Value1的值,TagName2具有Value2的值。标签的数目不受限制。标签基本上是键值对(key-原创 2018-10-27 23:52:13 · 842 阅读 · 0 评论 -
【ShaderLab学习】RenderType理解
RenderType在Unity Shader中会经常在SubShader中使用Tags,其中就会涉及RenderType。SubShader{ Tags{ "RenderType" = "Opaque" } ...}内置的RenderType标签:http://www.ceeger.com/Components/SL-ShaderReplacement.html...原创 2018-10-27 20:33:40 · 7896 阅读 · 5 评论 -
【ShaderLab学习】RenderQueue理解
RenderQueue默认情况下,Unity会基于对象距离摄像机的远近来排序你的对象。因此,当一个对象离摄像机越近,它就会优先绘制在其他更远的对象上面。对于大多数情况这是有效并合适的,但是在一些特殊情况下,你可能想要自己控制对象的绘制顺序。而使用Tags{}块我们就可以得到这样的控制。Unity提供给我们一些默认的渲染队列,每一个对应一个唯一的值,来指导Unity绘制对象到屏幕上。这些内置的渲...原创 2018-10-25 18:21:04 · 12353 阅读 · 2 评论 -
【ShaderLab学习】Cull ZWrite ZTest理解
* **什么是深度缓存** 深度缓存中存储着`准备要绘制在屏幕上的像素点`的深度值。如果启用深度缓冲区,在绘制每个像素之前,会把该像素的深度值和深度缓冲区的深度值进行比较。如果<font color=#0000ff>*新像素深度值 < 深度缓存深度值*</font>,则新像素值取代本来该点的值,缓冲区的深度值也替换成新像素点的深度值;反之,<font color=#ff0000>新像素值被遮挡,其颜色值和深度将被丢弃</font>。原创 2018-10-25 17:22:36 · 1748 阅读 · 0 评论 -
【ShaderLab学习】AlphaTest & AlphaBlend理解[2]
Alpha Blend透明混合使用当前片元的透明度作为混合因子,与已存储在颜色缓冲中的颜色值进行混合,得到新的颜色。需要注意的是,透明度混合需要关闭深度写入,这时候要注意物体的渲染顺序。源颜色(当前片元颜色)source color用S或者SrcColor表示目标颜色(颜色缓冲中的颜色)destination color用D或者DstColor表示官方文档:https://docs....原创 2018-10-28 18:29:38 · 4451 阅读 · 0 评论 -
【ShaderLab学习】AlphaTest & AlphaBlend理解[1]
透明度测试:它采用一种“霸道极端”的机制,只要一个片元的透明度不满足条件(通常是小于某个阈值),那么它对应的片元就会被舍弃。被舍弃的片元将不会再进行任何处理,也不会对颜色缓冲产生任何影响;否则,就会按照普通的不透明物体的处理方式来处理它,即进行深度测试,深度写入。也就是说,透明度测试是不需要关闭深度写入的,它和其他不透明物体最大的不同...原创 2018-10-28 18:24:36 · 1074 阅读 · 0 评论 -
【Shaderlab练习】T_MatcapBase Material Capture(材质捕获)基础介绍
Githubhttps://github.com/l2xin/ZT_ShaderLearning/tree/master/Assets/L2xin/005_MatcapBaseMapcap是什么Unity Community Wiki上的定义:MatCap (Material Capture) shader, for displaying objects with reflective...原创 2018-12-03 13:55:50 · 1031 阅读 · 0 评论