[toc] UObject 对象无法被手动释放,只能被手动请求 ConditionalBeginDestroy 来完成销毁。实际上,这个操作只是设置了当前 UObject 的 RF_BeginDestroyed 为真,然后通过 SetLinker 函数将当前对象从 linker 导出表中清除。实际的销毁操作,则是在 GC 流程中进行的。 通常的 GC 主要分为以下几个部分: - GC 对象容器 - GC 触发入口 (GabageCollection->CollectGarbage) - GC 流程 # GC...

[toc] # Gbuffer 流程 先看一下 URP 在 Deffered 渲染时的 FrameDebug 可以发现,每个过程 (如法线 Pass / 深度 Pass/GBufferPass) 都是单独的 Pass, 不过走的是 SrpBatcher 当上述所有 Pass 走完以后,会进入到 DefferedPass 进行最终的渲染 DepthNormal DepthOnly RenderGBuffer DefferedPass 首先,由于 URP 本身通过将渲染分为了不同渲染时机和 RenderFeature, 所以可以很方便把渲染的逻辑拆出来 比如 URP 的...

[toc] # The Rendering Equation x: 出射与入射的交叉点 w_0: 注意力方向 L_0: 观察点接受到的能量 L_e: 自发光 然后对半球积分 f_r 是散射方程 w_i 是入射方向 L_i 是入射辐射率 cosθ: 入射方向和法线方向夹角 # PDF(Probability Distribution Function) 通常需要找到一个更好的 PDF, 用最少的 ray 来获取更好的 GI 基于蒙特卡洛方法计算时,采样的采样分布函数 什么样的 PDF 是比较好的? 如下,如过采样函数和原函数波峰波谷近似,则效果会比较好 # Reflective...

[toc] [中文直播] 第 31 期|GAS 插件介绍(入门篇) 伍德 大钊 # GAS 提供了哪些功能 实现了带有消耗和冷却功能的角色技能 处理数值属性 应用状态效果 应用游戏标签 生成特效和音效 完整的网络复制、预测功能 # ASC Ability System Component Ability System Component (ASC) 是整个 GAS 的基础组件 ASC 本质上是一个 UActorComponent, 用于处理整个框架下的交互逻辑,包括 使用技能 (GameokatAbility)、包含 属性 (AttributeSet)、处理各种效果...

[toc] # How to Animate a Mesh 构建一个绑定的姿势 (T-pos) 构建 Mesh 的骨骼 (骨骼动画 - 骨骼直接控制顶点) 骨骼基础上添加蒙皮动画 (在顶点中根据蒙皮的权重和骨骼来计算最终的矩阵) 先把顶点设置到初始 Pos 状态 顶点着色器中根据蒙皮和骨骼计算最终的 pos (vertex * 骨骼 TRS 矩阵) # Joint vs Bone joint 是关节,Bone 是两个 Joint 之间的连接,所以 Bone 可以做出 twist 的效果 # Mount Joint 比如我们想做人拿到武器的效果,就可以直接把武器 Mount 到对应的...

[toc] # 序言 通俗的来讲, Morton Code 的目的是 将N维数据降低为1维数据 但是为什么很多文章都在说 Morton Code 可以有效的提高稀疏数据结构的运行效率呢? 我准备以下面一篇文章 Out-of-Core Construction of Sparse Voxel Octrees 为题进行探讨 Out-of-Core Construction of Sparse Voxel Octrees Morton encoding/decoding through bit interleaving: Implementations # A. 稀疏八叉树的流程 #...

[toc] # 序 学习 UE5 的渲染。 # Shader 加载流 # 读取虚拟着色期目录 在 UE 引擎对一系列的 args 处理完毕后,会有一个阶段进入 Shader 的加载流程 LaunchEngineLoop.cpp 1234#if WITH_ENGINE // Add the default engine shader dir AddShaderSourceDirectoryMapping(TEXT("/Engine"),...

[toc] # DCEL 为了解决什么? 首先我们知道,三角化后的 Mesh 的存储是一个又一个由顶点和边构成的的三角形 三角形与三角形之间存在的一定的关系,如 相邻 、 洞(包含在一个多边形内部的多边形) 等关系 三角形可能某些边有邻接边,但是某些边没有邻接边 为了能够更好的管理 Mesh 化后的图形,业界提出了 DCEL 这样的计算几何存储数据结构, 这种结构对于切分Mesh等操作而言非常的方便 共边 计算几何的图形最多只会存在一条边被两个 face 公用的情况 合法: 非法: # DCEL 的一些定义 The main building block of a DCEL is...

[toc] # 几何数据结构 先讨论最简单的多边形数据结构 就是对每个边建立两个顶点间的双向链表 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#pragma once #include "../Base/Vector.h"#include "Point.h"#include <list>#include...

[toc] # 美术馆定理解决的问题 Vcitor Klee 曾提出过一个有趣的问题:如果在一个美术馆中,保安需要固定在任意一处,只能转动,那么至少需要几名保安,才能确保在任何时刻美术馆的每一点都能被一名保安观察到?这里我们假设美术馆的墙构成具有 n 个顶点的多边形。若此多边形是 凸(convex) 的,显然一名保安就足够了,且可以驻扎在任意一点。可是一般情况下,墙构成的多边形是任意形状的。 如上图,对于一个凸多边形而言,保安在任意一个位置即可 但是实际上一个美术馆会有很多个墙,如下 而美术馆定理就是:对于一个有 n 面墙的水密的美术馆,如果安排保安不能动只能旋转,那么最少需要 N/3...