My Blogs

URP中实现实时面光源

1 Motivation Cozy Space是一个装修模拟类游戏。它具有以下特点: 灵活的房间户型设计:玩家可以构建任意的多边形房间 时间/天气系统:玩家可以修改游戏中的时间段与天气,从而影响房间内的光照与氛围 自由的家具摆放:玩家可以自由地摆放房间中的家具、装饰品 基于以下几点考虑,我最终选择使用实时面光源作为房间中的主要光照来源: 平行光不适合作为封闭室内...

在OpenGL中实现实时Area Light

LearnOpenGL - Area Lights 1 Introduction 虽然我们已经实现了三种经典的光源类型:平行光、点光源、聚光灯,但是这些光源存在一个相同的缺点:无法模拟现实世界中具有真实面积/形状的光源。 2 Problem Description 假设场景中放置了一个邻近几何体的矩形面光源,该光源需向周围发射光线。我们需要在着色点处,将面光源对应的球面多边形立...

LTC Area Light from Heitz's Paper

LTC.pdf - Google Drive 1 Introduction 基于物理的着色的核心在于求解光照方程,即对BRDF与场景光照在半球空间上的乘积进行积分。而本篇博客主要关注多边形光源的着色计算,这意味着需要对球面多边形区域上的BRDF进行积分。这里的球面多边形(spherical polygon)区域表示三维空间的多边形光源投影到着色点法线方向上的半球所形成的区域。 尽管多...

URP中的抗锯齿算法

0 Aliasing 在归纳各个抗锯齿算法之前,我们首先需要明白锯齿出现的原因:连续的几何信号在离散的像素网格上的采样不足,导致高频细节信息丢失,进而出现Aliasing。 具体来说,我们可以从两方面进行考虑: 采样率不足 渲染是对连续几何对象的离散化采样的过程,而三角形的边缘、纹理的细节都属于连续几何 当几何边缘的变化频率(斜边、曲线)超过了像...

URP中的抗锯齿算法

0 Aliasing 在归纳各个抗锯齿算法之前,我们首先需要明白锯齿出现的原因:连续的几何信号在离散的像素网格上的采样不足,导致高频细节信息丢失,进而出现Aliasing。 具体来说,我们可以从两方面进行考虑: 采样率不足 渲染是对连续几何对象的离散化采样的过程,而三角形的边缘、纹理的细节都属于连续几何 当几何边缘的变化频率(斜边、曲线)超过了像...

Preview Image

Blender中的一键AABB生成插件

1 Motivation Cozy Space的中的所有家具都允许玩家进行自由的摆放,而“点击”、“选中”、“拖动”这些操作依赖于Unity中射线与家具碰撞体检测实现的。这个功能不需要过于负责的碰撞体,AABB就能胜任。此外,Cozy Space中的家具模型都是在Blender中创建的,所以我就写了这个简单的插件,以便于美术同事能够快速地为创建好的家具模型添加AABB并导出。 2 实...