
shader基础知识点
js0907
这个作者很懒,什么都没留下…
展开
-
SubstancePainter关联unity
SubstancePainter 和Unity, 关于在sp中生成 pbr所需贴图流程有助于生动理解PBR原创 2022-08-20 14:47:43 · 1257 阅读 · 1 评论 -
ComputeShder和DrawMeshInstancedIndirect相关小注
在做草海剔除的时候,需要用到computeShader,此处先记录一下,后面整个分析使用DrawInstanceIndirect(1)ComputeBuffer 的初始化:var size = sizeof(float) * 10上图中的 IndirectArguments的buffer类型, 在使用Graphics.DrawMeshInstancedIndirect这个接口时 必须声明为ComputeBufferType.IndirectArguments(2)Dispatch先numthre原创 2022-01-11 21:02:56 · 2166 阅读 · 1 评论 -
渲染方程解析应用(四)蒙特卡洛积分解“Path Tracing”
(1)光线追踪:Path Tracing 也是率属于 Ray Tracing的一种路径追踪 也是光线追踪的一种表现方式(这节课88分钟: 我用了两天才完整的整理写完这篇日志)前置知识(1)前置知识2前置知识3(2)用蒙特卡洛积分解渲染方程: 求直接光照(4)蒙特卡洛解渲染方程:求间接光至此 积分的问题已经解决!!!上面还有递归的问题: 递归没有停下!!!!!(5)解决递归问题:弹射次数的数学期望: = p / (1-p) 次(6)转换原创 2021-10-06 20:00:18 · 460 阅读 · 0 评论 -
蒙特卡洛积分(三)
(1)概率和期望(2)概率密度函数和期望(PDF)(3)蒙特卡洛积分:原创 2021-10-06 11:50:17 · 199 阅读 · 0 评论 -
BRDF解释(二)渲染方程
本质: 光线和物体是如何作用的(1)单位面积接收到某个方向上立体角的光照 转换成power,吸收之后再向某个方向辐射, 形成Radiance(2)已知入射光和受光点 求反射光分布的函数 反之亦然 所以叫双向分布函数(3)已知反射光方向和受光点 求入射光的分布 : 是不是双向的??!!!!!哈哈哈出射的任一方向上的 Radiance / 入射点上的 Irradiance 就是 BRDF 。。。( 把表面吸收到的能量反射到任一方向的的分布情况 )原创 2021-10-05 14:14:17 · 405 阅读 · 0 评论 -
BRDF前置条件(一)辐射度量学: 主要事三个名词的解释和联系
光的能量: 流明(1)Radiant intensity原创 2021-09-30 16:47:39 · 235 阅读 · 0 评论 -
图形学中走样(Aliasing)和反走样(Antialiasing)
Artficts共有三种表现形式:1.锯齿:2.摩尔纹:例如 相机拍摄电脑显示器(像素的 奇数行和奇数列去掉,结果就产生摩尔纹)3.车轮效应: 高速转动的车轮根本原因: 信号变化太快,采样的速度跟不上信号的速度!!!!!!!!!!!!!!!!!!!!(1)走样:用像素的中心 采样三角形: 有些像素中心点在三角形内 有些像素的中心点在三角形外走样: 像素的中心点 不在三角形内 则被舍弃,所以产生了走样(1)反走样: 先模糊,后采样:离模糊近 显示白色; 离模糊远,显示原色为什么: 采样速度原创 2021-09-07 19:21:57 · 2831 阅读 · 4 评论 -
三平面映射TriPlanar
shader效果中存在“缝隙”:(最后的代码中已经注释的很清楚了)出现缝隙的原因:因为UV坐标是不连续的,所以会有缝隙。。。(法线的T,B,是根据U和V生成的,所以用法线也会有裂缝,这里的法线和下面用作mask的用法是不一样的)三平面映射的效果:图中的边界是有过渡和缓冲,如下图基本展示:世界空间XY平面效果:世界空间XZ展示:存在的问题(不可避免的问题):!!!!!!!!!宏观思路 :(1)(2)法线遮罩效果 和 思路:(3)换成noise图看不出缝隙!!!!Shade原创 2021-07-03 22:23:52 · 2826 阅读 · 5 评论 -
shader利用UV坐标裁切透明过渡效果
翅膀效果分析:(1)半透效果, 翅膀的边缘能够裁剪(2)流动效果,UV流动(3)从翅膀根部 到 翅膀梢 流动效果 从稳 到 凌乱 越来越不规则主要原理: 利用UV坐标轴向上的 值的变化 。。 进行裁切 或者透明度过渡代码很简单 , 但是思路爽歪歪,所以此处标记一下。。。。代码如下:Shader "Unlit/Nebular_code"{ Properties { _MainTex ("MainTex", 2D) = "white" {} _FlowSpeed ("F..原创 2021-06-30 21:44:55 · 574 阅读 · 0 评论 -
VAF顶点动画和FlowMap 的原理介绍
VAF顶点动画: 将动画信息存储在图片中()图片大小:2687 * 100:顶点数量 :2687动画总帧数:100在动画播放的时候:每一帧读取一行信息(2687个顶点的偏移值)。原创 2021-06-05 17:57:02 · 438 阅读 · 2 评论 -
shader中的if和else的耗费的深层解析:
(一)if 和 else 条件判断用来实现代码按条件跳转执行:(1)正常的if else 语句使用 bool 来进行判定操作,该bool 值可以通过使用逻辑和比较运算符来生成。。(2)但是 : 向量运算的bool 结果不能直接使用,因为这些运算结果是一个向量值,而不是bool值(二)基于“ 执行代码后才产生的值” 去进行判定的条件分支,当编译成汇编指令后,用两种方法中的一种来表达:(1)预侦测编译器会对 if-else 条件表达式两部分都执行并求值然后执行一个比较指令,去选择使用 if-原创 2021-06-03 20:40:50 · 2997 阅读 · 0 评论 -
Shader燃烧溶解效果(一)
(1)简单燃烧溶解效果:这其中的效果并不复杂,主要是算出 v值“0, 1”,然后 color * v值主要还是计算思路吧:Shader "Unlit/Dissolve_Easy_My"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Gradient("Gradient",2D) = "white" {} _ChangeAmount("ChangeAmount",Range(原创 2021-05-15 10:59:36 · 1069 阅读 · 0 评论 -
shader中冲击波效果
(一)先看效果图:由于我用的sin函数,所以 冲击波扩散出去 还会收缩回来(请忽略收缩回来的效果)1.先修改设置:(1)由于使用URP,不支持GrabPass,所以直接修改配置,使用_CameraOpaqueTexture来代替。(2)基本原理:对屏幕坐标进行扰动:第一:只对圆环上的坐标扰动(白色部分),黑色部分不做变动。第二:圆环从内向外扩展运动。第三: 最主要的就是 step函数,形成圆圈 -》 形成圆环。Shader "Unlit/Ring"{ Properties原创 2021-05-06 20:33:33 · 1064 阅读 · 0 评论 -
Shader视差贴图
视差贴图相关理论介绍粗略的视差效果:本文就不陈述视差贴图相关描述了, 此处只记录说明一下两点(1) 在求uv的偏移量的时候 :在切线空间下的 viewDir.xy / viewDir.z , 这里为什么要除以 .z(2)以及直接使用上面链接中的“改进3”的 RayMarching (光线步进)实现精确的视差效果(一)viewDir.xy / viewDir.z 的解释:(1)求出BC: 最大的UV偏移值AE, AG: 归一化后的 viewDirAC的高度为:1相似三角形:原创 2021-04-30 21:54:41 · 1275 阅读 · 2 评论 -
shader血条UI
Shader "Unlit/Shader_Test"{ Properties { [hideininspector]_MainTex ("Texture", 2D) = "white" {} _Process("Process",Range(0,1)) = 0.5 _ZeroColor(" zeroColor",Color) = (0,1,0,1) _OneColor("OneColor",Color) = (1,0,1,..原创 2021-04-29 19:10:37 · 230 阅读 · 0 评论 -
unity中噪声函数和应用
1.白噪声WhiteNoise主要是用到 frac函数,此函数主要是 返回小数部分 // 白噪声 float whiteNoise(float2 uv,int seed) { float r = frac(sin(dot(uv,float2(seed + 12.9898,seed + 78.233)))*43758.5453); return r;原创 2020-12-02 08:20:26 · 2142 阅读 · 0 评论 -
unity-shader基础知识点:透明度混合AlphaBlend(Transparent)
透明度混合(半透),渲染顺序就非常重要了!!!!不透明物体的渲染顺序不重要。。。。透明物体从后往前渲染,关闭深度写入(Zwrite off)Queue = Transparent :在 Geomerty 和 AlphaTest 物体渲染后,再按照“从后往前”的顺序进行渲染。Blend命令,透明度混合才能生效!!!!在这里插入图片描述ZWrite可以取的值为:On/Off,默认值为On,代表是否要将像素的深度写入深度缓存中(同时还要看ZTest是否通过)。ZTest可以取的值为:Greater/原创 2020-08-05 23:14:14 · 1710 阅读 · 0 评论 -
unity-shader卡通渲染:描边,XRay透视,边缘外发光,卡通着色,色阶,离散化
先看效果,再上代码,最后知识点解释:{–Xray基本原理就是:ZTest Great产生的作用描边:法线外拓(把顶点沿着法线方向向外挤)卡通着色颜色处理:产生色阶,颜色的离散化轮廓外发光:确定外轮廓线在哪,再发光–}卡通着色(1)效果:描边:边缘光:Xray透视:// float lerp(float a, float b, float w) {// return a...原创 2020-05-03 02:07:26 · 1482 阅读 · 0 评论 -
unity-shader溶解效果--最高效的实现方案!!!!!!
最高效! 最高效!! 最高效!!!!的实现:从上到下逐渐消融的效果:话不多说:上代码Shader "Unlit/dissolve"{ Properties { _MainTex ("Texture", 2D) = "white" {} _DissolveTex ("DissolveTex", 2D) = "white" {} _...原创 2020-05-01 01:10:16 · 1912 阅读 · 3 评论 -
unity-shader描边
shader描边效果的原理:两个pass,第一个pass渲染背面(将顶点沿着 法线方向外拓),第二个pass渲染正面Cull 指令:(详细命令介绍参考:https://blog.youkuaiyun.com/a133900029/article/details/80593513)原图:描边后:顶点外拓可以是 模型空间,世界空间,视角空间,这里在模型空间中进行法线外拓Shader "Unlit/O...原创 2020-05-02 09:50:07 · 862 阅读 · 2 评论 -
unity Shader前向渲染
unity Shader前向渲染记录(1)前向渲染的原理:两个Pass,一个BasePass主要负责:一个AddPass主要负责:(2)对光源处理方式分类:unity在渲染每一个物体之前都会根据光源的强度,颜色,距离物体的远近以及光源对该物体的影响程度对场景中的所有光源进行一个重要度排序,然后根据排序的结果以及quality settings等将会决定这些光源的处理方式;qualit...原创 2020-04-25 22:52:24 · 497 阅读 · 0 评论 -
unity_Shader延迟渲染
自己写了个延迟渲染的GBuffer,在网上搜索了一圈,想看看延迟渲染Deferred到底是咋回事,不知道是我不会查找,还是大佬们觉得延迟渲染太简单,大家都在讲原理,讲优点,讲缺点,可我就是想看看代码到底是咋回事,咋就这么难??!!!不多说了,根据自己的理解,加上shader代码,终于是加深了对延迟渲染的理解:(1)延迟渲染原理:延迟渲染的实质,是先不要做迭代三角形,不做光照计算,而是先找出来你...原创 2020-04-28 00:02:16 · 1341 阅读 · 2 评论 -
unity-shader stencil(模板测试)的基本应用
先看效果,后上代码,最后解释:(1)使用stencil,控制球体显示在墙体Cube上:scene中位置排序:相机->墙体Cube->球体->背景BG(2)在game中的效果:球体->墙体Cube->背景BGShader "Unlit/stencil_BG01"{ Properties { _MainTex ("Texture"...原创 2020-05-03 22:45:45 · 1339 阅读 · 0 评论 -
unity-shader stencil模板测试简单应用蒙皮遮罩Mask
未添加shader前:添加shader后:可以看到在mask外的部分全部被“裁剪”了对代码中的命令不清楚可以查看上一篇中的介绍:Shader "Unlit/stencil_maskAdd"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { ...原创 2020-05-03 23:21:37 · 1042 阅读 · 0 评论 -
unity-光照探针简单应用(Light Probe Group)
(1)讲光照探针前,首先需要清楚LightMap,静态物体的灯光烘焙(如果对此不了解,请查看前几篇关于烘焙GI的介绍操作),因为光照探针是对lightMap烘焙的一个补充。(2)光照探针,是对lightMap的补充,我们在烘焙的时候,动态物体收到的光照影响是不能直接烘焙进bakedLightMap,用实时光照就会产生强大的额外开销。而反射探针能够将动态物体的实时光照烘焙进GI中,这样就可以取代实时光照而减少渲染的开销:(3)下面开始操作步骤:1.搭建场景:一个Plane,俩sphere(名字为:sph原创 2020-05-22 16:12:06 · 3658 阅读 · 0 评论 -
unity shader基础知识点:透明度测试(AlphaTest)
基础知识点,感觉没啥可讲的:透明度测试,要么不透,要么全透明(Transparent/Cutout)Shader "Unlit/AlphaTest"{ Properties { _MainTex("MainTex", 2D) = "white" {} _Diffuse("Diffuse", Color) = (1,1,1,1) _Cutoff("Alpha Cutoff", Range(0,1)) = 0.5 } SubShader { Tags { "Queue原创 2020-08-05 22:42:47 · 730 阅读 · 0 评论