GAMES 202 - 学习笔记(05)

本文是GAMES 202课程的学习笔记,聚焦实时环境映射。内容包括Distance Field Soft Shadows算法,讲解了Distance Functions在Ray marching和软阴影中的应用,以及环境光照的Shading方法,特别是Split Sum近似技术在环境光照着色中的应用。
摘要由CSDN通过智能技术生成

GAMES 202 - 学习笔记(05)


原课程视频链接以及官网
b站视频链接: https://www.bilibili.com/video/av887241709/.
课程官网链接: https://sites.cs.ucsb.edu/~lingqi/teaching/games202.html.

这是课程今天的内容
在这里插入图片描述

Real-Time Environment Mapping

Finishing up on shadows

在这一节课程介绍了 Distance Field Soft Shadows 软阴影算法,它是最近比较热门的一种制作软阴影的方法。它的计算时间相当快,阴影质量也比较好,但是存储存在一定问题

在介绍 Distance Field Soft Shadows 之前,课程先介绍了 Distance Functions

Distance Functions

Distance functions 表示:在任何一个点处,都定义了它离物体的最小距离,这个最小距离是有符号的,比如这个点在物体内部定义为负号,在物体外部定义为正号(SDF)
在这里插入图片描述
通过 SDF 可以很好的做 blending
在这里插入图片描述
在两种不同形状的物体间,通过混合两者的 SDF,能够很好的模拟两者的形变
在这里插入图片描述
Distance functions 应用 1:Ray marching

可以用于做 Ray marching。通过定义场景中每个位置到物体的最小距离,定义出三维场景的 SDF。那么当我们做光线追踪的时候,只需要查看每束光线对应的三维位置在 SDF 中能否打到周围物体即可。因为 SDF 中存储了该位置到物体的最小距离,所以距离的范围表现在三维中就是一个圆球体。

对于场景中的不同物体来说,我们只需要分别存储不同物体的 SDF ,然后在 Ray marching 的过程中取不同物体中最小的 SDF 即可

在这里插入图片描述
在这里插入图片描述
由于是在三维中 ,所以 SDF 的存储量是相当大的,因为需要对三维场景细分成不同的细小格子,然后存储对应的最小距离。同样,SDF 也不适用于场景中存在能够发生形变的物体,因为发生了形变就需要重新计算一次 SDF

这里有一篇文章讲 Ray Marching and Signed Distance Functions,可以参考了解:
http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/.

Distance functions 应用 2:软阴影

之前在算软阴影时,是通过 v i s i b i l i t y ⋅ s h a d i n g visibility⋅shading visibilityshading 计算某个着色点在阴影下的着色, SDF 正是通过近似估计 v i s i b i l i t y visibility visibility 项来实现的软阴影

SDF 在前面表示为场景中的点到物体的最小距离,在这里则表示的是光线与最小距离所呈的夹角,当夹角越小时, v i s i b i l i t y visibility visibility 就越小
在这里插入图片描述
该夹角定义为 arcsin ⁡ SDF ⁡ ( p ) p − o \arcsin \frac{\operatorname{SDF}(p)}{p-o} arcsinpoSDF(p)

所以,有不同物体时我们只需要取最小的夹角即可:
在这里插入图片描述
如何计算角度呢?

直观来说是通过 arcsin ⁡ SDF ⁡ ( p ) p − o \arcsin \frac{\operatorname{SDF}(p)}{p-o} arcsinpoSDF(p) 来计算,但是通常来说夹角不会大于 90°,所以此时 arcsin ⁡ SDF ⁡ ( p ) p − o \arcsin \frac{\operatorname{SDF}(p)}{p-o} arcsinpoSDF(p) 可以直接用 k ⋅ SDF ⁡ ( p ) p − o \frac{k \cdot \operatorname{SDF}(p)}{p-o} pokSD

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值