URP中实现半透射材质
1 实现思路 1.1 Overview 我们不希望依赖于额外的深度图,以及模糊算法。因为这需要额外的内存占用与性能消耗 为了创建出可信的效果,在材质中行进的光线需要: 受到物体厚度的影响 其衰减效果能够受到视角的影响 计算简单 我们从简单的方向向量出发: [L_{Attenuation}(N\cdot L+V\cdot...
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都会将不同的几何类型转换为三角形网格体。
Introduction to Shading 1 What is Shading: Light-Matter Interaction 在本篇博客中,我们会首次了解到“shading”的含义,以及影响物体外观的因素,例如光线强度、光线方向、物体表面相对于光源的朝向、物体的颜色等等。当我们理解了这些基础概念后,我们将会探讨一些用于计算着色的基本技巧,并在后续探讨更深层次的东西,例如反射与...
1 Phong Mode and Concepts of Illumination Models and BRDF 1.1 The Phong Model 在之前的博客中,我们了解了如何模拟镜面/漫反射材质,那光滑表面的着色要如何实现呢?如下图所示,现实中的绝大多数物体同时具备漫反射与镜面反射: 材质具有这种双重性质的原因比较复杂。某些材质本身就是多种材质的复合构成物,而有些物质则...
1 Motivation 传统的方形纹理平铺通常会带来很明显的纹理重复的视觉问题,尤其是在地形渲染的情况下,如下图所示: 通过Hex Tiling的手段,则可以在很大程度上减弱该问题,如下图所示: 传统的纹理平铺基于方形网格),而 Hex Tiling 使用六边形网格。在六边形的边缘区域,通过计算像素到相邻六边形中心的距离,动态混合多个纹理变体,实现平滑过渡。 此外,使用...
[Homogeneous Coordinates, Clip Space, and NDC WebGPU Carmen’s Graphics Blog](https://carmencincotti.com/2022-05-02/homogeneous-coordinates-clip-space-ndc/) Fragment Shader中的SV...
Blending in Detail 1. 法线贴图 在了解法线混合之前,我们首先需要了解法线贴图自身的含义:法线贴图通过 RGB 通道的三个分量存储表面法线的方向信息,这些分量直接决定了光照计算的细节表现。 1.1 切线空间 法线贴图通常基于 切线空间(Tangent Space),而非模型或世界空间。也就是说,RGB通道分别表示切线空间中的三个轴向的向量: R通道 → ...