松垮垮 松垮垮
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

松垮垮

c++后端开发工程师
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • GPU并行编程

  • 图形学

    • OpenGL
    • 光栅化(设备变换中)
    • 光照模型
    • 光线跟踪
    • 剪裁
    • 参数曲面
    • 变换
    • 多边形
    • 实时绘制加速技术
    • 明暗处理模型
    • 曲面消隐
    • 概论
    • 渲染通道、三维变换
    • 物体的CSG树表示
    • 物体表示
    • 管道
    • 纹理
    • 自然景物表示方法(中最具挑战性的问题之一)
    • 裁剪
    • 辐射度
    • 阴影
    • 隐式曲面
    • 颜色模型
  • 图形学(细分曲面)Subdivision
  • 归并算法
  • 计算机视觉

  • cs
  • 图形学
songkuakua
2025-02-15

阴影

# 阴影

Owner: -QVQ-

本影:不被任何光源所照到的区域。

**半影:**只有部分光线到达的区域 Untitled

Shadow Volume算法(阴影体积算法)

原理:

将视点移到光源的位置。

从光源处向物体所有背光面投射光线,

计算该光线与投影面(地面)的交点,

构成的阴影多边形,形成投射阴影。

对于阴影的渲染算法:

将光线减弱时创建的对象轮廓扩展到一个Volume中,然后使用一些简单的模版操作将该Volume映射到模板缓冲区中。

关键的想法是,当一个对象在Volume内(因此在阴影中)时,Volume前面的多边形会对对象的多边形进行深度测试,并且该Volume后部的多边形将失效相同的测试,或者说不参与测试。

我们将根据称为Depth Fail的方法设置模板操作,人们经常使用更直接的方法称为Depth Pass来开始描述阴影体积技术,但是当观看者本身位于影子内并且Depth Fail修复该问题时,我们已经跳过Depth Pass,直接去Depth Fail

  • Z-pass算法(Depth Pass计算方法) (正面+通过= +1 背面+通过=-1)

    1. 先关闭光源,将整个scence渲染一遍**,此时一片漆黑,但获得了深度值**
    2. 关闭深度写,渲染阴影体的正面,深度测试通过则模板值加1,否则不变
    3. 然后渲染阴影体的背面,深度测试通过则模板值减1,否则不变
    4. 最后模板值不为0的面就在阴影体中,开启深度写
    5. 用模板手法重新渲染一次加光的scence即可,让阴影部分为黑色

    (简单理解步骤2、3、4:从视点向物体引一条射线,当射线进入阴影时+1,离开阴影时-1,最后为0说明物体不在阴影中)

    其致命缺点是当视点在阴影中时,会导致模板计数错误。同时,有可能因为Z-near clip plane过近而导致模板计数错误

  • Z-Fail算法(Depth Fail计算方法) (正面+失败=-1,背面+失败=+1)

    1. 先关闭光源,将整个scence渲染一遍,获得深度值
    2. 关闭深度写,渲染阴影体的背面,深度测试失败则模板值加1(不同点)
    3. 渲染阴影体的正面,深度测试失败则模板值减1(不同点)
    4. 最后模板值不为0的面便处于阴影体中,开启深度写
    5. 用模板手法重新渲染一次加光的scence即可,阴影部分不渲染色度

    注意,该算法要求阴影体积是闭合的,即需要前后封口。该方法不是没有缺陷的,有可能因为Z-far clip plane过近而导致模板计数错误

上次更新: 2025/02/21, 14:57:10
辐射度
隐式曲面

← 辐射度 隐式曲面→

最近更新
01
搭建ai知识助手
02-23
02
边缘检测
02-15
03
css
02-15
更多文章>
Theme by Vdoing | Copyright © 2025-2025 松垮垮 | MIT License | 蜀ICP备2025120453号 | 川公网安备51011202000997号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 纯净模式