Unity Shader
ZzEeRO
这个作者很懒,什么都没留下…
展开
-
Unity Shader学习:流体2
Unity Shader学习:流体2参考:https://zhuanlan.zhihu.com/p/340842666c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class ZzcSmoke : MonoBehaviour{ public Material smokeMat; private RenderTexture DivergenceR原创 2021-02-01 15:39:25 · 1135 阅读 · 4 评论 -
Unity Shader学习:流体1
Unity Shader学习:流体1参考:https://zhuanlan.zhihu.com/p/283662524c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class ZzcFluid : MonoBehaviour{ public Texture2D tex; //[Range(0f,10f)] //public float原创 2021-01-29 17:57:44 · 866 阅读 · 0 评论 -
Unity Shader学习:Gerstner波
Unity Shader学习:Gerstner波参考:https://www.jianshu.com/p/2b0e3f7f15b4?utm_campaign=maleskinehttps://blog.csdn.net/aa20274270/article/details/52122495比较坑的是套用公式得出的法线效果不对,最后看了别人源码改了后才对镜面反射扒来需要调整x轴旋转,可以自行修改代码shader部分:Shader "Zzc/Gerstna"{ Properties {原创 2020-12-28 17:20:12 · 908 阅读 · 0 评论 -
Unity Shader学习:球谐光照
Unity Shader学习:球谐光照烘培/采样 与 还原shader部分:Shader "Unlit/SHTest"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag原创 2020-12-21 18:26:51 · 1007 阅读 · 2 评论 -
Unity Shader学习:CPU/GPU boid
Unity Shader学习:CPU/GPU boid参考:https://github.com/chenjd/Unity-Boids-Behavior-on-GPGPUhttps://www.youtube.com/watch?v=bqtqltqcQhwCPU:加入了射线碰撞using System.Collections;using System.Collections.Generic;using UnityEngine;public class CPUBoid : MonoBehav原创 2020-12-15 15:58:36 · 382 阅读 · 0 评论 -
Unity Shader学习:BRDF+IBL
Unity Shader学习:BRDF+IBLhttps://www.cnblogs.com/timlly/p/10631718.html?from=timeline&isappinstalled=0#%E8%BE%90%E5%B0%84%E5%BC%BA%E5%BA%A6radiant-intensityShader "Zzc/BRDF"{ Properties { _MainTex ("Texture", 2D) = "white" {} _NormalTex("Nor原创 2020-12-09 17:05:02 · 551 阅读 · 0 评论 -
Unity Shader学习:预积分皮肤
Unity Shader学习:预积分皮肤思路:LUT+GGX+SSS参考:https://zhuanlan.zhihu.com/p/70390192?utm_source=wechat_sessionhttps://www.bilibili.com/video/BV1CD4y127Pvhttps://blog.csdn.net/qq_36107199/article/details/103596547Shader "Zzc/ZzcSkinTest"{ Properties {原创 2020-11-17 17:53:09 · 2623 阅读 · 1 评论 -
Unity Shader学习:曲面细分
Unity Shader学习:曲面细分vf shader的基于视距的曲面细分参考:https://catlikecoding.com/unity/tutorials/advanced-rendering/tessellation/https://blog.csdn.net/liu_if_else/article/details/75039895shader部分:Shader "Zzc/TessellationTest"{ Properties { _MainTex("Texture"原创 2020-09-02 16:53:14 · 1503 阅读 · 0 评论 -
Unity Shader学习:故障(Glitch Art)
Unity Shader学习:故障(Glitch Art)原文链接:https://zhuanlan.zhihu.com/p/148256756c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class GlitchArt : MonoBehaviour { public Material mat; private void OnRenderI原创 2020-08-17 17:38:09 · 1611 阅读 · 2 评论 -
Unity Shader学习:动态模糊(shutter angle方式)
Unity Shader学习:动态模糊动态模糊一般有帧混合和motion vector两种,这里主要介绍motion vector的方法。Keijiro源码:https://github.com/keijiro/KinoMotion当物体快速旋转或者运动时:c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;[ImageEffectAllowedInSceneView]pub原创 2020-08-13 11:15:49 · 2478 阅读 · 0 评论 -
Unity Shader学习:卡通瓶纸
Unity Shader学习:卡通瓶纸关于切面填充的做法很巧妙,如果液体需要透明理论上可以用模板测试来做。原文链接:http://walkingfat.com/liquid-bottle-%E6%B6%B2%E4%BD%93%E7%93%B6%E5%88%B6%E4%BD%9C/c#:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Wobble : MonoBe原创 2020-07-24 18:05:15 · 478 阅读 · 1 评论 -
Unity Shader学习:体积光/体积阴影
Unity Shader学习:体积光/体积阴影在前向渲染下实现平行光的体积光影效果,需要全屏深度图,延迟渲染会更划算。思路:通过ray marching的步进点位置计算该点是否在阴影中,采样阴影贴图,通过dither+blur优化性能,叠加原图和光影图。步进策略直接采用等距,有其他策略性能表现也会更好,阴影级联 (Shadow Cascade)选择了无,注意如果开启了多个的话采样阴影算法需要调...原创 2020-01-22 18:18:20 · 1831 阅读 · 1 评论 -
Unity Shader学习:SSR屏幕空间反射
Unity Shader学习:SSR屏幕空间反射本文在前向渲染模式下实现,延迟渲染更适合SSR,这里只简单的实现下,未作更深入的优化。思路:沿视线和法线的反射向量步进光线,判断打到物体(这里用的是深度比较),采样这个点物体的颜色所谓反射的颜色,使用dither进行了优化和模糊。原文:https://blog.csdn.net/puppet_master/article/details/808...原创 2020-01-10 10:46:12 · 5752 阅读 · 0 评论 -
Unity Shader学习:SSAO屏幕环境光遮蔽
Unity Shader学习:SSAO屏幕环境光遮蔽主要思路:1.随机采样像素法线半球周围的像素,平均对比与该像素深度是否处在暗处。2.双边滤波去噪点。3.后期AO图与原图混合。原文链接:https://blog.csdn.net/puppet_master/article/details/82929708无AO有AOAO图c#部分:using System.Collectio...原创 2020-01-02 16:31:23 · 2589 阅读 · 5 评论 -
Unity Shader学习:SSS次表面散射
Unity Shader学习:SSS次表面散射原文章地址:http://walkingfat.com/simple-subsurface-scatterting-for-mobile-%EF%BC%88%E4%B8%80%EF%BC%89%E9%80%9A%E9%80%8F%E6%9D%90%E8%B4%A8%E7%9A%84%E6%AC%A1%E8%A1%A8%E9%9D%A2%E6%9...原创 2019-12-18 14:03:06 · 6960 阅读 · 0 评论 -
Unity Shader学习:噪声图、GrabPass
Unity Shader学习:噪声图、GrabPass关于噪声图和GrabPass还是比较简单的,详细原理可以看puppet_Master大神原文,这里简单的实现联系下。shader部分:Shader "Custom/GrabPassTest" { Properties{ _NoiseTex("NoiseTex",2D)="white"{} //扭曲偏移系数 _Di...原创 2018-12-28 16:07:34 · 1200 阅读 · 0 评论 -
Unity Shader学习:法线贴图以及blinn-phong高光穿透的坑
Unity Shader学习:法线贴图以及blinn-phong高光穿透的坑分别实现了切线空间下和世界空间下的法线贴图,切线空间相比运算量要小些。发现使用blinn-phong高光时在背光面会有穿透的现象,查阅后得知可以用NdotL判断当处于背面时将高光*0,然后通过smoothstep过度。高光穿透现象:优化后的blinn-phong:法线贴图:未使用法线贴图:切线空间实现:...原创 2019-03-26 22:51:54 · 1038 阅读 · 2 评论 -
Unity Shader学习:相交算法实现简易能量盾
Unity Shader学习:相交算法实现简易防能量盾主要思路:对比物体和场景深度图在观察空间下的深度差值,深度差越小表示相交,颜色越深,在加上边缘光勾出轮廓。shader部分:Shader "Unlit/DepthOutline"{ Properties{ _MainTex("MainTex",2D) = "white"{} _RimFactor("RimFactor",Ra...原创 2019-04-14 23:57:25 · 1584 阅读 · 0 评论 -
Unity Shader学习:皮毛渲染
Unity Shader学习:皮毛渲染主要思路:将顶点延法线挤出,一层一层pass往外叠加形成毛发效果。原文链接:https://blog.csdn.net/qq_24153371/article/details/81742337噪声图:cginc部分:#include "Lighting.cginc"#include "UnityCG.cginc"#include "AutoL...原创 2019-05-14 18:24:27 · 3432 阅读 · 5 评论 -
Unity Shader学习:ShaderToy变换云
Unity Shader学习:ShaderToy变换云算法来自:https://www.shadertoy.com/view/3l23Rh在此基础上将游戏物件与Ray Marching通过深度做了融合shader部分:Shader "Unlit/ProteanClouds"{ Properties { _MainTex ("Texture", 2D) = "white" {}...原创 2019-06-05 11:09:55 · 1906 阅读 · 12 评论 -
Unity Shader学习:ShaderToy黑洞
Unity Shader学习:ShaderToy黑洞ShaderToy地址:https://www.shadertoy.com/view/llSGRGc#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class MousePosition : MonoB...原创 2019-05-31 14:17:03 · 1813 阅读 · 0 评论 -
Unity Shader学习:ShaderToy扩散扭曲
Unity Shader学习:ShaderToy扩散扭曲算法来自:https://www.shadertoy.com/view/4dcGW2c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Diffusion : MonoBehavi...原创 2019-08-16 11:08:58 · 1597 阅读 · 2 评论 -
Unity Shader学习:简易PBS实现
Unity Shader学习:简易PBS实现简单根据公式实现了一下基于物理的着色,坑的地方还是有不少,单纯的公式搬过来效果会不正确,这里根据网上资料以及自己调整稍微修改了一下部分计算。左边为实现的效果,右边为Unity2017自带Standardshader部分:Shader "Unlit/BRDF2"{ Properties { _MainTex ("Texture", ...原创 2019-03-22 13:52:28 · 1168 阅读 · 1 评论 -
Unity Shader学习:动态雾
Unity Shader学习:动态雾先将相机近裁面四个角向量传给shader,再通过观察空间下的深度值和相机位置算出像素在世界坐标系的位置,通过世界空间高度值来设定雾的范围和浓度,然后通过噪声和uv偏移实现扰动效果。得到了类似寂静岭或恶灵附身1的效果。c#部分:using System.Collections;using System.Collections.Generic;using ...原创 2019-03-21 10:23:41 · 1915 阅读 · 2 评论 -
Unity Shader学习:玻璃材质
Unity Shader学习:玻璃材质主要是通过反射和折射来达到透明的效果,用菲涅尔来混叠。shader部分:Shader "Unlit/Crystal"{ Properties { _Cube("Skybox",Cube)=""{} //折射角度 _EtaRatio("EtaRatio", Range(0, 1)) = 0 //菲涅尔系数 _FresnelBia...原创 2019-03-15 17:32:45 · 3980 阅读 · 1 评论 -
Unity Shader学习:素描效果
Unity Shader学习:素描效果这是乐乐大佬书里的非真实渲染,其中的算法还是挺有意思的,感兴趣的小伙伴可以试一试。素描效果基本原理:先将物体进行描边画出轮廓,计算物体的漫反射部分,漫反射越暗表明颜色越暗,然后根据漫反射的值来设置采样贴图的权重。采样贴图:shader部分:Shader "Unlit/Sketch"{ Properties { _Color("Colo...原创 2019-01-25 09:33:45 · 2440 阅读 · 1 评论 -
Unity Shader学习:ShaderToy与Unity
Unity Shader学习:ShaderToy与UnityShaderToy是个非常有意思的网站,里面都是些图形学大神反人类的骚操作,这里学乐乐大佬的文章将ShaderToy的代码和Unity的shader代码做个移植实现。本案例ShaderToy地址(打开要加载一会儿):https://www.shadertoy.com/view/WsfGRXUnity Shader部分:Shade...原创 2019-01-08 16:16:11 · 2339 阅读 · 0 评论 -
Unity Shader学习:PBS和BRDF(基于物理着色和双向反射分布函数)
Unity Shader学习:PBS和BRDF(基于物理着色和双向反射分布函数)PBS和BRDF涉及到关于数学光学和物理方面的知识比较多,公式也有好几套,这里先初步的了解了一下,查阅网上的资料实现了个和Unity自带Standard差不多效果的,还没有添加环境映射。其中的公式和原理还是比较复杂的不太看得懂,先拿来用着吧。shader部分:Shader "Custom/PBSTest" { ...原创 2019-01-14 10:11:03 · 927 阅读 · 0 评论 -
Unity Shader学习:Projector投影仪
Unity Shader学习:Projector投影仪投影仪不太常用,再看大佬关于贴花的文章时看有用到,就实现了一下。一般贴花或者投影效果都能用,实现不一定最完美,有些方法可能会有些费,有兴趣的话可以用用看。需要在游戏物体上添加Projector组件,再把对应的Material赋值过去。shader部分:Shader "Custom/ProjectorDecal" { Propertie...原创 2019-01-07 17:54:18 · 5760 阅读 · 1 评论 -
Unity Shader学习:SSAA超采样抗锯齿
Unity Shader学习:SSAA超采样抗锯齿抗锯齿Shader网上看了下没看到比较好的直接能用的,只能自己搜搜随便撸了一个,实现不一定特别好,有需要的话可以用用看。SSAA超采样抗锯齿主要思路:利用Sobel算子做卷积算出哪些像素处在颜色变化的边缘,再使用周边采样算法进行插值模糊。C#部分://屏幕后处理基类using UnityEngine;using System.Colle...原创 2019-01-04 15:02:26 · 6311 阅读 · 3 评论 -
Unity Shader学习:收缩、螺旋
Unity Shader学习:收缩、螺旋这个效果老酷了,主要数学知识稍微涉及到点,详细原理可以看puppet_master的原文,大致实现了下,有需要的朋友可以看看。扭曲效果基本原理:根据数学公式改变uv偏移,再叠加噪声偏移模糊场景。效果图:C#部分://屏幕后处理基类using UnityEngine;using System.Collections;//非运行时也触发效...原创 2018-12-27 16:57:43 · 1468 阅读 · 1 评论 -
Unity Shader学习:水波纹效果
Unity Shader学习:水波纹效果依旧是借鉴(抄袭)puppet_master大神的实现,详细理论可以看作者的原文,这里稍微魔改了一下,让玩家可以同时触发多个水波纹效果。水波纹效果主要思路:获取鼠标点到uv点的向量作为水波纹扩散的方向和大小,在sin函数中输入向量的长度模拟出起伏的值(实际就是uv采样距离鼠标点多少的偏移值)。再增加一个能量削弱的值就能有水波纹渐渐消失的效果。最后采用叠加...原创 2018-12-24 12:55:26 · 4467 阅读 · 4 评论 -
Unity Shader学习:RimLight边缘光
Unity Shader学习:RimLight边缘光依旧是模仿实现,这次的边缘光比较简单,也稍微简化了一下计算的方法,区别几乎不大,大家可以选择合适的使用。RimLight边缘光主要思路:法线和视角向量的点积越小,证明两向量夹角越大,说明在边缘处,如果夹角小,则说明是正对相机,所以没有边缘发光。shader代码:(在半兰伯特漫反射上增加边缘光)//边缘光shaderShader "Cus...原创 2018-12-24 15:32:22 · 1374 阅读 · 0 评论 -
Unity Shader学习:2D3D物体描边
Unity Shader学习:2D3D物体描边参考了下法线挤出的方法感觉对于法线夹角过大的物体来说效果太差,后处理的方法又太繁琐,在网上看到了顶点挤出的方法,和大家分享一下。UI描边效果找不到特别好的,仿照了Unity自带的Outline组建,其实方法挺差的而且估计挺费性能,基本效果还是能将就着用用。描边基本原理:3D物体沿顶点拉升扩大图像,渲染成纯色的,然后把原图像叠上去。2D物体复制多个相...原创 2018-12-26 15:45:49 · 1162 阅读 · 0 评论 -
Unity Shader学习:油画效果
Unity Shader学习:油画效果油画效果在学习浅墨大神的文章时看到的比较有趣,但是原文中也没详细的算法介绍如何实现,这里就先直接拿来用吧,UI和屏幕后处理都可以用,算法也看的不是很明白,好像是ShaderToy上老外搞得。shader部分:Shader "Custom/OilPaintEffect" { Properties{ _MainTex("MainTex",2D)="...原创 2019-01-15 09:30:38 · 2811 阅读 · 3 评论 -
Unity Shader学习:Dissolve消融效果
Unity Shader学习:Dissolve消融效果消融效果在游戏里非常常用,这里简单的实现下,代码里用到了if分支在shader里可能会费一点,如果想直接用puppet_master大佬版本的话可以自己改一下,主要if分支比较好理解,大佬的写法比较绕但是没用到分支,性能可能更好。消融效果基本原理:利用噪声图的随机使主贴图在相应的位置逐渐剔除噪声颜色值小于一定阈值的像素,再在更靠内(噪声颜色...原创 2019-01-09 16:34:27 · 2175 阅读 · 2 评论 -
Unity Shader学习:Geometry Shader(几何着色器)
Unity Shader学习:Geometry Shader(几何着色器)用几何着色器可以操作顶点和三角来达到一些效果,下面是粒子和毛发的效果。shader部分1:Shader "Unlit/GeometryTest"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Length("Length",float) = 1...原创 2019-03-15 17:27:32 · 4303 阅读 · 0 评论 -
Unity Shader学习:GPU Instance
Unity Shader学习:GPU Instance稍微了解下关于gpu instance渲染优化的知识,以下是同屏6400个不同贴图的方块,用柏林噪声改变高度,加了阴影和漫反射。csharp部分:using System.Collections;using System.Collections.Generic;using UnityEngine;public class P...原创 2019-02-19 17:49:05 · 4690 阅读 · 3 评论 -
Unity Shader学习:噪声noise
Unity Shader学习:噪声noiseperlin,value,simplex噪声的实现,详细原理可以看乐乐大佬博客,还是较为复杂的,这里直接给出现成代码和效果。shader部分:Shader "Custom/NoiseTest" { Properties{ _MainTex("MainTex",2D) = "white"{} } SubShader{原创 2019-02-13 17:04:02 · 8500 阅读 · 1 评论 -
Unity Shader学习:RayMarching2D云和海洋
Unity Shader学习:RayMarching2D云和海洋根据 JiepengTan的教程魔改了下,代码中有些可以合并的地方没有处理,其中一些数学的运算和光照原理还是比较有难度的,等以后再深入研究。采样的噪声图:c#部分:using System.Collections;using System.Collections.Generic;using UnityEngine;...原创 2019-02-28 13:14:17 · 1472 阅读 · 0 评论