深度图重建世界空间
深度图重建世界空间是从深度信息计算出对应像素的世界位置坐标,对于实现如阴影映射、环境遮挡和后处理效果(例如景深和运动模糊)等高级图形效果至关重要。
标签 "技术美术" 下的所有文章
深度图重建世界空间是从深度信息计算出对应像素的世界位置坐标,对于实现如阴影映射、环境遮挡和后处理效果(例如景深和运动模糊)等高级图形效果至关重要。
在Shader编写过程中,常常需要处理不同坐标系下的顶点位置信息,因此必须借助MVP矩阵来实现相应的坐标变换操作。在Unity引擎中,不仅为用户提供了完备的各类MVP矩阵及其逆矩阵,还给出了历史帧中的矩阵数据。
这篇文章是在写《屏幕空间深度贴花》时理解错了。 透视投影效应解析  当运用投影仪等投影设备将画面投射至物体表面时,我们熟知这样一个规律:被投射表面与投射源的距离越近,投射画面呈现越小的尺寸;反之,距离越远,画面则展现越大的尺寸 …
启用深度图 URP 在URP中,默认启用深度图,可在渲染管线资产中修改。 Built-In 在Built-In中,深度图默认不启用,需要使用C#显式开启: CS 折叠 复制 Camera cam = GetComponent<Camera>(); …
声明变体 HLSL 折叠 复制 #pragma multi_compile_fog 点击展开查看更多 会产生三个变体:
实现原理 根据片元到摄像机的距离 d 计算出雾浓度因子 f,再根据该值将片元颜色与雾颜色混合: $$ f = \text{ComputeFogFactor}(d) $$ $$ Color = \text{Lerp}(Color, FogColor, f) $$ 提示 在实践中,d …
凹凸贴图 Bump 存储内容 单通道灰度图,表示表面凹凸程度(相对位移),灰度值越小表示该位置的表面相对于原表面越向外凸起,灰度值越大表示该位置的表面相对于原表面越向内凹陷。
Why? 较新的着色器模型对纹理系统进行了优化,明确区分了纹理资源与采样器状态,使纹理操作更灵活可控。 旧版语法使用 sampler2D、tex2D() 和类似函数。此语法适用于所有平台 -> [2D 纹理(Built-In)](/posts/2D 纹理 …
常量缓冲区 CBuffer 在 Unity 中,CBuffer 是通过 HLSL 中的CBUFFER_START和CBUFFER_END宏进行封装,背后在不同平台映射为常量缓冲区,其原理查看->[计算机图形学/HLSL/常量缓冲区 CBuffer](计算机图形学/HLSL/ …
对 2D UI 元素(如 Image、RawImage、Text)进行矩形区域裁剪,隐藏超出矩形范围的部分。 使用方法 添加组件 RectMask2D 的工作原理是通过将裁剪矩形 _ClipRect 传递给子物体所使用的 Shader 来实现裁剪的,故首先需要添加 …
可以通过 Mesh.SetVertexBufferParams 全局控制每个语义的格式与精度。 语义类型 默认精度 占用空间 特殊限制 平台差异 典型用途 TEXCOORDn float32 float2/3/4 无 某些平台压缩为half UV/法线/权重/自定义数据 …
在Shader编程中,插值算法是实现平滑过渡的关键技术。 线性插值 线性插值 Lerp Lerp 是最基本的插值,适用于颜色、位置、UV等标量或向量。 公式: $$ \text{lerp}(a, b, t) = a + t \cdot (b - a) $$ 或 $$ …
参考:https://zhuanlan.zhihu.com/p/375764857 线性混合 Linear Blending 描述:直接对两张法线贴图的向量相加后归一化。 核心思想:法线视为普通向量,线性叠加后重新单位化。 优缺点:
_Time 类型:float4 含义: _Time 是 Unity 自动提供的时间变量,它包含了不同形式的时间信息,单位都是 秒: 分量 描述 X 当前时间(t) Y 当前时间 * 2(2t) Z 当前时间 * 3(3t) W 当前时间 * 4(4t) 用法示例: HLSL 折叠 …
VPOS Unity中的一个语义,表示像素在屏幕的位置。 数据类型有平台差异,需要使用UNITY_VPOS_TYPE作为变量类型。 HLSL 折叠 复制 half4 frag(UNITY_VPOS_TYPE screenPos: VPOS) : SV_Target { …
抓取屏幕内容和AlphaBlend都有渲染物体包含背景物体颜色的特点,不同的是,AlphaBlend渲染像素时,只能基于该像素的前一次DrawCall结果来混合,而抓取屏幕内容可以得到其他像素颜色,能做出扰动、折射之类的效果。
面朝向 ->面朝向 Cull指令 控制面剔除主要在 SubShader/Pass 块中使用 Cull 指令。 语法: SHADERLAB 折叠 复制 Cull [Back | Front | Off] 点击展开查看更多 Cull Back: (默认) 剔除背面。法线背离摄像 …
控制新绘制像素(源/Source)与已有像素(目标/Destination)的颜色叠加方式。 声明混合 在SubShader/Pass中声明
Render Queue 作用与原理 渲染顺序控制:决定物体在GPU上的绘制顺序 核心渲染原则: 不透明物体(Queue<2500):从前向后渲染(深度优化) 透明物体(Queue≥2500):从后向前渲染(正确混合) 深度测试关系:ZWrite On(不透明) vs …
Shader变体(Shader Variants)是什么? 定义:通过预处理器指令(如 #if)动态修改Shader代码分支,生成不同功能的Shader实例。 用途:实现动态光照、平台适配、画质分级等功能,避免运行时分支判断开销。 代价:变体过多会导致包体增大、编译时间增长、内存 …
声明与绑定 在 Properties 中声明纹理 SHADERLAB 折叠 复制 _MainTex ("Base Texture", 2D) = "white" {} 点击展开查看更多 建议采用与大多数Shader相同的属性名称,如 …
[!warning|aside-r] 仅限片段着色器 clip 裁剪 在片元着色器阶段对像素进行裁剪(丢弃),如果传入的参数任何分量小于0,则丢弃当前像素。
定义材质的可调节属性 语法 声明属性 SHADERLAB 折叠 复制 Properties { [Attribute][...] _Name ("显示名称", Type) = 默认值 } 点击展开查看更多 绑定变量 HLSL 折叠 复制 对应类型 _Name; …
ShaderLab 是 Unity 引擎中用于编写着色器(Shader)的配置语言和结构化框架。它不是一种真正的编程语言(如 HLSL 或 Cg),而是一个描述性语言,用来组织和定义着色器的结构、属性、子着色器、渲染状态等。在 Unity 中,使用 ShaderLab 来描述整 …
浮点 精度 位数 多维形式 应用场景 float 32 float2, float3, float4 位置、UV等需要高精度的计算 half 16 half2, half3, half4 方向、法线、颜色等一般性精度需求,或移动端优化需要 fixed - fixed2, …
获取材质对象 Mesh材质 CS 折叠 复制 // 指定索引获取 Material material = @MeshInstance3D.Mesh.SurfaceGetMaterial(idx); // 遍历 for (int i = 0; i < …
开启使用材质属性 需要在材质设置中启用启用材质属性(Use Material Attributes) MakeMaterialAttributes 将多个材质属性通道合并成一个MaterialAttributes BreakMaterialAttributes 将一个 …
FlattenNormal 调整法线强度 原理:法线贴图强度调整 BlendAngleCorrectedNormals 叠加法线 原理:[混合法线](/posts/混合法线#重定向法线贴图 Reoriented Normal Mapping (RNM))
法线强度? 法线贴图甚至法线都并无强度一说,因为法线仅仅是一个方向数据,并不能存储任何“定量”数据。所谓“法线强度”的视觉效果:对于引擎,实际上是通过夸大或减弱法线方向对光照计算的影响来模拟的;而对于法线贴图自身,则通过直接修改存储在纹理中的法线向量数据实现。具体而言,是 …
CheapContrast、CheapContrast_RGB 简易实现的对比度调节 原理:
Saturate 等价于Clamp(Value, 0.0, 1.0) DDX 、DDY 相当于GLSL中的dFdx、dFdy dFdx、dFdy、fwidth
均值模糊 HLSL 折叠 复制 // 均值模糊 // float2 UV UV // TextureObject Texture 纹理对象 // float2 TexSize 图片大小,比如float2(512,512) // float2 BlurCore 模糊大小,比如 …
Rotator 一直旋转UV 输入 描述 Coordinate 纹理坐标UV Time 时间,默认传入GameTime,可自行进行处理加减速等 CustomRotator 自定义旋转UV
提出问题 在Phong光照模型中,Specular的实现方式依赖于视角向量 dot 反射光向量,即 $$ spec = \overline{V} \cdot \overline{R} $$ 在右图情况下spec值为负值,导致当观察者与光照相对法线同侧时,对侧的光线会被减弱甚至消除 …
Ambient 环境光 GLSL 折叠 复制 float ambientStrength = 0.1; vec3 ambient = ambientStrength * lightColor; 点击展开查看更多 Diffuse 入射光线越靠近物体法线漫反射越强
屏幕空间深度贴花(Screen-Space Depth Decals)是一种实时渲染技术,它在屏幕空间(即最终成像的二维像素平面)中,基于当前帧的深度缓冲(Depth Buffer) 信息,将贴花(如纹理、图案、标记等,例如弹孔、污渍、血迹、贴纸等)精准绘制到场景中可见物体的表面 …
输入关键词搜索文章内容