
unity shader
文章平均质量分 60
一零壹0
这个作者很懒,什么都没留下…
展开
-
unity用shader来实现2D涟漪/水波纹特效
一、效果图如何在画面中产生一个涟漪的效果?仔细看上面的效果视频,不难发现扩散的涟漪就是高中物理学过的波,事实上游戏中也通常使用正弦函数/正弦波来逼近真实世界中的涟漪的效果。正弦函数/正弦波是最基础的波形,如果想要更加复杂的表现效果可以通过修改波的公式或者修改计算的坐标空间。(我们非常机智的使用了自定义的曲线来定义了波形)我们自定义的波形有了波形,然后呢?有了波形并不意味着就能产生涟漪的效果,画面中的折射、反射、扭曲效果还需要我们实现。但如果仔细观察效果并提炼规律,其实也不原创 2022-04-25 15:21:37 · 5141 阅读 · 0 评论 -
Unity Shader 赛博朋克效果
一、效果图1、原图加滤镜原理获取颜色GRB的值,加深的数值,红色加强绿色减弱。工程源码原创 2022-04-07 11:48:08 · 3527 阅读 · 0 评论 -
Unity Shader 之遮挡透明
先放出结果图:榔头被挡住部分显示出绿色 当被遮挡时,遮挡部分透明处理,那么需要涉及渲染深度的知识。引擎是如何判断哪个物体在前面哪个物体在后面呢? 深度:每个像素有自己的深度值,离摄像机近的深度小,远的深度大 深度缓冲区:存储每个像素的深度 颜色缓冲区:存储每个像素的颜色 过程:首先比较像素的深度与深度缓冲区同一位置的深度,如果前者小于后者,则未通过深度测试;否则,通过深度测试,将前者写入后者,将该像素的颜色写入到颜色缓冲区。将颜色缓冲区像素颜色显示到屏幕上。 通.原创 2022-04-05 19:31:49 · 1739 阅读 · 0 评论 -
Unity Shader 法线贴图原理解析
法线贴图的作用是在平面上模拟凹凸效果,以达到节省模型资源的目的的。所以要理解法线原理,就要先理解人眼是如何识别凹凸效果的。这并不是什么复杂的科学知识,只要你还记得初中物理的基础光线反射原理就能理解接下来我们叙述的事情。我们可以模拟一个镜面反射的平面,或者你也可以理解为我们用了一个BLIN材质球,因为它能很好的反射光线,如下图:那么当我们为平面增加一个凸起结构时候,光线的反射发生了变化,如下图:我们会发现原本平行的的入射光线由于平面上的结构出现了一些不同角度的反射这些不.原创 2022-04-05 13:54:50 · 2549 阅读 · 0 评论 -
Unity Shader Render Path
Render Path定义Render Path,就是采取的光照流程。Render Path设置可以在Edit-> Project Settings->Player 里设定,见下图。也可以直接在摄像机的Inspector面板里设置。Render Path详细讲解一:Vertex LitVertex Lit即顶点光照,顾名思义, 就是所有的光照计算都是在顶点进行的,因此所有的像素运算效果都不支持,如阴影,法线贴...原创 2022-04-03 21:38:12 · 223 阅读 · 0 评论 -
Unity Shader RenderQueue
标签名称 Queue,RenderType,ForceNoShadowCasting,IgnoreProjector这里讲Queue相当于给物体打个标签,告诉unity,我这个物体渲染顺序如何可以通过FrameDebug来查看 渲染顺序定义渲染顺序,值较大的靠后渲染,值较小的靠前渲染。Background 1000。 比如 天空盒。Geomeary 2000。 大部分物体在这个队列。不透明的物体也在这里。 从近到远 。 默认AlphaTes...原创 2022-04-03 12:36:29 · 781 阅读 · 1 评论 -
UnityShader 混合操作(Blending)
混合操作(Blending) 混合操作最常见的用途便是用来制作透明物体、或者进行纹理混合。它是Shader渲染的最后一步如上图所示,正被渲染的像素经过顶点光照、顶点着色器、剔除和深度测试、雾效、Alpha测试等一系列操作之后,最后一步便是混合操作。这个时候计算结果即将被输出到帧缓冲中。而混合操作,就是管理如何将这些像素输出到帧缓存中的一个过程。混合操作有两个对象:源和目标,因此也有两个对应的因子,即源因子和目标因子混合操作相关的句法 BlendOff ...原创 2022-03-30 11:05:23 · 1351 阅读 · 0 评论 -
Unity Shader 深度测试
1.深度指该像素距离摄像机的距离。离摄像机越远,深度越大。2.深度缓冲 & 颜色缓冲深度缓冲中存储着每个像素对应的深度值。颜色缓冲中存储着每个像素对应的颜色值。3.深度测试将像素的深度与深度缓冲的深度进行比较。如果通过了深度测试,就有机会去改写深度缓冲的对应值;否则该像素会被舍弃。语法如下:ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always默认值为LEqual,小于等于。即表原创 2022-03-27 21:47:42 · 947 阅读 · 0 评论 -
Unity Shader 模板测试
模板测试和深度测试很相似:1.如果模板测试不通过,则该像素会被舍弃2.有模板缓冲区,每像素对应存放一个8位整数(0-255)3.模板测试也是一个比较值的过程,将参考值和模板缓冲的值进行比较当然也有很不同的地方:1.即使模板测试不通过,仍然可以修改模板缓冲中的值一.语法1.Ref referenceValue设置参考值,referenceValue(范围0-255)2.ReadMask readMask参考值和模板缓冲的值,会和readMask进行按位与(&原创 2022-03-25 22:31:51 · 1359 阅读 · 0 评论 -
Unity Shader Alpha测试
Alpha测试是在Shader1.0支持,最新Shader2.0不支持,因为Shader2.0,可以在片段着色器中修改Alpha值Alpha测试相关句法 AlphaTest Off 用于渲染所有的像素 AlphaTest comparison AlphaValue 用于设定透明度测试只渲染在某一确定范围内的透明度值的像素,其中comparison取值如下 Greater——只渲染大于AlphaValue的像素 GEqual——只渲原创 2022-03-24 15:25:22 · 2800 阅读 · 0 评论 -
Unity Shader 基础数学向量
向量(Vector3)在虚拟的游戏世界中,3D数学决定了游戏,如何计算和模拟出开发者以及玩家看到的每一帧画面。学习基础的3D数学知识可以帮主用户对游戏引擎产生更深刻的了解。向量定义:既有大小又有方向的量叫做向量。在空间中,向量用一段有方向的线段来表示。应用十分广泛,可用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察方向、刚体受到的力等都是向量。因此向量是物理、动画、三维图形的基础。与向量相对的量成为标量:即只有大小没有方向的量。例如物体移动中的平均速率、路程。模:...原创 2022-03-24 14:51:21 · 948 阅读 · 0 评论 -
Unity Shader 内置矩阵
mul函数mul函数,Z = mul(M, V)是表示矩阵M和向量V进行点乘,得到一个向量Z,这个向量Z就是对向量V进行矩阵变换后得到的值。特别需要注意的是,例如normal是float3类型的,点乘的矩阵也要转换成float3x3。float3 normal = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal);矩阵内置的矩阵(float4x4):名称 说明UNITY_MATRIX_MVP 当前模型视图投影矩阵,通常用于把顶点/方向矢量...原创 2022-03-22 22:44:59 · 1097 阅读 · 1 评论 -
Unity Shader 之 环境光
Unity Shader 编写和默认Shader中都有对环境光的处理,首先我这里先看下环境光如何设置。一、先看下我们这里只改环境光颜色,就可以看到对unity中默认模型颜色影响二、参数详解Environment 选项卡点击 Window>Lighting > Settings 会弹出Lighting窗口,这个就是设置全局光照的窗口Environment 选项卡包含相关当前场景的环境光照效果的设置。内容取决于您的项目使用的渲染管线。内置渲染管线与通用渲染管线..原创 2022-03-20 23:15:26 · 6405 阅读 · 0 评论 -
Unity Shader 被遮挡的部分半透高亮显示
效果图,左边是正常遮挡,右边是修改后的,遮挡部分半透明高亮显示出来 默认情况下,模型如果有一部分被其他物体遮挡,在进行深度测试的时候是不会被通过的,所以最终不会被渲染出来。如果想让被遮挡的部分渲染出来,那就只能让他通过深度测试,然后跟已存在的像素进行混合,从而产生半透明效果。 模型未被遮挡的部分走正常渲染流程即可。 Shader "Custom/OcclusionShad...原创 2021-02-04 18:34:42 · 1521 阅读 · 0 评论 -
unity shader 颜色混合渐变
原理 两色渐变如图,在uv坐标系中像素(x,y)的取值范围是(0,0) - (1,1)设置_pos1的值作为区域限制,取值范围(0,1),然后判断当前像素的y值是否处于0-_pos1的区间,如果是就替换为_color1 - color2的过度色,否则就直接使用_color2的颜色_color1 - color2中的过度色,由0 -_pos1的比值定位,注意uv坐标系中左下角是...原创 2021-02-02 18:31:12 · 1109 阅读 · 0 评论 -
unity Shader入门之基础参数说明
一、先看一个效果然后慢慢解释二、先贴出Shader代码再解释Shader "Unlit/MyFirstShader"{ Properties { _Color("Color", Color) = (1,1,1,1) } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag ENDCG } } }既然是顶点片断着色器,那么就要先定义好顶点.原创 2020-12-03 18:27:32 · 416 阅读 · 0 评论 -
UnityShader 图片或者颜色混合模式详解
混合模式理解可简单理解为 指上下层图片相互有重叠时如何取色的一种称呼代码效果图直接解释Shader "Unlit1/TextureChange"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Color ("Color", Color) = (1,1,1,1)...原创 2020-05-20 15:38:37 · 2083 阅读 · 1 评论 -
unity shader 根据世界坐标,改变物体显示的颜色
一、效果图y坐标大于0显示红色,小于0显示绿色二、实现方法1、获取定点坐标然后转换成3D世界坐标。然后根据得到y值做修改核心的方式mul(_Object2World, v.vertex); //顶点坐标转换成3d世界坐标三、源码源码下载...原创 2016-11-24 14:05:00 · 4845 阅读 · 2 评论 -
unity shader模型边框
一、先看效果图 二、原理三、源码程序员事半功倍工具源码下载原创 2018-11-12 17:48:14 · 1179 阅读 · 0 评论 -
unity LineRenderer画多边形
一、效果图unity是左手坐标系所以要设置三角形定点需要按照顺时针方向才能被摄像机视角正方向的渲染出来,像demo中0,1,2,。渲染出来可以看到0,2,1就看不到了,当然了把摄像机渲染180度,修改坐标让渲染物体进入摄像机视野就能看了。(原因是渲染是单面的所以不按照unity顺时针排序正面拍摄看不到只能通过反面看了)Demo程序员事半功倍工具...原创 2019-09-11 16:10:52 · 817 阅读 · 0 评论 -
unity shader logo流光线条
Shader "myPractices/LogoShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags{"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} Blend Src...原创 2019-09-18 15:09:56 · 854 阅读 · 0 评论