Shader
文章平均质量分 56
小盖子
主攻Unity相关的技术美术相关内容...在此分享,望共同进步.
展开
-
大气层Shader(完整代码分享)
大气层Shader分享原创 2022-12-13 11:53:26 · 548 阅读 · 2 评论 -
冰冻效果Shader案例
分享一个带冻结过程的Shader案例原创 2022-09-22 17:21:18 · 1332 阅读 · 4 评论 -
Shader Reflection Probe 获取图像
这里记录分享一个实例,因为在我刚开始想使用水面做水面倒影的效果时候发现Shader中获取Reflection Probe反射探针不短如何获取,这里记录分享一个例子。一、放置组件创建Reflection Probe反射探针,放在合适的位置,用于映射内容。因为需要这边需要实时渲染,这边选项如下:二、Shader编写这边给出一个例子在Shader中如何得到Reflection Probe反射探针,映射到的内容。Shader "Custom/CubemapDebug" { Properties{原创 2022-02-11 10:51:06 · 3881 阅读 · 0 评论 -
Unity Shader 视差映射
老规矩先上图:视差映射是立体表现中比较常用的手段,但在具体理解的时候需要一定的抽象能力,下面分享一段非常简易的案例讲清什么是视察映射。如下图所示,在未偏移以前假设取的是点A,这时需要在高度图中取得高度信息A’,如调试信息不够则视线需要延伸至高度图的交叉点B’,并最终将UV偏移至点B。下面是代码:Shader "Giraffe/Cloud Parallax" { Properties { _MainTex("MainTex",2D) = "white"{} _Height("Heig原创 2021-08-25 09:42:59 · 1953 阅读 · 0 评论 -
Unity草地/草坪案例分享(完整代码)
老规矩先上图最近又开始继续操刀我的新独立游戏啦,网上看了很多草地的案例受益匪浅。但是嘛最近还是选择用自己的方式去实现。主要是因为这种方式可以更好的贴合我前后的需求。还有很多有意思的技术点,有时间一点点拿来和大家一起分享吧。这次先来说说草地的实现方式:由于草地需要贴合模型表面,所以这里是从附着的模型表面开始的:一、循环Mesh三角型数值,以三角型为单位记录一组数据,内容为三个顶点位置及其法线信息。代码如下:private List<GlassPoint> myData;原创 2021-08-23 20:29:35 · 4747 阅读 · 2 评论 -
模型涂抹案例分享(完整原码)
本文是模型的UV涂抹案例,按照惯例,先上图:好啦,下面开始讲解:一、为了可以让射线可以检测到模型表面,我们需要为模型添加一个MeshCollider,模型材质使用普通的Standard准备材质即可。二、准备笔刷材质,不需要目标纹理的,不赋值就可以了,下面是材质代码。笔刷Shader原码:Shader "Giraffe/SingleBursh"{ Properties { _TargetTex("目标图形",2D) = "white" {} _BrushTex("刷子形状",2原创 2021-08-12 10:27:49 · 488 阅读 · 0 评论 -
Unity Shader实现线框效果(详细图解)
先上图看看效果:下面详细分享一下制作步骤吧:一、首先模型本身需要特殊处理二、编写Shadershader "Giraffe/Wireframe" { properties{ _Color("Color",Color) = (1.0,1.0,1.0,1.0) _EdgeColor("Edge Color",Color) = (1.0,1.0,1.0,1.0) _EdgeColor2("Edge Color",Color) = (1.0,1.0,1原创 2021-06-07 11:45:46 · 7463 阅读 · 4 评论 -
Unity绳子/绳索效果
老规矩先上图:最近在做一个做一个游戏,绳子缠绕在一起然后需要把绳子解开方能赢得游戏。因为需要用到一个绳子的效果,网了查了不少资料一方面是用插件Obi Rope 或 Megafiers 都可以实现,另一方面比较硬核的可以使用自己的算法也可以用关节什么的。但由于IOS14以上版本对代码审核非常严格,很多插件是无法使用的,只能自己写算法了,网上很多方法都是使用关节实现的绳子效果,绳子并非一条连贯的绳子,以下分享一实现的方式:一、使用铰链关节(Hinge Joint)把球体串起,保留Sphere Colli原创 2020-10-23 11:35:32 · 10482 阅读 · 22 评论 -
被遗忘的Shader程序纹理-延边内缩纹理
最近感悟:相信很学Shader的小伙伴都是从冯乐乐的入门精要开始的。我也一样,在讲的程序纹理的时候篇幅也是非常短。举了一个例子:即在一个面上画上了9个点。当时我的想法是在图上画点这个能起什么作用呢?于是很快就看完跳过了,至到最近又重读这本书,仿佛打开了新世界的“狗洞”。哈哈哈…如果没留意真的就忽略过去了,程序纹理能做的事情真的太多了…正文:最近接到一个需求最终效果如图:贴图是这样子的即沿着模型边缘向内画一圈,咱先不管这效果有啥用处哈。确实翻便了很多网站都没能查到什么有用的资料,也试了很原创 2020-07-19 16:06:46 · 345 阅读 · 0 评论 -
Unity 实现2D地面挖洞涂抹地形
好久没写博客了,先来张图片吸吸粉吧。原创 2020-05-29 09:42:40 · 4852 阅读 · 12 评论 -
Shader实现瓶内液体效果(原码)
继上一篇:Shader实现瓶内液体效果https://blog.csdn.net/ww1351646544/article/details/98632525私聊我同朋友还是不少,为了能和大家一起学习进步下面把完整原码发出来。不明白的同学可以结合上面的文章阅读,也可以问我,谢谢。欢迎指正点赞…!SetWaterHeight这个脚本挂在物体上,并且给他一个空物体以确定水平线的高度,这个空...原创 2020-03-17 11:32:55 · 5195 阅读 · 13 评论 -
【线性代数的几何意义】行列式的几何意义
本文转自: http://www.cnblogs.com/AndyJee/p/3491487.html三、行列式的几何意义:行列式的定义:行列式是由一些数据排列成的方阵经过规定的计算方法而得到的一个数。当然,如果行列式中含有未知数,那么行列式就是一个多项式。它本质上代表一个数值,这点请与矩阵区别开来。矩阵只是一个数表,行列式还要对这个数表按照规则进一步计算,最终得到一个实数、复数或者多项式...转载 2020-03-15 20:36:35 · 1908 阅读 · 0 评论 -
学习线性代数-行列式 笔记(二)
n阶行列式原创 2020-03-15 20:03:50 · 387 阅读 · 0 评论 -
学习线性代数-行列式 笔记(一)
一、排列与逆序什么是排列:比如:1,2,3,4,5…n上面这个排列也叫作n级排列,n级排列的的组合有n的阶乘种。逆序数:”逆序“是指较大的数排在了前面。”逆序数“,数列中的每个数后面有多少个数比它本身小的总和。比如:45231 = 3 + 3 +1 + 1 + 0 = 8(第一个数4后面2 3 1比它小,所以是3)(第二个数5后面2 3 1比它小,所以是3)(第三个数2后面1比...原创 2020-03-15 20:03:29 · 3943 阅读 · 0 评论 -
声波Shader
最近需求需要做一个声波Shader…网上找不到能用的的,只好自己写了一个。这里分享给大家,代码本身有注释,这里就不做介绍了,上图。这里面用到了幕运算,对性能消耗会比较大,有更好的方法欢迎指教。QQ:262319244代码如下:Shader "GaiziShader/SoundWave" {Properties { //角度 _Angle("Angle",Range(1,10))...原创 2019-11-04 11:39:17 · 637 阅读 · 0 评论 -
Unity效果之小白速成(一)
此文适合需要快速无脑提升Unity工程品质的童鞋,不适合Unity专业大佬。相信很多童鞋,无论是程序和模型都可能会遇到老板说这个效果太差了,稍微调一下吧。但是要知道要自己细调,在unity中需要调到自己理想的材质在自己不是很熟悉的情况下还是比较麻烦。些文以不深入的角度偷懒不讲理论的,介绍快速调Unity效果的方式。在很多情况下,即使你是个资深Unity,这也是你常用的"刷子"。一.环境光调...原创 2019-10-30 23:50:32 · 898 阅读 · 0 评论 -
弦抖动Shader
分享一个今天写的Shader,琴弦抖动。可以振幅、频率、起始位置等。先上图:使用这个Shader的模型顶点不能太好,我这里用的是Unity默认的3D物体,Panel。好的,下面是原码:Shader "Custom/VectorAnim" { Properties { //流动纹理 _MainTex ("Main Tex", 2D) = "white" {} //影响颜色 ...原创 2019-10-24 15:12:04 · 649 阅读 · 0 评论 -
UnityShader水面结冰面效果
先上图上,动态效果非常好...!不面结冰效果和之前的水面也是类似的:https://blog.csdn.net/ww1351646544/article/details/88605093首先我们去掉Time函数对水面法法线的修改,然后再加上光照Pass,与上一篇水面不同的时,光照的需要加上纹理贴图,最后再用UV判断越亮的部分越先显示出来后出现由水面慢慢凝结成冰面的效果。...原创 2019-04-07 03:06:09 · 4155 阅读 · 0 评论 -
UnityShader水波效果
话不多说,先上图! 安罩小米8测试没有问题。最近没上班在家学习,做了这个带点恐怖的密室逃脱类游戏弄了这个水波效果,和大家分享一下。在之前的例子里进行修改的,没看的同学可以点这里看下代码。传送门:https://blog.csdn.net/ww1351646544/article/details/88605093其实也很简单只是在原来的基础上多加了一个Pass来接受灯光效果,代码如下...原创 2019-04-07 02:51:19 · 1163 阅读 · 0 评论 -
Shader中的矢量运算与意义
失量也叫向量(数学中叫向量,物理中叫失量),它有自己的方向和模长,通常用来表示一个速度或是一个方向,有时候也会用来表示一个距离某点的距离。失量的乘法、除法各分量分别除以除数,意味着失量被按倍数放大或缩小,但其中向量的除法是没有意义的,应该认为是失量除法。乘法:2(1,2,3)=(2,4,6)除法:(1,2,3)/2=(0.5,1,1.5)失量的加法、减法我们只需要把三个分量分别相加或...原创 2019-03-19 13:11:59 · 1786 阅读 · 11 评论 -
Shader中的坐标与空间
笛卡尔坐标系即我们上学时的坐标系,在我们开发的时候要注意的是这两个图形接口的坐标y是相反的。左/右手坐标系这图一上还有什么不明白的?左/右手法则模型空间是对像或模型本身的空间,是左手坐标系的。世界空间宏观来说是最外层的空间,绝对位置就是世界坐标系中心的位置,同样的左手坐标系。物体从模型空间转换到世界空间叫作模型变换。观察空间也叫摄像机空间,观察空间原点位于摄像机处,右手坐...原创 2019-03-19 10:33:00 · 1132 阅读 · 0 评论 -
Unity光线穿墙问题
先来一张“惊世骇俗”的效果图,这是最后效果。今天自己在家做开发,效果觉得还能忽悠过去,但是人物走在墙边的时候,忽然发现,隔壁的房间跟着亮了…这让我很慌。于是时好解决一下咯…纹理还没有加上,但是光是不会透过去 了,大家可以作为参考哈,下面是第一第效果图的完整代码。后面我会把它的升级版(加上法线凹凸效果的)再发出来…Shader "Custom/DSPShader" { Proper...原创 2019-03-26 00:33:16 · 3953 阅读 · 0 评论 -
Shader常用函数属性
Properties属性支持类型属性类型默认值的定义语法例子Intnumber_Int(“Int”,Int)=2Floatnumber_Float(“Float”,Float)=1.5Range(min,max)number_Range(“Range”,Range(0.0,5.0))=3.0Color(number,number,number...原创 2019-03-19 02:19:31 · 3036 阅读 · 3 评论 -
Shader遇到的一些问题总结
在这次的游戏开发中确实遇到了很我各种各样的,但是与以往相比要顺畅很多不会手足无措。问题产生的原因很简单,就是一些功能以前用过,但由于太长时间没用了一些关键的点忘记了,导致了一些基本的错误,耽误了不少时间,在这就列出一些。一、光线穿墙问题这个问题原于光线没有被前面的物体接收,导致被后面的物体接收了。具体解决方案在这里:https://blog.csdn.net/ww1351646544/ar...原创 2019-04-07 19:09:36 · 1518 阅读 · 0 评论 -
[Shader]模型沙粒化掉落
作者:延澈左来源:CSDN原文:https://blog.csdn.net/yanchezuo/article/details/80184526参考文章。1.知识要点geometry shader基于 shader model 4.0的Geometry shader.Vertex -> Geometry -> Fragment#pragma geometry:dx10及...转载 2019-04-30 10:10:33 · 864 阅读 · 0 评论 -
模型内边缘光带贴图与法线
最近工作学习任务比较多,好久都没有写博客了。今天写了个“模型内边缘光带贴图与法线”的Shader。在此分享给大家,有需要用到的可以直接拿去用。瑕疵是还未对点光源进行计算。Shader "Custom/RimLight_UV_Bump" { Properties{ _Color("Color Tint",Color)=(1,1,1,1) _MainTex("Main Tex",2D)=...原创 2019-10-11 18:05:57 · 348 阅读 · 2 评论 -
Shader实现瓶内液体效果
话不多说,先上图…需求:1.液体效果可变色。2.液体透明有折射效果。3.适应各种容器形状。4.随移动幅度进行抖动。实现思路:一、水平面的实现这个是比较简单的,设定一定的高度,有超过此高度的则进行一个片原舍弃。但片元的高度的本地的坐标,真实对比的高度是世界坐标,因此这里需要有一个坐标的转换的操作。设定一个值即当前点的裁剪的世界坐标高度,由外面的脚本传进来。然后每个片元高度转成世...原创 2019-08-06 17:28:50 · 6633 阅读 · 10 评论 -
文字Shader实现
最近一直在做课件,一些化学相关的课件里面有很多化学式的微观反应,于是我开发了一个小插件,输入化学式,即可生成微对应的元子,并有正确的键值对连接。效果大概是下面的子,展示的是Fe2(SO4)3…这个化合物。插件还可以支持两重化合物中变换的过程,比如输入NaOH+HCl=NaCl+H2O…即可生成等号前化合物,变换到等号后化合物的动画过程与重新连键的过程…好啦,今天要讲的不是这个组件,而是要讲讲这...原创 2019-06-13 20:13:43 · 1788 阅读 · 1 评论 -
超简单Shader 实现模糊效果
今天分享一个超简单实现模糊效果的方法,先上图:核心代码就这句:注意要在3.0以上的版本才能使用在采样后做偏移采样再叠加,效果与下面的代码类似:float4 frag(v2f o):SV_TARGET{ fixed4 color = tex2D(_MainTex,o.uv);//,float2(_Scale,_Scale),float2(_Scale,_Scale) floa...原创 2019-06-01 19:17:11 · 3710 阅读 · 0 评论 -
Shader波动效果
自从学了Shader以后,看到什么效果都会在脑海里,偷偷的想着这个效果用Shader怎么实现呢?哈哈真是服了自己…为什么写了那么多各种复杂的内容又跑回来写这些基础的内容呢?我发现Shader的是一个很神奇的东西,差一个数值,数值的大小效果的千变万化的,很多有趣的效果的实现并不需要太多的代码量…比如下面这个。说下一个很简单实现的波动效果吧,先上图。原图:先说最右边的图那的,先是把图片...原创 2019-05-28 20:11:28 · 934 阅读 · 0 评论 -
Unity Shader实现3D饼图
怀这一些堕落和伤感写下这篇文章,今天写想用Shader写一个3D饼图效果,居然没有想到别的更高效的写法,功能实现了更效率不高。希望看到此文章有更好实现方式的请私信我,谢谢。只需要哒到如下效果即可。下面是原代码:Shader "Custom/PieGraph" { Properties{ _element1("element%1",Range(0.00,100.00))=0 _el...原创 2019-05-27 19:11:29 · 1165 阅读 · 0 评论 -
平面漩涡Shader
最近进入了一家“养老”公司,公司节奏比之前慢了非常多,好处是心情比较轻松,做到哪算哪,但是没有高手在身边了,就没有什么学习的机会了,学习只有靠自觉了。下面是一个平面漩涡效果:其实说白了就是一个广告牌效果加上一个图片的矩阵旋转。网上随便找了一长渲染的图片:然后参数是这样子的:修改的部分有两处:一个是对黑色背景的处理:fixed4 c = tex2D (_MainTex, uv);...原创 2019-05-10 20:52:37 · 921 阅读 · 0 评论 -
矩阵的几何意义
矩阵的几何意义:变换是指把一些数据如点,方向失量颜色等通过某些方式转换的过程。线性变换f(x)+f(y)=f(x+y)kf(x)=f(kx)上面的例子有点抽象,如缩放就是一种线性变换,如f(x)=2x可以表示一个大小为2的统一缩放,即经过失量x的模是原来的两倍。同样旋转也是一种线性变换。还包括错切、镜像、正交投影等…仅有线性变换不够的。我们来考虑平移变换例如f(x)=x+(1,2,3)...原创 2019-03-19 18:47:10 · 13319 阅读 · 1 评论 -
什么是矩阵
什么是矩阵矩阵,在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。长这个样子:失量也可以转为矩阵,可以看成nX1的行矩阵,或1Xn的矩阵。矩阵列的运行比较复杂,下面就来一一探讨。矩阵和标量的乘法直接标量与各个分量相乘即可,不多废话了…同时kM=Mk即,谁在哪边都一样。矩阵与矩阵的乘法...原创 2019-03-19 16:55:24 · 39217 阅读 · 2 评论 -
空间变换矩阵
位置是怎么用矩阵是怎么变换到另一个坐标的?想要定义一个空间,必须知道三个坐标轴的方向,而这些数值是相对于另一个坐标空间的。我们需要知道所有的空间都是相对的,即每一个坐标空间都是另一个坐标空间的子空间,反过来也可以说是父空间。当给定一个点(a,b,c)时我们是怎么知道他的位置呢?1.从坐标空间原点开始2.向x轴方向移动a个单位3.向y轴方向移动b个单位4.向z轴方向 移动c个单位比如,...原创 2019-03-19 22:59:52 · 5765 阅读 · 0 评论 -
Shader学习的基础知识( 三十五)表面着色器下
两个结构体表面着色器支持最多自定义4种关键函数:表面着色器:各种表面性制如反射率、法线等光照函数:定义使用的光照模型顶点修改函数:修改或传弟顶点属性颜色修改函数:对最终的颜色进行修改一个表面着色器需要两个结构体:表面函数输入结构体Input 和 存储表面属性的结构休SurfaceOutput(或SurfaceOutputStandard和SurfaceOutputStandardSp...原创 2019-03-18 12:06:53 · 460 阅读 · 0 评论 -
Shader学习的基础知识( 三十四)表面着色器上
表面着色器是什么表面着色器实际上是在顶点/片元着色器之上又添加了一个层抽象。表面着色器让我们关注的细节就更少了,自由度也就更底。但是好处里代码量也是少得惊人。而且性能上也不如顶点/片元着色器。如果你需要和各种光打交到,尤其是想要使用全局光源,你可能更喜欢表面着色器,但你要小心它的性能。如果光源少,那可以使用顶点片元着色器。如果有很多自定义的效果,则使用顶点/片元着色器一个表面着色器的...原创 2019-03-18 02:55:05 · 377 阅读 · 0 评论 -
Shader学习的基础知识( 三十三)渲染优化具体
减少draw call批处理是为了减少线帧的draw call最常用的技术了。 CPU需要检查哪些光源该物体,绑定Shader并设置它的参数再发给GPU,场景里东西很多的时候就很耗了。处理1000个三角形比处理一个有1000 个三角形物体要大得多,在这种情况下GPU没啥变化,但CPU会跑不动了。使用同一个材质的物体可以一起处理,因为物体顶点会被合并在一起。动态批处理由Unity自动完成...原创 2019-03-18 01:42:49 · 619 阅读 · 0 评论 -
Shader学习的基础知识( 三十二)渲染优化概括
最好的优化即是不要优化,从一开始就应该把优化当成是游戏设计中的一部分。移动平台特点和PC相比,移动平台上的GPU结构有很大的不同,资源非常有限,因为移动设备上的GPU架构更专注于更小的带宽。由于这些不同,一些游戏往往需要针对不同的芯片发布不同的版本。影响性的因素影响渲染效率的,主要有两个大课题CPU和GPU。GPU主要负责帧率,而GPU主要负责分辨率。据此,造成瓶颈的主要有几个方面:C...原创 2019-03-18 00:08:00 · 318 阅读 · 0 评论 -
Shader学习的基础知识( 三十一)水波效果
水波效果也可以使用噪声纹理来实现,通过作为高度图并不段改变法线方向。我们会使用时间变量来对噪声纹理进行采样,再进行反射+折射计算。我们使用一张立方体为环境纹理,并在列线空间下对像素坐标进行偏移,再使用该坐标进行屏幕采样,从而模拟折射效果。水波是由一张噪声纹理生成的,随着时间不断变化,再用菲涅耳系数进行混合...原创 2019-03-17 00:35:36 · 3659 阅读 · 0 评论