游戏开发 | ETH MSCS 在读

Resampled importance sampling (RIS)

RIS算法流程

RIS流程:

  1. 从一个易于采样的分布(proposal PDF) \(p(x)\)上,进行采样,抽取\(M\)个样本
  2. 得到一个期望进行拟合的真实目标概率分布(target PDF) \(\hat p(x)\)
  3. 对于每一个抽取的样本,分配权重\(w(x)={\hat p(x)}/{p(x)}\),进而得到每个样本的条件概率,通过这种方式进行采样的方法叫做重要性重采样Sampling importance resampling (SIR)
  4. 采样出来的结果可以用于1-sample RIS estimator

\[ \langle L \rangle = \frac{f(y)}{\hat p(y)} \cdot \left( \frac{1}{M}\sum\limits_{j=1}^{M}w(x_{j}) \right) \]

  1. 多次进行RIS采样,从样本池中的\(M\)个样本(可以重新生成样本池,也可以直接在同一个样本池中进行采样进行简化)中有放回的采样\(N\)个样本,得到最终的结果

\[ \langle L \rangle = \frac{1}{N} \sum\limits_{i=1}^{N}\left(\frac{f(y_{i})}{\hat p(y_{i})} \cdot \left( \frac{1}{M}\sum\limits_{j=1}^{M}w_{i}(x_{ij}) \right) \right) \]

阅读全文 »

image.png

全局光照对于渲染真实的场景起到至关重要的作用。通常情况下,整个场景被照亮是一个非常复杂的过程,一个shading point可能会受到直接光照、间接光照、散射、焦散、阴影等等的影响,如上图所示。所以没有全局光照只有直接光照会导致渲染的结果不真实,最直观的效果就是阴影区域非常黑,而有了间接光照,阴影区域就会有一个合理的亮度。

阅读全文 »

在光追渲染中,我们需要对物体和射线的相交进行判断;在物理模拟中,我们需要对物体之间的碰撞进行检测。如果我们采用暴力算法,那么每一帧都需要大量时间计算射线或者碰撞检测。所以我们需要一些更加高效的方式来进行检测,这就需要我们用空间加速结构进行加速。 今天主要记录几种在渲染和模拟中比较常用的方法

  • Spatial Hashing (Uniform Grid)
  • Spatial Hierarchy (Octree, Kd Tree, BSP tree)
  • Bounding Box Hierachy (BVH)
    阅读全文 »

四元数(Quaternion)是用于表示旋转的一种方式,其相比于Rotation Matrix的好处在于能够更轻松的插值、不存在万向节(gimbal lock)的问题。其定义如下: \[ q=a+bi+cj+dk \] 其中\(i^{2}=j^{2}=k^{2}=ijk=-1\)。同时也可以用以下方式表示: \[ q=\left(a, \mathbf{v}\right), \text{where }\mathbf{v}=\begin{bmatrix}b\\c\\d\end{bmatrix} \] \(a\)是实部,\(\mathbf{v}\)是向量。四元数的旋转可以理解为四维坐标在三维空间中的投影,具体可以参考3b1b的视频

阅读全文 »

在position based dynamics中,物体由许多的粒子组成,这些粒子之间有许多约束,比如说距离约束、体积约束等等。在物体运动的过程中,通过解这些约束来更新粒子的位置。大致的伪代码如下(这是XPBD的伪代码,XPBD的区别在于XPBD使用了substep加速收敛)

阅读全文 »

Motivational Image

The scene that we want to render is a dimly lit, smoky bar, inspired by the following two images. Rows of exquisite liquor bottles line the shelves, their labels veiled in the subtle play of light and shadow. An ashtray rests nearby, adorned with an unlit cigarette. A dim spotlight bathes the ashtray and the wine bottles. The scene is to capture the essence of the bar's mystique, inviting participants to let their imagination run wild as they bring out the richness of the hidden stories within the rendering. The following two images are our motivation images.

Final Images

Based on the motivation images, we rendered our final images.

阅读全文 »

Introduction

GAN的全称是Generative Adversarial Nets,是一种生成模型,目的是为了训练出一个生成器,使得生成器能够生成我们想要的数据,比如说一张图片。GAN在刚推出的时候成功生成了简单的手写数字和人脸照片,虽然现在看来生成的图片质量也比较一般,但是也开创了一个生成模型的新时代。

在以前的生成网络中,需要有大量的概率计算, 极大似然估计, 比较麻烦i。GAN就成功的避免了概率计算的问题,不需要马尔科夫链、极大似然估计等等。GAN的思想非常简单,总的来说就是一个生成器和一个判别器进行对抗,最终达到一个纳什均衡的状态。

阅读全文 »

目的

CycleGAN主要解决的问题是一个Image to Image Translation的问题,也就是从一个图像域转化到另一个图像域的问题,比如说给一张人脸图片,生成对应的动漫头像,还有比如说我们给一个cartoon的图像,需要生成对应的像素化后的图像 (pixel image)。 其次,传统的Image to Image Translation的算法通常需要我们有配对的图像组,但是很显然这是很耗费时间的,也很难获得配对图像。所以CycleGAN提出了一种使用unpaired training set的方法,只需要给定对应两个图像域而不需要配对的图像,我们就可以实现Image to Image的转化。

阅读全文 »

CommonUI是UE5新推出的一款UI插件,原本是堡垒之夜里使用的插件,Epic就将其作为插件引入到了UE5中。他主要的功能在于两点:一是对于复杂的UI使用LayerStack的思想,对于不同层级的UI进行相应的管理,并使用栈的方式解决UI层级的响应问题;二是使用InputRouting实现对不同输入的统一适配,对于开发多平台游戏来说比较方便,通过配置配置表即可实现多平台的UI和输入适配。本篇主要着重在Input部分进行使用的详解和源码的简要剖析。

阅读全文 »