<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shadow-lr的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/lr_shadow</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; lr_shadow]]></copyright><item><title><![CDATA[公司的毕业生封闭培训有感]]></title><link>https://blog.csdn.net/lr_shadow/article/details/126005002</link><guid>https://blog.csdn.net/lr_shadow/article/details/126005002</guid><author>lr_shadow</author><pubDate>Wed, 27 Jul 2022 00:24:52 +0800</pubDate><description><![CDATA[培训结束后，我找到了leader对工作中的问题，提出了我心中的几个困惑点，不管怎么说，我觉得对于新人来说，保持对导师一周至少一次、对leader一个月至少一次的沟通机会是特别有帮助的。Q作为一个秘书，上司吩咐你需要通知所有参与会议的经理打印资料，你再三地在通知群说了两遍，并且用红字标明事情的重要性，但结果到开会的时候，很多经理却并没有打印资料，你觉得这是谁的错？找到了培训所在班的大巴，咦~居然有六个班，每个班五十多号人，好多。Q程序员35岁年龄问题（提问题的是一个27岁的同学）...]]></description><category></category></item><item><title><![CDATA[光线追踪学习：Oren-Nayar Reflectance model]]></title><link>https://blog.csdn.net/lr_shadow/article/details/124938722</link><guid>https://blog.csdn.net/lr_shadow/article/details/124938722</guid><author>lr_shadow</author><pubDate>Tue, 24 May 2022 10:00:00 +0800</pubDate><description><![CDATA[光线追踪学习之Oren-Nayar Reflectance model
Microfacet Models(微表面模型)
许多基于几何光学的表面反射和透射建模方法都是基于这样的想法：粗糙的表面可以被建模为小的微孔的集合。
下图显示了一个相对粗糙的表面和一个更光滑的微平面表面的横截面。为了区别，使用术语microsurface来描述microfacet表面和macrosurface来描述下面的光滑表面。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYkLWofO-16533]]></description><category></category></item><item><title><![CDATA[c++中返回值优化（RVO）和命名返回值优化（NRVO）介绍]]></title><link>https://blog.csdn.net/lr_shadow/article/details/123332927</link><guid>https://blog.csdn.net/lr_shadow/article/details/123332927</guid><author>lr_shadow</author><pubDate>Mon, 07 Mar 2022 16:10:37 +0800</pubDate><description><![CDATA[RVO和NRVO介绍
前言
半年前就想写一篇关于RVO和NRVO的介绍，但碍于没什么时间去写博客。在跟身边人进行学术探讨的时候，会发现部分人可能尝到了编译器给它做返回值优化的好处，知道这段代码被优化了，但为什么 如何去做，却不知道。
因此，为了尝试说明RVO和NRVO的好处、使用场景、局限性等，在看了数个StackOverflow的讨论之后，有了这篇博客。
RVO(返回值优化(Return Value Optimization))

如果函数返回一个无名的临时对象，该对象将被编译器移动或拷贝到目标中，在此时]]></description><category></category></item><item><title><![CDATA[Unreal Engine 字符串常用转换方法 总结]]></title><link>https://blog.csdn.net/lr_shadow/article/details/122990824</link><guid>https://blog.csdn.net/lr_shadow/article/details/122990824</guid><author>lr_shadow</author><pubDate>Thu, 17 Feb 2022 20:00:27 +0800</pubDate><description><![CDATA[UE字符串的 常用转换方式 记录]]></description><category></category></item><item><title><![CDATA[c++ 聚合/POD/平凡/标准布局 介绍]]></title><link>https://blog.csdn.net/lr_shadow/article/details/122980868</link><guid>https://blog.csdn.net/lr_shadow/article/details/122980868</guid><author>lr_shadow</author><pubDate>Thu, 17 Feb 2022 12:52:10 +0800</pubDate><description><![CDATA[聚合/POD/平凡/标准布局 介绍]]></description><category></category></item><item><title><![CDATA[C++ 特性进阶学习总结（一）（三/五/零之法则、RAII、CRTP、RTTI、RTTR）]]></title><link>https://blog.csdn.net/lr_shadow/article/details/122277999</link><guid>https://blog.csdn.net/lr_shadow/article/details/122277999</guid><author>lr_shadow</author><pubDate>Fri, 11 Feb 2022 13:26:58 +0800</pubDate><description><![CDATA[三/五/零之法则、CRTP、RAII、RTT、类型擦除、auto与std::vector<bool::reference、不能有const_cast<>(T)的原因，c++20初始化表达式]]></description><category></category></item><item><title><![CDATA[记录自己Unreal Engine配置中出现过的问题]]></title><link>https://blog.csdn.net/lr_shadow/article/details/122242229</link><guid>https://blog.csdn.net/lr_shadow/article/details/122242229</guid><author>lr_shadow</author><pubDate>Thu, 30 Dec 2021 17:45:30 +0800</pubDate><description><![CDATA[此文会持续更新，记录遇到的奇怪事情：）

编UE的时候（dll经常会编译失败）【md，编几小时已经够折磨了，还犯病】，直接把dll删了，重新编（快速有效）

通过.uproject生成的解决方案有Client和Editor，Client不经常用（看项目情况），如果没有使用到Client，选了这个解决方案，就出以下问题，切到Editor模式即可



...]]></description><category></category></item><item><title><![CDATA[More Effective C++ 条款（1-11）总结]]></title><link>https://blog.csdn.net/lr_shadow/article/details/122110522</link><guid>https://blog.csdn.net/lr_shadow/article/details/122110522</guid><author>lr_shadow</author><pubDate>Thu, 23 Dec 2021 16:18:56 +0800</pubDate><description><![CDATA[More Effective C++ 基础议题（条款1-4）总结
条款1：仔细区别pointers和references

如果有一个变量，其目的是用来指向（代表）另一个对象，但是也有可能它不指向（代表）这个变量，那么应该使用pointer，因为可将pointer设为null，反之设计不允许变量为null，那么使用reference
以下这是有害的行为，其结果不可预期（C++对此没有定义），编译器可以产生任何可能的输出

    char *pc = 0;       // 将 pointer 设定为nul]]></description><category></category></item><item><title><![CDATA[记录自己VS配置中出现过的问题]]></title><link>https://blog.csdn.net/lr_shadow/article/details/121884559</link><guid>https://blog.csdn.net/lr_shadow/article/details/121884559</guid><author>lr_shadow</author><pubDate>Sun, 12 Dec 2021 11:10:49 +0800</pubDate><description><![CDATA[此文会持续更新，记录遇到的奇怪事情：）

github拉下来的proj，build生成的.lib放进个人项目中就会出错，检查项目的运行时库是否对应（MT/DLL）


]]></description><category></category></item><item><title><![CDATA[Vulkan中shader glsl编spv spv反编译glsl方式]]></title><link>https://blog.csdn.net/lr_shadow/article/details/121314866</link><guid>https://blog.csdn.net/lr_shadow/article/details/121314866</guid><author>lr_shadow</author><pubDate>Sun, 14 Nov 2021 10:42:39 +0800</pubDate><description><![CDATA[前言
由于我经常容易遗忘编译的方式，故在此进行记录，因为用Vulkan做RayTracing，所以传统的glslc因version不够会经常报错，识别不到GL_EXT_ray_tracing等东西
GLSL-&gt;SPV
github上找到的一个库，spirv-cross，clone后，cd在SPIRV-Cross\目录，然后输入以下命令即可，封装成.bat
set shader_path=B:\repos\Vulkan\src\RayTracing\assets\shaders
glslangValid]]></description><category></category></item><item><title><![CDATA[vcpkg安装Building package brotli:x64-windows failed with: BUILD_FAILED问题缺失applocal.ps1]]></title><link>https://blog.csdn.net/lr_shadow/article/details/120842011</link><guid>https://blog.csdn.net/lr_shadow/article/details/120842011</guid><author>lr_shadow</author><pubDate>Tue, 19 Oct 2021 10:57:36 +0800</pubDate><description><![CDATA[前言
在输入.\vcpkg.exe install brotli:x64-windows后看到如下提示，于是去看log
发现提示vcpkg/scripts/buildsystems/msbuild/applocal.ps1' is not recognized as the name of a script file，原来是这个文件缺失了，于是直接去vcpkg官网去补充这个文件，最终好了https://github.com/microsoft/vcpkg/blob/9b4535e7ee7673fb8515d]]></description><category></category></item><item><title><![CDATA[Microfacet模型采样下的brdf]]></title><link>https://blog.csdn.net/lr_shadow/article/details/120507348</link><guid>https://blog.csdn.net/lr_shadow/article/details/120507348</guid><author>lr_shadow</author><pubDate>Mon, 27 Sep 2021 14:09:54 +0800</pubDate><description><![CDATA[本文前言
在学习图形学（games101 from bilibili）的时候，也遇到了像这样的问题，Cook-Torrance模型无法实现粗糙度为0时，物体微表面呈现绝对镜面的效果（呈现出一面镜子），为了搜寻解决办法，因此看到了这篇博客，因为是全英文，所以就花了一点时间翻译了一下，方便日后重新观看，红色字对原博客的补充说明
前言
最近我正在为我的渲染器开发microfacet brdf模型，我注意到为microfacet brdf提供一个单独的采样方法是非常必要的，而不是使用默认的方法，因为默认的方法通常用]]></description><category></category></item><item><title><![CDATA[低差异序列 (low-discrepancy sequences)之Halton序列均匀产生多维随机数的介绍与实现]]></title><link>https://blog.csdn.net/lr_shadow/article/details/120455297</link><guid>https://blog.csdn.net/lr_shadow/article/details/120455297</guid><author>lr_shadow</author><pubDate>Fri, 24 Sep 2021 16:25:59 +0800</pubDate><description><![CDATA[Halton序列
在统计学中，Halton序列是用于生成空间中的点的序列，如Monte Carlo模拟的数值方法，虽然这些序列是确定性的，但它们的差异性很低，也就是说，在许多方面看起来是随机的。它们在1960年首次提出，是准随机数列的一个例子。它们概括了一维Van der Corput序列
用于生成R2R^2R2中(0,1)x(0,1)点的Halton序列的例子
Haton数列是根据一种确定性的方法构建的，它使用共素数作为基数。作为一个简单的例子，让我们把Halton数列的一个维度基于2，另一个基于3。为了]]></description><category></category></item><item><title><![CDATA[低差异序列 (low-discrepancy sequences)之Hammerysley在半球中采样点方法的介绍]]></title><link>https://blog.csdn.net/lr_shadow/article/details/120446814</link><guid>https://blog.csdn.net/lr_shadow/article/details/120446814</guid><author>lr_shadow</author><pubDate>Fri, 24 Sep 2021 01:48:01 +0800</pubDate><description><![CDATA[半球上的Hammersley
Holger Dammertz
一组关于如何在2D中使用Hammersley点集以在着色器程序中快速实用地生成半球方向的笔记。如果你发现任何错误或有意见，不要犹豫，请联系我或在我的博客上留言。
1.概述
在编写与光照有关的着色器时，人们经常需要一些以表面法线为方向的半球方向。通常的做法是预先计算这些方向，并将它们存储在一个静态/统一的数组中，或者创建一个包含这些方向的可查询的纹理。在这一页，我研究了如何在着色器中直接使用2d中的Hammersley点集来快速计算合理的分布方向。]]></description><category></category></item><item><title><![CDATA[【光线追踪】 流程分析与实现的路径跟踪渲染器]]></title><link>https://blog.csdn.net/lr_shadow/article/details/120378237</link><guid>https://blog.csdn.net/lr_shadow/article/details/120378237</guid><author>lr_shadow</author><pubDate>Sun, 19 Sep 2021 10:51:09 +0800</pubDate><description><![CDATA[前言
搞光追是图形学的浪漫，先放张目前渲染图，分析了部分代码框架，后续补上完整
效果
左边黄色球是Blinn-Phong，右边是Microfacet
BVH，1024x1024，200spp，2x2MSAA，VS Omp32线程，渲染了二十三分钟

基于games101作业7的作业框架

...]]></description><category></category></item><item><title><![CDATA[回顾games101中的SSAA和MSAA]]></title><link>https://blog.csdn.net/lr_shadow/article/details/119968942</link><guid>https://blog.csdn.net/lr_shadow/article/details/119968942</guid><author>lr_shadow</author><pubDate>Sat, 28 Aug 2021 15:43:36 +0800</pubDate><description><![CDATA[回顾games101中的AA（抗锯齿）
前言
善于进行课后总结，可以更加巩固自己的知识和具体细节
锯齿（走样）产生的原因
本质上，在光栅化阶段中，用有限离散的数据想表示连续的（类似三角形的某一边），就可能存在采样点不够的问题，也就引申出了锯齿（走样 Aliasing）的这个概念，在信号处理以及相关领域中，走样（混叠）在对不同的信号进行采样时，导致得出的信号相同的现象。它也可以指信号从采样点重新信号导致的跟原始信号不匹配的瑕疵
具体到实时渲染领域中，走样有以下三种：[3]

几何体走样（几何物体的边缘有锯齿）]]></description><category></category></item><item><title><![CDATA[回顾Games101图形学（一）几何变换中一些公式的推导]]></title><link>https://blog.csdn.net/lr_shadow/article/details/118190108</link><guid>https://blog.csdn.net/lr_shadow/article/details/118190108</guid><author>lr_shadow</author><pubDate>Thu, 24 Jun 2021 16:22:38 +0800</pubDate><description><![CDATA[回顾Games101 chatper1 - 6
前言
本文只写回顾后重新加深认识的知识
透视除法的意义
经过MVP矩阵之后，将模型空间下某点的坐标，转换成了裁剪空间下的坐标，此时因为裁剪空间的范围是x∈[-W/2，W/2]和y∈[-H/2，H/2]，所以经过以下两个变换，其中除以pz就是透视除法
一：
−1≤2⋅(pxpz⋅near)w≤1−1≤2⋅(pypz⋅near)h≤1
-1≤2·\frac{\left( \frac{p_x}{p_z}·near \right)}{w}≤1
\\
-1≤2·\fra]]></description><category></category></item><item><title><![CDATA[vscode 配置lua环境的步骤]]></title><link>https://blog.csdn.net/lr_shadow/article/details/117730466</link><guid>https://blog.csdn.net/lr_shadow/article/details/117730466</guid><author>lr_shadow</author><pubDate>Wed, 09 Jun 2021 09:24:25 +0800</pubDate><description><![CDATA[前言
vscode中code runner无法正常运行lua的问题
下载lua
首先去官网下载lua的压缩包
http://joedf.ahkscript.org/LuaBuilds/

编辑系统环境
将压缩包解压后，添加到系统环境中


Code Runner编辑
输入ex搜索Executor Map

点击Edit in settings.json
最后更换"lua":“D:\Lua\lua.exe” 后面换成前面压缩包解压的路径

然后就可以了


...]]></description><category></category></item><item><title><![CDATA[C++STL—pair＜int,int＞与unordered_map的结合使用]]></title><link>https://blog.csdn.net/lr_shadow/article/details/115864228</link><guid>https://blog.csdn.net/lr_shadow/article/details/115864228</guid><author>lr_shadow</author><pubDate>Mon, 19 Apr 2021 14:39:31 +0800</pubDate><description><![CDATA[因为unordered_map内部是由哈希表实现的，哈希表中的每一项为一个桶，分别装着键和值，原stl中不包含pair&lt;int,int&gt;类型的键，所以需要自定义
#include &lt;bits/stdc++.h&gt;
using namespace std;

// 分别计算出内置类型的 Hash Value 然后对它们进行 Combine 得到一个哈希值
// 一般直接采用移位加异或（XOR）得到哈希值
struct HashFunc
{
	template&lt;typename T,]]></description><category></category></item><item><title><![CDATA[高斯模糊介绍]]></title><link>https://blog.csdn.net/lr_shadow/article/details/114936866</link><guid>https://blog.csdn.net/lr_shadow/article/details/114936866</guid><author>lr_shadow</author><pubDate>Wed, 17 Mar 2021 16:38:30 +0800</pubDate><description><![CDATA[转自：1.高斯模糊的算法：http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html 
&nbsp; 
通常，图像处理软件会提供"模糊"（blur）滤镜，使图片产生模糊的效果。 
&nbsp; 
 
"模糊"的算法有很多种，其中有一种叫做"高斯模糊"（Gaussian Blur）。它将正态分布（又名"高斯分布"）用于图像处理。 
 
本文介绍...]]></description><category></category></item></channel></rss>