URP中实现实时面光源
1 Motivation Cozy Space是一个装修模拟类游戏。它具有以下特点: 灵活的房间户型设计:玩家可以构建任意的多边形房间 时间/天气系统:玩家可以修改游戏中的时间段与天气,从而影响房间内的光照与氛围 自由的家具摆放:玩家可以自由地摆放房间中的家具、装饰品 基于以下几点考虑,我最终选择使用实时面光源作为房间中的主要光照来源: 平行光不适合作为封闭室内...
1 Motivation Cozy Space是一个装修模拟类游戏。它具有以下特点: 灵活的房间户型设计:玩家可以构建任意的多边形房间 时间/天气系统:玩家可以修改游戏中的时间段与天气,从而影响房间内的光照与氛围 自由的家具摆放:玩家可以自由地摆放房间中的家具、装饰品 基于以下几点考虑,我最终选择使用实时面光源作为房间中的主要光照来源: 平行光不适合作为封闭室内...
LearnOpenGL - Area Lights 1 Introduction 虽然我们已经实现了三种经典的光源类型:平行光、点光源、聚光灯,但是这些光源存在一个相同的缺点:无法模拟现实世界中具有真实面积/形状的光源。 2 Problem Description 假设场景中放置了一个邻近几何体的矩形面光源,该光源需向周围发射光线。我们需要在着色点处,将面光源对应的球面多边形立...
LTC.pdf - Google Drive 1 Introduction 基于物理的着色的核心在于求解光照方程,即对BRDF与场景光照在半球空间上的乘积进行积分。而本篇博客主要关注多边形光源的着色计算,这意味着需要对球面多边形区域上的BRDF进行积分。这里的球面多边形(spherical polygon)区域表示三维空间的多边形光源投影到着色点法线方向上的半球所形成的区域。 尽管多...
0 Aliasing 在归纳各个抗锯齿算法之前,我们首先需要明白锯齿出现的原因:连续的几何信号在离散的像素网格上的采样不足,导致高频细节信息丢失,进而出现Aliasing。 具体来说,我们可以从两方面进行考虑: 采样率不足 渲染是对连续几何对象的离散化采样的过程,而三角形的边缘、纹理的细节都属于连续几何 当几何边缘的变化频率(斜边、曲线)超过了像...
0 Aliasing 在归纳各个抗锯齿算法之前,我们首先需要明白锯齿出现的原因:连续的几何信号在离散的像素网格上的采样不足,导致高频细节信息丢失,进而出现Aliasing。 具体来说,我们可以从两方面进行考虑: 采样率不足 渲染是对连续几何对象的离散化采样的过程,而三角形的边缘、纹理的细节都属于连续几何 当几何边缘的变化频率(斜边、曲线)超过了像...
1 实现思路 1.1 Overview 我们不希望依赖于额外的深度图,以及模糊算法。因为这需要额外的内存占用与性能消耗 为了创建出可信的效果,在材质中行进的光线需要: 受到物体厚度的影响 其衰减效果能够受到视角的影响 计算简单 我们从简单的方向向量出发: [L_{Attenuation}(N\cdot L+V\cdot...
本篇博客翻译自Crash Course in BRDF Implementation.docx 1 Introduction 在本篇博客中,我们将会介绍游戏领域中常用的一些基础BRDF的实现,以及它们背后的原理。 2 So, What is the BRDF? 双向反射分布函数(BRDF)描述了表面在特定入射光方向和出射光方向组合下的反射特性。具体来说,它决定了当一定量的光线从...
1 The Microfacet Model 各向同性材质的微表面模型的通用形式如下: [f(l, v)=\text{diffuse}+\frac{D(h_\theta)F(\theta_h)G(\theta_l, \theta_v)}{4cos\theta_l cos\theta_v}] 其中,$\text{diffuse}$项有多种形式,通常会使用Lambertian模型并以常数表...
1 Motivation Cozy Space的中的所有家具都允许玩家进行自由的摆放,而“点击”、“选中”、“拖动”这些操作依赖于Unity中射线与家具碰撞体检测实现的。这个功能不需要过于负责的碰撞体,AABB就能胜任。此外,Cozy Space中的家具模型都是在Blender中创建的,所以我就写了这个简单的插件,以便于美术同事能够快速地为创建好的家具模型添加AABB并导出。 2 实...
Rendering an Image of a 3D Scene 1 A 3D Scene 绝大多数渲染API都会将不同的几何类型转换为三角形网格体。