《Unity Shader 入门精要》总结04
《Unity Shader 入门精要》学习总结04 透明渲染 需要在实时渲染中实现透明效果,通常会在渲染模型时控制透明通道,并开启透明混合,使其与之前的渲染结果进行混合,而不是直接覆盖。 在 Unity 中实现透明效果,第一种是透明度测试(Alpha Test),还有一种是透明度混合(Alpha Blending)。 透明度测试:判断片元透明度是否满足条件,若是不满足,直接舍弃;满足则使用不透明物体的处理方式,不需要关闭深度写入,是一种开销小的方式。抖动透明就是基于透明度测试实现的。 透明度混合:真正的半透明效果,开启后会使用当前片元的透明度作为混合因子,与颜色缓冲中的颜色进行混合,得到新颜色。在使用透明度混合时,我们需要关闭深度写入,也就是说,对于透明度混合渲染来说,深度数据是只读的。此外我们还需要小心处理渲染顺序。 渲染顺序 渲染顺序在透明度混合渲染中是一个大难点。因为透明度混合渲染需要关闭深度写入,还需要正确的顺序进行混合。如果我们没有关闭深度写入,会导致特定渲染顺序下,后面的片元被剔除。但是,在关闭深度写入后,我们需要格外注意渲染顺序。可以看看下面的例子。 前置设...
《Unity Shader 入门精要》总结03
《Unity Shader 入门精要》学习总结03 纹理基础 纹理可以理解为是一个存储着信息的二维数组。我们需要使用纹理映射(texture mapping)来告诉 GPU,需要从哪个数组成员上读取信息。 这个纹理映射坐标便是"UV",纹理上的数组成员被我们称为纹素(texel)。 “纹素"也就是我们所说的图片中的"像素”,但是这里为了方便区分所以叫做"纹素"。 Unity 中的纹理和纹理采样 纹理采样模式 当我们在 Unity 中导入一张纹理资源之后,可以在其 Inspector 面板中调整其导入配置。 其中,有个非常重要的属性便是 Wrap Mode。这个选项指定了当纹理采样坐标超过 [0, 1] 范围时的采样规则。 repeat:重复采样,若是纹理坐标超过 1,其整数部分便会被舍弃,使用小数部分进行采样,纹理将会不断重复。 clamp:在这种模式下,会将大于 1 的纹理坐标分量截取到 1,小于 0 的截取到 0。 新版的 Unity 中可能会提供更多的模式选项。 纹理的最大分辨率 我们可以在 Ins...
《Unity Shader 入门精要》总结02
《Unity Shader 入门精要》学习总结02 光照概念 为了生成一张由光照来照亮的图像,我们需要考虑这三种要素: 光源:光源中会发射出光线 交互:光源会与物体表面进行交互从而改变路径 成像:光线进入相机会成像,产生看到的画面 光源 首先,我们需要一个标准来量化光照强度。通常,在光学中,我们使用辐照度(Irradiance)来量化光线。在图形学中,我们近似的认为,平行光的辐照度为垂直于 l 的单位面积上单位时间内穿过的光线的能量。对于倾斜表面,根据 Lambert 余弦定律,辐照度需乘以光源方向 l 与法线 n 的夹角余弦值 max(0, n·l)。 光线的吸收和散射 光与物体表面进行交互时,会发生两种行为,分别为散射与吸收。 散射:改变光线的方向,不改变光的颜色和密度 吸收:改变光的密度和颜色,不改变方向 而在散射后光又会去往两个方向,分别是折射(透射)与反射。 折射(透射):光散射到物体内部,有些会从内部再次出来,有些被吸收 反射:将光反射到外部 我们在光照模型中使用两个不同的部分计算这两种散射方向,分别为镜反射(Specular)和漫反射(Diffuse...
《Unity Shader 入门精要》总结01
《Unity Shader 入门精要》学习总结01 渲染流水线 渲染流水线可以将各类数据进行计算来得到画面。 渲染流水线分为三个阶段: 应用阶段(Application Stage) → 几何阶段(Geometry Stage) → 光栅化阶段(Rasterizer Stage) 应用阶段的数据计算得到渲染图元,渲染图元输入几何阶段,输出屏幕空间的顶点信息并输入到光栅化阶段。 应用阶段输出的渲染图元进入几何阶段后,首先由顶点着色器(Vertex Shader)进行处理。 几何阶段末尾的图元装配、裁剪,以及光栅化阶段的三角形设置和遍历,属于固定功能流水线,只能进行少量配置。 光栅化阶段后便会开始使用片元着色器(Fragment Shader)为图元进行着色并合成,最后得到我们看到的画面。 应用阶段大部分由 CPU 负责,但是现在也有使用 GPU 生成几何数据传递到流水线中的技术。后续阶段由 GPU 负责。 我们写 shader 主要探讨的阶段便是 GPU 阶段,我们所做的只是从 CPU 端获取数据。 CPU与GPU通讯概述 一般情况下,渲染数据会从硬盘(HDD/SSD)加载到系...
【长期更新】个人总结的vim快捷键手册
个人总结的vim快捷键手册 另外就是在有些系统下vim快捷键会被输入法拦截,这个后面配置好了我也会分享一下我的配置方法。 如果你想从头学习vim,可以查看一下这个项目 vimcdoc的github页面 这是一个中文翻译的vim文档。建议可以先跟着学一学。 快捷键表 模式切换 从光标前面切换插入模式 - i 从光标后面切换插入模式 - a 在行尾插入 - A 返回上一级模式 - esc 切换指令模式 - : 查找模式 - / ? 正常模式操作 光标操作 基础移动 - h左j下k上l右 移动到首行 - gg 移动到末尾 - G 跳转到代码定义/引用处 - gd 向上/下翻页 - ctrl+b上ctrl+f下 control+b上control+f下 向上/下翻半页 - ctrl+d上ctrl+u下 control+d上control+u下 编辑操作 撤销 - u 撤销当前行操作 - U 重做 - ctrl+r control+r 删除光标所在字符 - x 删除当前行 - dd 删除到行末 - d$ 删除到当前词末尾 - de 删除到下一词的前一字符 - dw 复制当前行 - yy...
fastfetch配置图片显示
分享笔者配置fastfetch图片的方法以及问题解决方案 环境 操作系统:macOS Tahoe 26.5 (25F71) arm64 shell:zsh 5.9 终端:kitty 0.46.2 该文章只是笔者自己的方法分享。如果存在有错误欢迎进行指正(目前未开放评论系统,可以通过邮箱dabinggu@outlook.com进行反馈)。 1.检查协议支持 Logo-options文档里面详细的罗列了支持的协议以及如何获得相关的协议支持。 要想让图片显示在终端中,必须保证fastfetch输出的是你的终端所支持的显示协议。笔者在配置图片显示时常用的格式有两种,分别是.png与.sixel。 其中,.png格式可以通过kitty协议以及kitty-direct协议进行显示。一般情况下,kitty-direct支持特性已经内置在了fastfetch的常规发行包中。注意,kitty协议需要fastfetch支持imagemagick6 / imagemagick7协议。 特性 kitty kitty-direct 支持的图片格式 多种 (PNG, JPG, GIF, ...





