Built-in
shader学习笔记
在路上看风景
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7.1 阴影贴图
【代码】7.1 阴影贴图。原创 2025-11-02 12:14:55 · 194 阅读 · 0 评论 -
6.1 Static Lighting
【代码】6.1 Static Lighting。原创 2025-10-25 13:56:00 · 171 阅读 · 0 评论 -
5.2 天空盒和反射探针
【代码】5.2 天空盒和反射探针。原创 2025-10-12 18:23:59 · 243 阅读 · 0 评论 -
5.1 反射
【代码】5.1 反射。原创 2025-10-12 17:48:04 · 190 阅读 · 0 评论 -
4.11 球谐光照
1).直接光 vs 间接光直接光和间接光是最基础, 最物理的分类, 指的是光线的物理路径a.直接光: 从光源(如灯泡, 太阳)直接射到物体表面的光, 能量最强, 产生最亮的区域和最清晰的阴影b.间接光: 直接光照射到物体a后, 被a反射出去, 再去照亮物体b的光;它是光的第二次, 第三次....乃至无数次的生命;它负责填充阴影, 传递颜色(比如红墙旁的白球会泛红), 是真实感的灵魂c.关系: 直接光 + 间接光 = 完整的物理光照2).局部光照 vs 全局光照。原创 2025-09-24 22:14:28 · 242 阅读 · 0 评论 -
4.10 顶点光源
逐顶点渲染意味着在顶点着色器中进行光照计算 , 计算得出的颜色随后被插值处理并传递给片元着色器 , 这种方式性能消耗低;Unity将这类光源包含在 base pass中 , 使用该方式时 , Unity会寻找带有VERTEXLIGHT_ON关键词的着色体变体;顶点光照仅适用于点光源 , 定向光和聚光灯无法作为顶点光照使用要使用顶点光照 , 我们必须在基础通道中添加一个多重编译指令;它只需一个关键字另一个选项则是完全不使用关键字 , 为此我们需要使用 _原创 2025-09-22 21:46:28 · 221 阅读 · 0 评论 -
4.11 多个光源
【代码】4.6 多个光源。原创 2025-09-06 19:33:08 · 178 阅读 · 0 评论 -
4.10 变体
比如我们开了一家餐厅, 你有一本万能的菜单(Shader源代码), 上面包含了所有可能的菜式;但是顾客每次来点餐时, 不可能将整本菜单都做一遍, 他们会根据今天有没有优惠(是否启用雾效), 是不是会员(是否启用阴影), 想吃主食还是甜点(使用哪个渲染管线)来勾选一些选项(Shader Keywords)a.万能的菜单(Shader源码)包含了所有可能的代码, 比如做牛排的步骤, 做冰淇淋的步骤, 会员专属摆盘的步骤b.最终给顾客的定制菜单(Shader Variant, 着色器变体)原创 2025-09-09 14:44:27 · 376 阅读 · 0 评论 -
4.9 静态分支, 动态分支和变体
【代码】4.7 静态分支, 动态分支和变体。原创 2025-09-10 21:54:21 · 240 阅读 · 0 评论 -
4.8 伽马空间和线性空间
【代码】4.6 伽马空间和线性空间。原创 2025-09-03 14:11:20 · 258 阅读 · 0 评论 -
4.7 PBR的工作流
【代码】4.7 PBR的工作流。原创 2025-09-26 10:08:24 · 278 阅读 · 1 评论 -
4.6 BRDF
【代码】4.6 BRDF。原创 2025-09-25 18:54:10 · 266 阅读 · 0 评论 -
4.5 PBR
PBR(Physically Based Rendering , 基于物理的渲染) 的工作流分为金属工作流和高光工作流。原创 2025-09-01 21:45:06 · 206 阅读 · 0 评论 -
4.4 光照(4) - 高光反射
【代码】4.4 光照(4) - 高光反射。原创 2025-08-31 17:39:23 · 297 阅读 · 0 评论 -
4.3 光照(3) - 漫反射
【代码】4.3 光照(3) - 漫反射。原创 2025-08-30 12:19:28 · 283 阅读 · 0 评论 -
4.2 前向渲染路径
a . 想象一下画家在画画 , 渲染路径就是画家作画的策略和顺序 : 是先画背景再画人物 , 还是先画亮部再画暗部?不同的策略会影响最终画面的效果和亮度b . 在unity中 , 渲染路径决定了光照是如何被计算并应用到物体上c . unity的渲染路径 - 前向渲染 - 延迟渲染 - 顶点照明渲染。原创 2025-09-19 16:56:56 · 159 阅读 · 0 评论 -
4.1 光照(1) - 法线
【代码】4.1 光照(1) - 法线。原创 2025-08-28 21:07:07 · 260 阅读 · 0 评论 -
3.10 屏幕后处理(10) - 运动模糊
运动模糊效果是一种用于模拟真实世界中物体快速移动产生的模糊现象我们通过历史缓冲区实现运动模糊, 保留之前的渲染结果, 不断把当前的渲染图像叠加到之前的渲染图像中, 从而产生一种运动轨迹的效果a.用一个RenderTexture记录上一次渲染的信息b.然后每一次用新的屏幕图像信息和上一次的图像信息进行混合渲染, 从而产生模糊在使用Graphics.Blit(源纹理, 目标纹理, 材质)方法时, 如果目标纹理中包含内容, 会直接认为目标纹理中的颜色为颜色缓冲区中的颜色;原创 2025-08-28 14:13:03 · 220 阅读 · 0 评论 -
3.9 屏幕后处理(9) - Bloom效果
Bloom效果让画面中较亮的区域扩散到周围的区域中, 造成一种朦胧的效果Bloom的实现原理分为 "提取, 模糊, 合成"a.根据一个阈值提取出图像中较亮的区域, 将它们存储在一张渲染纹理中b.利用高斯模糊对这个渲染纹理进行模糊处理c.最后将该渲染纹理和原图像进行混合(亮度增加)原创 2025-08-25 10:41:26 · 276 阅读 · 0 评论 -
3.7 屏幕后处理(7) - 过滤模式(Filter Mode)
【代码】3.7 屏幕后处理(7) - 过滤模式。原创 2025-08-20 17:45:55 · 198 阅读 · 0 评论 -
3.8 屏幕后处理(8) - 高斯模糊
高斯模糊是利用高斯函数计算出高斯滤波核中每个元素并进行归一化处理后, 再和目标像素颜色通过卷积计算得到最终的结果a.高斯函数计算出高斯滤波核中每个元素这个步骤相当于计算权重值b.归一化处理是避免像素的亮度超过原来像素的亮度。原创 2025-08-19 22:19:16 · 455 阅读 · 0 评论 -
3.6 屏幕后处理(5) - 边缘检测
1).边缘检测是实现瞄边效果的一种方法, 描边效果是"突出图像中的边缘, 使物体的轮廓更加明显"2).边缘检测的原理是计算每个像素的亮度值, 用亮度值结合卷积核进行卷积运算, 得到该像素的梯度值(变化率), 梯度值越大越靠近边界, 越趋近描边颜色, 梯度值越小离边界值越远, 越趋近于原始颜色灰度值 L = 0.2126 * R + 0.7152 * G + 0.0722 * Ba.图像由像素点组成的, 像素亮度值变换剧烈的地方就可以被当作是边缘。原创 2025-08-16 17:56:55 · 402 阅读 · 0 评论 -
3.4 屏幕后处理(4) - 预备知识
屏幕后处理表示渲染完毕整个场景得到屏幕图像后, 对屏幕图像进行额外的处理a.src表示源纹理, 通常是当前屏幕的渲染纹理或是上一步处理后得到的渲染纹理src纹理将会传递给Shader中名为_MainTex的纹理属性b.dest是目标渲染纹理c.mat是使用的材质, 这个材质使用的Shader进行各种屏幕后处理操作d.pass的默认值是-1, 表示将会依次调用Shader内的所有Pass;否则只会调用给定索引的Pass。原创 2025-08-14 15:28:03 · 158 阅读 · 0 评论 -
3.3 屏幕后处理(3) - C#动态修改材质球
【代码】3.3 屏幕后处理(3) - C#动态修改材质球。原创 2025-08-13 15:33:05 · 151 阅读 · 0 评论 -
3.2 屏幕后处理(2) - 骨骼动画和关键帧动画
【代码】3.2 屏幕后处理(2) - 骨骼动画和关键帧动画。原创 2025-08-13 15:15:36 · 141 阅读 · 0 评论 -
3.1 屏幕后处理(1) - 网格, 网格渲染器, 材质, 着色器
网格是顶点数据的集合, 顶点数据包含: 顶点坐标, 法线, 切线, 纹理坐标, 顶点颜色, 骨骼权重, 骨骼索引等;Shader中使用的模型数据就来自于Mesh。原创 2025-08-13 14:54:03 · 236 阅读 · 0 评论 -
2.6 ShaderLab简介 - 语义
【代码】2.6 ShaderLab简介 - 语义。原创 2025-08-11 16:16:58 · 174 阅读 · 0 评论 -
2.5 实用函数
写一下文章列表。原创 2025-11-11 09:18:39 · 166 阅读 · 0 评论 -
2.3 变体和关键字
写一下文章列表。原创 2025-11-11 09:14:54 · 91 阅读 · 0 评论 -
2.1 ShaderLab - 渲染状态
【代码】2.1 ShaderLab - 渲染状态。原创 2025-11-05 21:51:22 · 280 阅读 · 0 评论 -
1.4 纹素和像素
1).纹素 - 纹理的基石a.它是什么: 纹素是纹理图像中最小的基本单位, 你可以把它想象成一张数码图片里的一个像素, 纹理就是由成千上万个纹素组成的网格b.它住在哪: 住在显存里, 是原始数据c.它的工作: 它本身不显示在屏幕上, 它承载的是数据(比如颜色、法线、粗糙度等)d.特点: 它有自己固定的坐标和尺寸, 与屏幕无关关键比喻: 纹素是原材料2).像素 - 屏幕的基石a.它是什么: 像素是屏幕上显示图像的最小发光单位, 你的屏幕就是由几百万甚至上千万个像素组成的网格。原创 2025-11-05 11:34:31 · 160 阅读 · 0 评论 -
1.3 片段和像素
原创 2025-08-21 11:10:22 · 212 阅读 · 0 评论 -
1.2 纹理坐标差异
【代码】1.2 纹理坐标差异。原创 2025-08-09 16:01:51 · 145 阅读 · 0 评论 -
1.1 UV简介
unity shader中,UV坐标用于纹理映射a.UV坐标定义了2D纹理上的点如何映射到3D模型表面b.通常,UV坐标的范围是[0,1],也可以超过这个范围,取决于Wrap Mode的设置, 其中(0, 0)表示纹理左下角,(1, 1)表示右上角。原创 2025-08-09 15:38:02 · 270 阅读 · 0 评论
分享