roeas / roeas.github.io Goto Github PK
View Code? Open in Web Editor NEWMy blog
Home Page: https://roeas.github.io/
My blog
Home Page: https://roeas.github.io/
https://roeas.github.io/2024/05/02/CPP/
序言 现代 C++ 相关的笔记。 inline 和 static 唯一定义原则 https://en.cppreference.com/w/cpp/language/definition int a;, int a = 1;, extern int a = 1; 都是定义。 extern int a; 是声明。 void foo() {} 是定义。 void foo(); 是声
https://roeas.github.io/2024/07/12/HelloWorld/?
Markdown Test 代码 std::string str; 1234567#include int main(){ std::cout << "Hello CPP" << std::endl; return 0;} 公式 x=1x=1x=1 E=mc2E=mc^2 E=mc2
https://roeas.github.io/2022/10/04/Atm/
资料 原理 总览: 06.游戏中地形大气和云的渲染(下) | GAMES104-现代游戏引擎:从入门到实践 一个简短的公式推导: [Rendering] 基于物理的大气渲染 一个详细的推导和最暴力且直观的实现: 【实战】从零实现一套完整单次大气散射 I=ISβ(λ)γ(θ)∑P∈AB‾T(CP‾)T(PA‾)ρ(h)dsI=I_S\beta(\lambda)\gamma(\theta)\sum_{
https://roeas.github.io/2022/05/01/EStar/
E 星计划 E 星计划 网易不知道什么时候关闭了这门公开课的浏览权限,笑死 02 渲染流程简述 GPU Driven、Mesh Cluster Rendering、Cluster whith LOD(nanite) Mesh Shader 04 纹理综述 MRT(Multiple Render Targets) Virtual Texture 05 光照综述 直接光漫反射 πfdif\pi f_
https://roeas.github.io/2024/01/18/GDCOverwatchECS/
原标题 Overwatch Gameplay Architecture and Netcode Component:只保存状态,不含逻辑 System:只有逻辑,没有数据 系统按顺序更新(Tick),每个系统访问多个不同的组件,称之为元组(Tuple) 元组之后被 Sibling 取代了。 系统不关心实体,只关心具体的组件。 World array<System *> hash_
https://roeas.github.io/2021/08/07/SoulForging/
本模组所使用的 Forge 版本为 1.12.2-14.23.5.2847 序言 欢迎使用SoulForging! 这是一个关于灵魂和金属的模组,新的武器,新的盔甲,新的附魔,新的食物,新的村民,新的敌人等待着你的探索… 以“使原版用处最小的金发挥作用”为切入点 添加新的金属锭“赋魂金”,数值高于钻石且拥有与金相同的附魔品质 为大部分实体添加新
https://roeas.github.io/2023/12/19/SigRedDeadRedemption2Atmospheric/
原标题 Creating the Atmospheric World of Red Dead Redemption 2: A Complete and Integrated Solution 整套天气系统渲染的实现,包括大气、云雾、二十四小时、不同天气。 物理基础 这里只考虑单条光路上的单次散射。 以单个粒子为视角,当光线与其交互时,大致会发生吸收(转化为热能)、散射和反弹。 散射向相机的部分
https://roeas.github.io/2022/09/13/Star/
BGFX BGFX 多线程渲染 BGFX 学习笔记 01 备胎计划 001 BGFX 的初始化 备胎计划 002 跨平台 shader 编译方案实践 跨平台渲染引擎之路:bgfx分析 跨平台渲染引擎之路:bgfx再分析与启程 C++ 近年常被問到如何學習 C++ 往数组里写入 0 为何比写入 1 更快?详解缓存的工作机制 C++ 和 STL中有哪些副作用或者稍不注意会产生性能开销的地方? 成员函
https://roeas.github.io/2023/11/09/CppProject/
TODO 待整理,但是最近发现了一些有趣的东西,先记一下 CMAKE_MSVC_RUNTIME_LIBRARY 用于在 CMakeLists 里指定 MSVC 使用的运行时库。 MultiThreaded 对应 MT MultiThreadedDebug 对应 MTd MultiThreadedDLL 对应 MD MultiThreadedDebugDLL 对应 MDd 注意这项功能仅在 CM
https://roeas.github.io/2021/09/14/Radiometry/
序言 路径追踪的前置知识。 物理量一览 符号 名称 单位 光度学名称 光度学单位 Q Radiant Energy J Luminous Energy lm.s ϕ\phiϕ Radiant Flux Js\frac{J}{s}sJ / Watt(W) Luminous Flux Lumen(lm) I Radiant Intensity Wsr\frac{W}{sr}
https://roeas.github.io/2021/11/08/SimpleRenderer/
序言 一个用 C++ 编写的简单的光栅化软渲染器,没想好起什么名字,不如就叫他 Simple Renderer 吧。这种造轮子行为主要还是为了巩固一下图形学相关的基础知识,毕竟有很多问题不实际上手是不会遇到的。 基础库的选择:我不想将注意力放在渲染管线以外的部分上,所以数学和显示的部分直接使用了 Eigen 和 EasyX。Eigen 是一个非常优秀的线性代数库,EasyX 是一个足够轻便
https://roeas.github.io/2023/10/30/CMakeAndMSBuild/
CMake 一个 OpenCV 的例子 1234567891011121314@echo offset "ROOT_PATH=%~dp0"set "OPENCV_PATH=%ROOT_PATH%\Frame\Source\ThirdParty\opencv"echo [ opencv ] path: %OPENCV_PATH%cd %OPENCV_PATH%
https://roeas.github.io/2024/03/26/GDCGGXSmith/
原标题 PBR Diffuse Lighting for GGX+Smith Microsurfaces 通用的微表面 BRDF 通用形式 宏观表面的 BRDF 只是许多微表面的平均。 通用形式 ∫Ωρm(L,V,m)D(m)G2(L,V,m)m⋅L∣N⋅L∣m⋅V∣N⋅V∣dm\int_\Omega\rho_m(L,V,m)D(m)G_2(L,V,m)\frac{m\cdot L}{|N\c
https://roeas.github.io/2023/10/14/ThirdParty/
Eigen 纯头文件库,包含路径即可。 https://eigen.tuxfamily.org/index.php?title=Main_Page GitLab: https://gitlab.com/libeigen/eigen GitHub: https://github.com/PX4/eigen .gitignore 3.4.0 release 的 .gitignore 相比 GitLab
https://roeas.github.io/2023/12/23/GDCTheRenderingofInside/
原标题 Low Complexity, High Fidelity: The Rendering of INSIDE 项目中的各种 Trick 与性能优化,其中颜色抖动在渲染中的应用比较有意思。 Dithering 这个问题源于:8 bit 的颜色无法完美还原高精度的渲染结果。 橙线:理想中的原始信号 蓝线:默认的采样方式(floor),可以看到丢失了精度 噪点:人为在原始信号上叠加的 [0,
https://roeas.github.io/2021/09/22/GAMES202/
百分比近似软阴影 若要判断当前着色点是否处于阴影之中,我们需要知到该点与光源之间的遮挡关系。一种常见的做法是 Shadow Mapping,假设从光源看向场景,就像做深度测试一样,保存一张从光源处获得的 DepthBuffer,然后比较着色点与光源之间的距离与 DepthBuffer 中对应点的深度,前者更大则代表场景中有另一物体比当前着色点更接近光源,即该着色点被遮挡。 Two Pass S
https://roeas.github.io/2021/09/03/GAMES101/
渲染管线中的变换矩阵 在渲染管线的前期,光栅化之前,需要对顶点和相机的坐标进行标准化变换,然后进行视口变换进入屏幕坐标空间。 相机的定义 位置:e⃗\vec{e}e; 看向:g⃗\vec{g}g; 上方:t⃗\vec{t}t; 我们规定相机位于 (0, 0, 0) ,看向 -Z,上方为 Y。 对相机和顶点应用同一个变换矩阵,他们的相对位置则不变。 视锥体的定义 已知fovY和aspect可
https://roeas.github.io/2023/10/13/GAMES101Review/
Lecture 02 Review of Linear Algebra 对于一个 vec4,一般认为 w 分量为 1 时表示点,w 分量 为 0 时表示向量。 也符合“点 - 点 = 向量” Lecture 04 Transformation Cont. 旋转 相机定义 位置:e 看向:g 头顶:t Frustum 定义 tanfovY2=t∣n∣tan\frac{fovY}{2} =
https://roeas.github.io/2023/07/22/GitHub/
序言 一些工作中常用的 git / GitHub 概念整理。 License 如何为自己的 Github 项目选择开源许可证? 分支与开发 对于正规一点的仓库,main branch 通常是受保护的,而我们的提交与推送都在单独的 branch 上进行。 查看分支 git branch 查看本地分支 git branch -r 查看远程分支 git branch -a 查看所有分支 注意:如
https://roeas.github.io/2021/11/27/CppPrimer/
第一章 开始 1.2 初识输入输出 #include 使用了 iostream 库,包含了 istream 类和 ostream 类,分别表示输入流和输出流。 向流写入数据 输出运算符(<<)接受两个运算对象,左侧必须是一个 ostream 对象,右侧是要打印的值,然后返回其左侧的对象。 std::endl 这是一个被称为操作符的特殊值,写入 endl
https://roeas.github.io/2023/07/01/Song/
日文 术力口 glow 参考:https://www.bilibili.com/video/BV1Ne4y1j7E7/ (鹿乃) オノマトペ / 拟声词 参考:https://www.bilibili.com/video/BV1vN411o7Bo/ (长泽陵川) 升降:+1 夏に去りし君を想フ / 思念于夏日离去的你 原唱:https://www.bilibili.com/video/B
https://roeas.github.io/1970/02/01/Audition/
网易互娱:游戏引擎研发工程师 C++ class 与 struct 有什么区别? 了解过内存对齐吗,为什么要对齐,不对齐会怎样? struct 内存对齐 __declspec(align(#)) 的用法和大小计算 struct TA { char a; int b; char c; }; struct TB {
https://roeas.github.io/2021/08/19/SunnyLand/
序言 使用 Unity 制作的 2D 平台跳跃游戏 压缩包大小:46MB 平台:Win 只有三关,根据游戏经验的不同,完整的游戏时长会在 10min-60min 之间 百度网盘 提取码: twwx 蓝奏云 一览 关于关卡设计 如果您还未进行过游戏,强烈建议体验过后再继续阅读,以免破坏您的游戏体验。 林田宏一曾提到过任天堂的关卡设计公式:介绍、
https://roeas.github.io/1970/01/01/HelloWorld/
Markdown Test 代码 std::string str; 1234567#include int main(){ std::cout << "Hello CPP" << std::endl; return 0;} 公式 z˙=b\dot{z}=bz˙=b Lo(x,ωo)=Le(x,ωo
https://roeas.github.io/2023/03/06/Assimp/
序言 Github 一个非常流行的模型导入库 Assimp(Open Asset Import Library)。它能够导入很多种不同的模型文件格式(也能导出一些),并在内存中呈现为 Assimp 的通用数据结构。一旦 Assimp 加载了模型,我们就可以通过 Assimp 提供的接口检索需要的数据。 编译 Assimp 官方比较推荐 vcpkg 的集成方式。 手动集成的话有三个坑: confi
https://roeas.github.io/2021/08/12/MakeYourFirstGame/
角色控制,包括移动与多段跳 朝向 1234float forward = Input.GetAxisRaw("Horizontal");// 返回-1,0,1if (forward != 0) { transform.localScale = new Vector3(forward, 1, 1);} 移动 1234567891011public float
https://roeas.github.io/2021/08/29/Unity/
背包系统 背包 GUI 的实现、ScriptableObject、数据的存储与读取。 层级结构 Bag 挂载 BagOnDrag 脚本 Grid 挂载 Grid Layout Group 组件,使其子物体(Slot)整齐地排放 Slot 挂载 Slot 脚本,更改其子物体(Item)以实现拖拽 Item 挂载 ItemOnDrag 脚本和 CanvasGroup 组件,以及作为 butto
https://roeas.github.io/2023/11/21/GDCSpiderManLighting/
原标题 Marvel’s Spider-Man: Procedural Lighting Tools 程序化布光以及 Probe / Light Grid 分布。 Open World Tiles 将整个世界分成数个 128 x 128 米的 Tile,对于每个 Tile,由数个 JSON 文件描述该 Tile 所引用的资源。 只有玩家当前所在的和周围的 Tile 会流入内存,其余的 Tile
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.