![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity Shader
17岁的勇气
愿70岁依然有勇气
展开
-
Unity Shader unity文档学习笔记(十八):unity雾效原理
看很多文章用近平面远平面组成矩阵后转到裁剪空间下通过Z值来解,实际更简单的方式可以直接通过判断距离来实现。Test_Fog.cginc 库。FogMgr控制远近面。原创 2024-07-31 10:36:20 · 327 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(十九):网格 在Maya的Mel脚本新增顶点信息实现一些特殊shader效果
可以实现模型从下往上消融死亡溶解而不是用噪声图来实现顶点草(和其他植被合批的草地,不用UV来实现)的摇摆效果顶点动画原创 2022-02-09 15:22:17 · 1549 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(十七):径向模糊 实现类似冲锋时的速度感
实现思路:离中心点越远的像素 模糊效果越明显 UV偏移的量越大shader// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "3D/ScreenEdgeBlur" {//------------------原创 2021-07-26 20:11:36 · 736 阅读 · 3 评论 -
Unity Shader unity文档学习笔记(十六):模板测试StencilTest UGUI Mask遮罩实现
UGUI的Mask也是通过Stencil实现的Stencil的所有参数如下Stencil{ Ref 1//Reference Value ReadMask 255 WriteMask 255 Comp Always //Comparison Function Pass Replace Fail Keep ZFail Replace}Ref 就是参考值,当参数允许赋值时,会把参考值赋给当前像素ReadMask 对当前参考值和已有值进行ma原创 2021-06-24 19:59:16 · 666 阅读 · 3 评论 -
Unity Shader unity文档学习笔记(十五):纹理映射
每个顶点都存储着 齐次坐标(位置),法线,UV坐标那给一个模型一张贴图它是怎么对应UV坐标的关系的呢简而言之就是对每个光栅化的屏幕坐标算出它的uv坐标(利用三角形顶点重心坐标插值),再利用这个uv坐标去查询texture上的颜色正常的图片纹理映射的两个问题:过大或者过小纹理过小:也能想象到 就是周围几个像素都是对应某个UV坐标这样看起来 肯定是像素一块一块的 不好看可以使用双线性插值(Bilinear Interpolation):简单点理解就是 某个点的颜色不是由纹理映射的颜色决定的原创 2021-06-24 09:44:21 · 439 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(十四):剔除 深度测试 透明度测试 透明度混合
写了这么久的shader发现自己还不会用这些标签Cull FrontZWrite OffBlend SrcAlpha OneMinusSrcAlpha然后 又有东西可以学了 内卷王 哈哈Cull 如果需要旋转还是关一下 默认是开启的背面剔除剔除如果是不需要背面的话可以不管 就是摄像机看不到的那一面 会被剔除掉ZWrite 深度写入 默认也是开启的但做透明度的时候就需要关闭一下 不然做深度测试的时候发现 这个像素在前面一点 然后就覆盖了这样的话就看不到 透明物体后面的东西了然后讲一下透明度原创 2021-06-18 20:47:40 · 467 阅读 · 3 评论 -
Unity Shader unity文档学习笔记(十三):怎么用shader修改unity自带的胶囊体 改成一个花瓶的形状
一年前遇到的面试题 怎么用shader修改unity自带的胶囊体 改成一个花瓶的形状思路:干预顶点写一个花瓶的曲线模型函数把Y轴放入函数中 乘以XZsin函数类似效果Shader "Unlit/VertexTest"{ SubShader { Pass { Tags { "LightMode"="ForwardBase" } CGPROGRAM #pragma vertex v原创 2021-06-11 15:08:54 · 283 阅读 · 2 评论 -
记录一下最近写shader需要用到的数学,向量
1.向量和标量的区别向量:有大小方向标量只有大小2.向量的模 是一个标量 就是长度 可以用直角函数 求斜边 例如(3,4) 长度为( (3)2+(4)2)的根号3.求两个点的距离可以用向量的减法,加向量的模求出来4.向量的标准化 向量/向量的模5.向量的点乘等于 向量a 向量b 一个标量float angle =a.xb.x+a.yb.x+a.z*b.z;如果angle 大于...原创 2019-11-30 21:14:48 · 297 阅读 · 1 评论 -
Unity Shader unity文档学习笔记(十二):shader实现 无限滚动背景
需要滚动的背景图片!!!! 需要设置图片的WrapMode为Repeatshader 比较简单 就是UV坐标做一个偏移 偏移的值保持在1以内就好了Shader "Unlit/UIScrollingBackground"{ Properties { _MainTex ("BaseTexture(RGB)", 2D) = "white" {} _ScrollXBaseSpeed ("BaseSpeed", Float) = 1.0 } S.原创 2020-10-24 11:12:06 · 385 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(十一):战争迷雾核心算法
核心算法 非常简单 主要就是把一个点的世界坐标转换到贴图的UV坐标给整个场景一个大的plane 加上写的shader摄像机位置调成plane的正上方Shader "Unlit/FogRender"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags{ "Queue" = "Transparent+151" "IgnoreProjector" = "True" "RenderType" =原创 2020-09-30 16:11:16 · 1137 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(十):死亡溶解效果
我们要做的就是让这个溶解的对象一部分消失,另一部分存在,所以,这个时候我们就需要一个Mask图进行控制,我们采样这张Mask图,就可以得到这个像素点当前的Mask值,然后用这个Mask值与我们设定的一个阈值来进行比较,小于阈值的部分discard,大于的部分正常计算。最终,我们将这个阈值从0逐渐增加到1,就可以实现模型的一部分像素先消失,直至整个模型完全消失的效果。mask越细腻 效果就越细腻代码如下Shader "Unlit/DissolveEffect"{ Properties { _原创 2020-09-19 14:59:02 · 253 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(九):热空气扭曲效果
简单实现 不考虑性能Shader "ApcShader/Distort" { Properties { _DistortStrength("DistortStrength", Range(0,1)) = 0.2 _DistortTimeFactor("DistortTimeFactor", Range(0,1)) = 1 _NoiseTex("NoiseTexture", 2D) = "white" {} } SubShader { ZWrite Off Cull Off原创 2020-09-18 11:23:18 · 478 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(八):边缘光(RimLight)效果
忘记dot的意思可以点这个 Shader "Unlit/outLine"{ //属性 Properties{ _RimColor("RimColor", Color) = (1,1,1,1) _RimPower("RimPower", Range(1.0, 5.0)) = 1 } //子着色器 SubShader { Pass { //定义Tags Tags{ "RenderType" = "Opaque" } CGPROGRAM //引原创 2020-09-17 17:42:40 · 351 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(七):后处理之高斯模糊
比起均值模糊 就是效果要好一点 说性能会好也好不到哪里去效果shaderusing UnityEngine;using System.Collections; //编辑状态下也运行[ExecuteInEditMode]//继承自PostEffectBasepublic class GaussianBlur : PostEffectBase{ //模糊半径 ...原创 2020-04-07 15:07:15 · 216 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(六):后处理之均值模糊(类似毛玻璃效果)
所谓模糊,也就是不清楚,清晰的图片,各个像素之间会有明显的过渡,而如果各个像素之间的差距不是很大,那么图像就会模糊了,极端一点的情况,当一张图片所有的像素之间颜色都差不多时,那么这张图片也就是一个纯色的图片了。模糊操作就是让像素间的颜色差距变小,比如A点是红色,A点周围的点是绿色,模糊就像用一把刷子,将A点和周围的点的颜色混合起来,变成最终的颜色。而怎样混合,按照不同的权值进行混合,就可以达到不同...原创 2020-03-07 22:42:43 · 298 阅读 · 0 评论 -
3D数学:矩形
1.矩阵:2维数组2.方阵: 行数和列数相等的矩阵是 常用的方阵 2X2的方阵3.对角矩阵:对角线上的元素不为0,其他元素都为04.单位矩阵:对角为1,其他为05. T 转置:行变成列或者说列变成行 例如:3行4列的矩阵转置后变成4行3列6.矩阵相乘条件:A = [3X4] B = [5X3] AXB = false BXA = true结果7....原创 2020-02-20 12:05:30 · 419 阅读 · 0 评论 -
shader常用函数
CG 标准函数库和 C 的标准函数库类似,Cg 提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect 函数,求取折射光线方向向量可以使用 refract 函数,做矩阵乘法运算时可以使用 mul 函数。有些函数直接和 GPU 指令相对应,所以执行效率非常高。绝大部分标准函数都被重载过,...转载 2019-12-23 15:54:16 · 310 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(五):给模型加上法线贴图
加法线效果 和漫反射模型的shader代码有点类似漫反射模型是计算物体表面和和光照方向的角度法线是在切线空间下计算法线图片的UV信息和光照方向的角度当然我是看其他文章猜的 可能有错误 这里有原文章https://blog.csdn.net/puppet_master/article/details/53591167https://blog.csdn.net/puppet_master...原创 2019-12-16 23:12:09 · 531 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(四):巧用时间函数 来做水波,uv动画,草的顶点动画
随着写shader越来越多 发现确实shader也不是什么很难理解的东西了但前提是要懂原理附上最近学到的shader水波之类的Shader "Unlit/SinShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM #pra...原创 2019-12-12 17:30:01 · 845 阅读 · 1 评论 -
Unity Shader unity文档学习笔记(三):漫反射模型
漫反射模型:就是例如桌子底下没有光照但又不是完全黑的这是因为有其他光源反射到桌子底下了而想要做成实现中的光源 这个是有点难度的所以就有简单的思路,做一个粗糙的光照模型简单的思路:运用在平行光环境下怎么判断一个点的受光强度?通过一个点的法线和平行光的法线夹角为0时说明光照强度最大90度内越大光照强度越小大于90度可以当作不受光这是两个向量点乘反映着两个向量的“相似度”,两个向...原创 2019-12-05 18:26:41 · 200 阅读 · 0 评论 -
unity Mesh编程
一个模型的组成就是通过网格来实现的也就是通过顶点组成三角形,三角形组成多边形和多边体如果你想要展示一个3D游戏物体,它必须拥有两个组件。MeshFilter 这个组件记录了你想要展示的网格数据MeshRenderer 使用这个组件告诉网格如何渲染,比如使用哪个材质球,是否接受阴影和其他设置。然后还需要画网格的数据:顶点数组 vector3[] vrts 以及(顺时针画才行)画顶点的顺序...原创 2019-11-25 17:55:03 · 446 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(二):顶点片元shader给模型加上UV贴图
废话不多说 直接看代码Shader "Unlit/MyTextureShader"{ Properties{ //人物的uv贴图 _MainTex("MainTex",2D) ="white"{} } SubShader{ Pass{ CGPROGRAM #pragma vertex vert #pragma fragment f...原创 2019-11-22 09:37:59 · 415 阅读 · 0 评论 -
Unity Shader unity文档学习笔记(一):了解顶点片元shader构造以及写第一个shader
首先创建一个shader 点击Create > Shader > Unlit Shader 创建顶点片头shaderShader "Unlit/NewUnlitShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Ta...原创 2019-11-19 20:31:47 · 190 阅读 · 0 评论