图形引擎-基础概念

基础概念汇总(持续学习篇)

1. Vertex Shader

  • 用途: 存储顶点数据。每个顶点代表图形中一个关键点,比如一个多边形的一个角。
  • 内容: 顶点数据可以包含每个顶点的各种属性,如位置坐标、颜色、法线向量(用于光照计算)、纹理坐标等。
  • 实现: 在大多数图形API(如OpenGL或DirectX)中,顶点缓冲区对象(VBO)用于将顶点数据传送到GPU,以便进行快速渲染。
  • 好处: 使用顶点缓冲区可以高效地管理图形数据和渲染处理,减少了数据传输的开销。

2. Fragment Shader (FS) 或 Pixel Shader (PS)

  • 用途: 处理每个片段(潜在的像素)的颜色和其他属性。
  • 功能: 计算光照效果,纹理应用等,以确定最终颜色。
  • 作用: 负责最终输出到屏幕的颜色值,进行精细化处理,如色彩混合、纹理映射等。

3. Geometry Shader (GS)

  • 用途: 可以生成、销毁或修改几何体。
  • 功能: 在顶点构成几何图元(如三角形、线段等)后调用。
  • 作用: 用于动态生成几何体细节或改变几何体的形状,例如细分曲面或扩展图元。

4. Compute Shader (CS)

  • 用途: 处理大量并行运算,通常用于通用计算任务,而非直接图形渲染。
  • 功能: 不在图形渲染管线中,适用于物理运算、粒子系统、图像处理等。
  • 作用: 利用GPU的并行计算能力进行复杂的计算任务,广泛应用于GPGPU。

5. Tessellation Shaders (包含 Hull Shader 和 Domain Shader)

Hull Shader (HS):

  • 用途: 控制细分曲面级别,决定几何体的多细分级别。
  • 功能: 处理顶点控制点,确定细分级别。

Domain Shader (DS):

  • 用途: 处理经过细分后的顶点。
  • 功能: 应用于具体的细分几何体,应用变换和计算坐标。
  • 作用: 结合用于细化模型细节,实现更光滑的曲面和更高的几何细节。

6. constant buffer

  • 定义:Constant Buffer 是一种存储常量数据(也称为常量或Uniform数据)的GPU缓冲区。
  • 作用:提供一组在多个绘制调用中不会经常变化的参数,例如变换矩阵(模型、视图、投影矩阵)、光照参数、材质参数等。
  • 更新频率:
    一般来说,Constant Buffer 在每一帧更新,特别是在场景、摄像机位置、光照参数等变化时必要。
    也可以每次物体变换、动画变化时更新。
  • 更新时机:
    重置相机、灯光变化时。
    变换矩阵(MVP)发生变化时。
    材质或光照参数改变时。
  • 如何更新:
    在API中(如DirectX、Vulkan、OpenGL),通常调用映射(Map)-写入-解映射(Unmap)流程,更新缓冲区内容。
    或使用“动态缓冲区”策略,提前分配好可频繁更新的缓冲区。

7. SRV(Shader Resource View) && UAV(Unordered Access View)

srv是DirectX和其他现代图形API中用来描述和访问资源(如纹理、缓冲区)的一种视图。

  • 定义:
    SRV是“着色器资源视图”,它允许着色器(如像素着色器、顶点着色器、计算着色器)访问具体的资源,比如纹理或缓冲区。
  • 主要用途:
    通过SRV,GPU可以读取(而不是修改)存储在资源中的数据,实现纹理采样、缓冲区数据读取等。
视图类型 全称 作用 访问方式
SRV Shader Resource View 让着色器读取资源(纹理、缓冲区) 只读
RTV Render Target View 作为渲染目标(绘制的输出) 写入
DSV Depth Stencil View 深度/模板缓冲区,用于深度测试 读写(部分API)

SRV(Shader Resource View)是让GPU的着色器读取资源的接口,是实现纹理采样和缓冲区读取的关键机制。

UAV(Unordered Access View)

  • 用途和特性:
  • 读写访问:允许着色器(主要是计算着色器)对资源进行随机读写。
  • 常用场景:
    • 计算任务中需要读写缓冲区(如粒子系统、动态几何等)
    • 需要在渲染过程中动态更新的资源
  • 行为:
    • 支持同步(比如互斥锁和原子操作)
    • 允许多次写操作
  • 资源类型:
    • 结构化缓冲区
    • 原始缓冲区(Raw Buffer)
    • 纹理(可用UAV绑定)
  • 绑定位置:
    • 绑定到计算着色器和像素着色器的“读写”槽位
特点 SRV(Shader Resource View) UAV (Unordered Access View) Buffer
访问类型 只读 读写(支持写操作)
用途 采样纹理, 读取缓冲区数据
绑定到 像素着色器、顶点着色器、几何着色器等 计算着色器、像素着色器(需要读写)
同步/原子操作 不支持(只读方式,不支持同步操作) 支持(可以进行原子操作)
缓冲区类型 主要功能 支持UAV/SRV 绑定阶段 典型用途
Vertex Buffer 存储顶点数据 仅读 输入装配阶段 模型的顶点属性
Index Buffer 存储索引信息 仅读 输入装配阶段 连接顶点,定义图元
Constant Buffer 存储常量参数 只读 着色器常量寄存器 变换矩阵、光照参数
Shader Resource View 只读,采样或读取缓冲区 支持 绑定到各种着色器阶段 纹理采样、缓冲区读取
UAV Buffer 读写缓冲区 支持 计算或像素着色器 粒子缓冲区、动态生成数据
Structured Buffer 结构化数据缓冲区 支持 UAV/SRV支持 GPGPU、粒子、物理模拟
Raw Buffer 原始字节级缓冲区 支持 UAV/SRV支持 自定义字节流处理

8.各类贴图

贴图类型 作用与描述
Diffuse(漫反射)贴图 提供模型表面的颜色信息,模拟物体表面的基本色彩(即没有高光或特殊光照效果的颜色)。 在光照计算中,Diffuse贴图会影响模型的本色部分,使得物体看起来更加真实、丰富多彩。
Specular Map(高光贴图) 控制物体的反光和高光亮度部分(亮的地方反光更强)
Normal Map(法线贴图) 改变表面法线方向,用以模拟细节如凹凸、纹理,使表面光照更丰富、逼真
Roughness Map(粗糙度贴图) 控制表面的粗糙程度,影响镜面反射的散射程度,从而影响光泽和反光的模糊度
Metallic Map(金属度贴图) 控制材料的金属属性,区分金属与非金属区域(影响反射和光散射)
Ambient Occlusion (AO) Map(环境遮挡贴图) 提供环境遮挡效果,模拟光线在缝隙和细节处的阴影,增强深度感
Opacity Map(透明度贴图) 控制模型部分区域的透明或不透明状态
posted @ 2025-07-30 11:38  shenlei_blog  阅读(19)  评论(0)    收藏  举报