avatar
Articles
27
Tags
21
Categories
11

Home
Archives
Tags
Categories
About
WeebOwO
Search
Home
Archives
Tags
Categories
About

WeebOwO

光线追踪中的辐射度量学
Created2023-01-11|Updated2024-10-20|Computer Graphics|Raytracing•Math•Physics
为什么要引入辐射度量学?在传统的Whitted style ray tracing中,我们的Shading方法本质上还是一个基于经验公式的Phong或者Blinn-Phong光照模型,而并没有真正的基于物理去考虑光以及对应能量应该如何表述。所以为了能够使得Ray Tracer生成高质量图片,我们必须要借助一些成熟的数学物理体系来对光的能量进行描述。辐射度量学(Radiometry)便是一个非常理想的工具。 Radiometry provides a set of ideas and mathematical tools to describe light propagation and reflection. —Pbrtv3 5.4 相关单位定义与解释首先引入一个最基本的关于辐射能量(Radiant Energy)的定义,我们用符号$Q[J=Joule]$来进行表述,他的单位则是我们自初中物理就非常熟悉的焦耳,不过在计算机图形领域,我们很少直接使用$Q$,因为这个能量很明显是和时间相关的一个量,一个物体接受光照的时间越长,其接受到的能量自然就越高。而在刨除了时间长短这影响后,我们 ...
Unreal中的碰撞响应
Created2022-12-30|Updated2024-10-20|Game Development|Unreal
虚幻中的碰撞响应总的来看,虚幻中的碰撞响应可以分为两大类,即Object Response和Trace Response。其中Object Response就是我们常见的世界中物体与物体的之间的碰撞,而Trace Response则是指与LineTrace这类射线相应, 也就是决定该物体会不会响应场景中的射线检测。更进一步用官方文档的话来总结的话就是: 碰撞响应和追踪响应构成了虚幻引擎5在运行时处理碰撞和光线投射的基础。能够碰撞的每个对象都有对象类型和一系列响应,用来定义它与所有其他对象类型交互的方式。当碰撞或重叠事件发生时,涉及的两个(或全部)对象都会发出或受到阻挡、重叠或忽略的作用。 追踪响应 的原理基本相同,唯一的区别是追踪(光线投射)本身可以定义为一种追踪响应类型,因此Actor可以根据其追踪响应阻挡或忽略。 其中Object Response负责的交互类型如下: WorldStatic: 应用于不移动的任意Actor。 WorldDynamic: WorldDynamic用于受到动画或代码的影响而移动的Actor类型。 Pawn:任何由玩家控制的实体的类型都应为Pawn ...
Compile Loop!
Created2022-12-22|Updated2024-10-20|TMP|C++
编译时计算C++的一大好处就是可以在编译时进行一些非常有意思的操作。虽然频繁的编译时计算会显著的增加编译时间,但是同样的也会减小运行时负担。当然前面这个只不过是一方面的说辞,我使用模板或者constexpr这些特性纯粹是因为这样看起来比较有趣。最近我就从Bisqwit的一个视频中学到了一个将循环转到编译时的一个小技巧。故水个博客记录一下。 所有的测试代码可以在这里找到。 1234constexpr int iter_times = 10;for (size_t i = 0; i < iter_times; ++i) { do_something(i);} 上面的这段代码是一段稀松平常的循环,我们利用for语句进行了10次循环,每次循环都去执行do_something()这个函数。首先我们先考虑怎么把这个东西用编译时循环进行展开。我们所使用的到工具叫做std::index_sequence以及std::make_index_sequence,具体的代码如下所示。 123constexpr int iter_times = 10;[&]<std ...
Parallel Algorithms in STL
Created2022-12-13|Updated2024-10-20|Programming Languages|C++
概述C++17引入了STL算法的并行化,作为一个Cpper,还是要小小的把玩一下,看看到底该怎么使用这个新特性,并且了解一下背后的实现原理。整体的测试代码可以在这里找到。 如何使用让我们以std::sort来作为一个小例子来介绍怎么将其并行化。 通常来讲如果要对一个序列进行排序的话,我们大概率会写出以下benchmark程序。 12345678for (int i = 0; i < iterationCount; ++i) { // testSize = 1'000'000; vector<double> sorted(doubles); const auto startTime = high_resolution_clock::now(); sort(sorted.begin(), sorted.end()); const auto endTime = high_resolution_clock::now(); print_results("Serial", sorted, startTime, endT ...
Concept!
Created2022-12-05|Updated2024-10-20|Programming Languages|C++
Concept简介谈及C++20,众多人都说这是能匹敌C++11的更新,而在20的众多更新中,Concept,Module,Corutine,Range被称为Big4,而今天文中主角便是Concept。 简单来说,Concept是用来限制模板中类型参数的一个语法糖,在C++20以前,如果我们想对模板参数的类型做一些限制,就得用一种叫做SFINAE的模板编程技巧,我对这个并没有太深入的理解,但是看到模板参数里面一段长长的enable_if,我还是深感其可怕。但是到了C++20,我们就可以有非常漂亮简洁的写法了(Concept:无所谓,我会出手)。 不过首先先推荐一下这个视频吧,算是我C++20的启蒙,How C++20 Changes the Way We Write Code。下面所举的例子也是视频中的例子,你可以在这里找到我写的测试代码。 关于Concept的一百种语法以及一个小例子先考虑这么一个需求,我们需要判断一个数是不是2的幂,我们可以写出以下代码。 12345template <typename T>bool is_power_of_2(T target)  ...
Chandler Carruth Talk 总结
Created2022-11-26|Updated2024-10-20|CppCon|C++
简介Chandler Carruth算是我在CppCon上面最喜欢的一个老哥,他现在是在google的llvm组做编译器相关的工作,他的talk幽默风趣,并且喜欢说一些性能优化相关的东西,作为一个cpper,我是属于听见优化就走不动道的那类人,所以他的这些视频我都觉得收益良多。故尝试对他这几年在CppCon上的会议上的视频做一个简单的总结,顺便重新学习一下,毕竟常言道,温故而知新。(顺便一提,之前挺火的那个Carbon Language也是由他上台讲的) CppCon 2014 Efficiency with Algorithms, Performance with Data Structures视频地址:https://www.youtube.com/watch?v=fHNmRkzxHWs&t=1488s 这个演讲是他目前为止在CppCon上播放量最高的一期。其主旨主要是强调两点: Efficiency with Algorithms Performance with Data Structures Carruth在这里把Efficiency解释如下: Improvi ...
重新回归Hexo!
Created2022-11-26|Updated2024-10-20|Others|Misc
在折腾了一天后,我从博客园重新回归到Hexo之中,没想到用来用去还是这个简单的静态博客最适合我,并且这次我花了点软妹币买了一个5年份的域名,希望这点支出能成为接下来更新博客的动力。 总的来看,我的博客主要关注以下几个方面: 游戏开发 个人项目以及学习记录 计算机基础知识 算法竞赛 好,那第一篇博客就先水写到这里吧,加油啊我!!
123
avatar
WeebOwO
希望有一天成为一个自己佩服的人
Articles
27
Tags
21
Categories
11
Follow Me
Announcement
Welcome!
Recent Post
《鸣潮》基于虚幻引擎4的多平台效果和性能优化实践2024-01-20
Rendering God of War Ragnarok2023-09-21
Vulkan MultiThread Tips2023-08-06
大世界渲染基础2023-07-25
后处理调研2023-06-30
Categories
  • Algorithm1
  • Computer Graphics7
  • Computer System1
  • CppCon1
  • GPU2
  • Game Development2
  • Optimization2
  • Others4
Tags
Acceleration Structure BigWorld Rendering C++ Debug GDC GameEngine Mass-Spring System Math Memory Model Misc MultiThread Mutithread Normal Mapping Optimization Physics PostProcessing Raytracing Rendering Simple Trick Unreal Vulkan
Archives
  • January 20241
  • September 20231
  • August 20231
  • July 20231
  • June 20231
  • May 20231
  • April 20234
  • March 20232
Info
Article :
27
UV :
PV :
Last Push :
©2020 - 2025 By WeebOwO
Framework Hexo|Theme Butterfly
Search
Loading the Database