装机日记!海景房定制机箱+13900k+z790+4080+64g ddr5!
好久没写博文了,写篇随笔水一下,证明一下博客还是持续在维护的。
原本用的机子还是五年前写毕设无境的时候配的,8700k+1070ti+16g,一方面是我的显示器已经逐步升级到4K了,这个配置在4K分辨率下压根带不动游戏,另一方面也方便我进一步学习UE吧。
话不多说,先上新主机配置:13900K+Z790+4080+64G DDR5 6400MHz,这个配置如果再加点钱把显卡换4090那基本就是当前消费级顶配规格了,不过,诶~我就是不加钱~
整机价格在两万出头,由于硬件价格有很强的时效属性,以及每个人喜好不一样,我就不贴价格详细了。
CPU
对于游戏党来说,I5 13490F已经足够了,按现在的CPU规格,游戏根本跑不满,CPU性能非常容易溢出(换个角度来看也是因为游戏没法完全发挥当前CPU规格的性能,在座各位游戏开发都有一份责任,当然这也是当前游戏开发的一大难题)。但在生产力方面就不一样了,CPU提升仍然能直接作用在效率上,对我来说最主要的场景就是UE编译了,因为刚需的存在,CPU我直接上到了I9 13900K,主板上Z790。
另外还有一点误区,由于AMD在5950x那一代在生产 ...
GAMES202-作业5:实时光线追踪降噪
作业总览
使用联合双边滤波实现单帧降噪。
实现两帧间的投影。
实现两帧间的累积(时域上降噪)。
Bouns 1:实现A-Trous Wavelet加速单帧降噪。
源码
GAMES101&202 Homework
作业流程
使用作业内的build.bat文件构建出作业工程,作业所有内容只需要在构建出来的工程的denoiser.cpp文件里实现,其中Filter函数实现单帧降噪,Reprojection函数实现两帧之间投影,TemporalAccumulation函数实现时域上降噪,而提高部分也是在这个文件中基于Filter函数来修改即可。
作业输入的数据需要另外在论坛下载GAMES BBS-作业5发布公告,下载后把examples文件夹放到与工程同一个目录下。
工程输入和输出都是一张张.exr图片格式的文件,为了方便观察结果,我们可以用作业内的image2video脚本把输出结果转换为视频,脚本同样要放在与工程同一个目录下。另外这个脚本要求我们电脑装有ffmpeg,没装的可以到官网上下载。
实现
联合双边滤波
对于降噪,我们可以通过滤波把噪声信号过滤掉,最简单的一种是 ...
GAMES202-作业4:Kulla-Conty BRDF
作业总览
实现预计算E(μ)E(\mu)E(μ)
实现预计算EavgE_{avg}Eavg
正确实现PBR材质
正确实现Kulla-Conty材质
Bonus 1:实现重要性采样的预计算方法
Bonus 2: 在预计算E(μ)E(\mu)E(μ)时,使用Split Sum完成预计算工作
源码
GAMES101&202 Homework
作业流程
微表面模型的 BRDF(Microfacet BRDF) 存在一个根本问题,就是忽略了微平面间的多次弹射,这就导致了材质的能量损失,并且当材质的粗糙度越高时,能量的损失会越严重。通过引入一个微表面 BRDF 的补偿项,来补偿光线的多次弹射,使得材质的渲染结果可以近似保持能量守恒,这个 BRDF 的补偿模型就是本轮作业需要重点完成的 Kulla-Conty BRDF 近似模型。
作业分为预计算和实时渲染两个部分,分别在两个工程下实现。预计算使用cmake生成对应工程,Windows环境下,可以使用git直接执行lua-gen文件夹中的test.sh即可生成,或者直接改成test.bat双击执行生成。实时渲染沿用GAMES202一 ...
GAMES202-作业3:Screen Space Ray Tracing
作业总览
实现对场景直接光照着色(考虑阴影)。
实现屏幕空间下光线的求交(SSR)。
实现对场景间接光照的着色。
Bonus 1:实现Mipmap优化的 Screen Space Ray Tracing(Hiz优化)。
源码
GAMES101&202 Homework
作业流程
只看基础部分的话,本次作业流程很简单,框架同样沿用作业1、作业2相同的框架,有了前面对这个框架熟悉的经验,我们直接看WebGLRenderer.js中的渲染流程后,就可以上手去完成这个作业了。渲染流程是这样的,第一个Shadow Pass先绘制场景的shadow map,第二个是GBuffer Pass,把shadow map,和模型的diffuse map、normal map传入shader,最后生成diffuse、depth、normal、shadow、worldPos五个GBuffer信息,最后到Camera Pass渲染最终显示内容,对应的fragment shader是ssrFragment.glsl,基础部分要实现的内容都在这个shader中实现。
作业框架也提供了3个场景供以切换 ...
GAMES202-作业2: Precomputed Radiance Transfer
作业总览
预计算球谐系数
预计算环境光投影到球谐函数上的对应的系数
预计算diffuse unshadowed情况的漫反射传输项球谐系数
预计算diffuse shadowed情况的漫反射传输项球谐系数
预计算diffuse inter-reflection情况的漫反射传输项球谐系数(Bonus 1)
实时球谐光照计算
环境光球谐旋转(Bonus 2)
源码
GAMES101&202 Homework
关于对球谐函数与PRT的理解
球谐函数
可能很多人跟我一样第一次看到这张图时都觉得它抽象到离谱,不过问题不大,作为工程师,我们应该先着重解决工程部分问题,把关于基函数怎么来、为什么等问题先抛到一边,我们只需要知道球谐函数有哪些性质,如何使用球谐函数等即可。
如果你认为自己对球谐函数的了解还是非常欠缺,那么这篇通俗而又优秀的文章可以帮到你:
球谐函数介绍(Spherical Harmonics)
202课程本身也没讨论球谐函数的基函数是怎么来的,如果你想深究其数学本质,那么可以看以下这篇文章:
球谐光照——球谐函数
PRT
当对球谐函数有基本的了解后,就可以看如何 ...
GAMES202-作业1:实时阴影
作业总览
实现Shadow Map。
实现PCF。
实现PCSS。
实现多光源和动态物体。(Bonus)
源码
GAMES101&202 Homework
关于作业框架加载不出模型
作业框架有大概率加载不出202娘,如上图所示。
12//index.html<link rel="preload" href="/assets/mary/MC003_Kozakura_Mari.png" as="image" type="image/png" crossorigin/>
解决方法是在index.html的21行加入以上代码即可,方案来自GAMES的202课程BBS帖子GAMES202 课程BBS-作业0 结果不稳定,有时模型显示不全。
关于作业框架中的ShadowMap流程
作业框架由js+webgl实现,js可能不是问题,但对于没有opengl/webgl基础的同学,毕竟在GAMES101/202没讲过图形API的使用,某些流程可能不太理解,这里对核心流程做个简单说明。
先复习 ...
修复博客Twikoo评论系统、Artitalk说说系统、Github贡献插件无法正常访问问题
前言
最近因为受未知神秘力量影响,本博客的评论系统、说说系统、首页的Github贡献,均无法从大陆ip正常访问,最近抽空进行了一波修复,顺便记录一下,分享给有需要的人。
环境
Twikoo评论系统(基于Vercel部署)
Artitalk说说系统(基于国际版LeanCloud)
Github贡献插件(Github Calendar)
本文就以上环境下无法在大陆ip正常访问的情况进行修复,若不是以上环境,可能对你帮助不大。
其中Twikoo和Github Calendar均因为Vercel无法正常访问,而Artitalk则因为国际版LeanCloud不再向大陆ip提供服务。
Twikoo评论系统
因为博主本身有一个云服务器,Vercel失效后,转为使用自己的云服务器做私有部署。部署步骤主要参考文档Twikoo私有部署。
文档钦定使用8080端口,但我尝试了一下似乎不行,没搞明白什么原因,自行更换了其他的端口后正常工作。
可能用到的命令
1234tkserver # 启动服务nohup tkserver >> tkserver.log 2>&1 & # ...
光线追踪-Ray Tracing in One Weekend 总结
关于《Ray Tracing in One Weekend》
Ray Tracing in One Weekend Book Series
《Ray Tracing in One Weekend》是一个广受好评的关于光线追踪的入门实践教程,教程手把手教你仅用几百行C++代码逐步搭建一个软件光线追踪渲染器。
这是一个系列教程,包括
《Ray Tracing in One Weekend》
《Ray Tracing: The Next Week》
《Ray Tracing: The Reset of Your Life》
关于文本
本文对该系列的第一本书《Ray Tracing in One Weekend》的最终代码进行总结,并非原文中文翻译,并且略掉教程中代码迭代过程,系个人学习笔记,建议在阅读原文后再阅读本文。
关于PPM格式
该教程采用PPM格式来输出图片,本人暂时没有找到比较合适的适用于Windows下轻量干净的PPM图片浏览器,在这推荐一个在线PPM图片网页浏览器:
https://www.cs.rhodes.edu/welshc/COMP141_F16/ppmReade ...
如何动手实现一个软渲染器
关于我实现的软渲染器
效果预览图
链接
Hana-SoftwareRenderer
开发语言:C++
开发环境:Windows 10 - Microsoft Visual Studio 2022 17.2.1
控制
按W或S可以切换场景
长按鼠标左键可以旋转摄像机
长按鼠标右键可以移动摄像机
按空格键可以复位摄像机
按A或D可以旋转灯光方向
按E可以切换阴影开关
按Q可以切换Shader
什么是软渲染
在了解什么是软渲染之前,我们首先要明白,在正常渲染流程中,有很多阶段是由GPU固定实现的,只有部分阶段可供我们进行配置和编程,那么对于不可修改的阶段,我们很多时候只能从书本上通过理论知识去了解片面的内容,对于更加详细的细节想必是抱有一定的疑问的。
写软渲染器就是我们自己用代码去模拟这个流程,通过自己动手实现一遍,去彻底理清GPU究竟帮我们做了什么步骤,这就是我们写软渲染的学习目的(当然,只是在理解基本步骤上)。
软渲染的实现过程大致是这样:
我们只借助一个画像素点的API,其余一切自己实现,最终达到最后一张图片的效果,这是我们的实现目的。
前置知识
除了基本的C++基础外,写软 ...
记录租屋人的一次乔迁
不知不觉来深圳已经一年了,原本的公寓签约也到期了,再加上感觉住的不是很满意,原本的公寓是个15方的小单间,离公司步行半小时左右的距离,计划换一个大一点或者距离近一点的房子。这篇文章就对这次愉快的乔迁做一个记录吧!
怎么找房源
这方面个人经验有限,总的来说方法可以分三类:
首先从安居客这类APP上了解一下符合最基本的条件的房源,了解周边房源的价格、条件等,APP上的房源信息在广度上是最广的,但可能不是真实的,或者是滞后的。等有一个大概认知后,可以联系这些APP上发放这些房源信息的中介,加他们微信让他们发手上的房源视频以及报价给你,多加几个中介,进一步了解现有的真实房源信息。
实地考察,在租房APP了解到哪些小区在出租的房子比较多,可以直接去实地问小区保安之类的看看有没有房源,通常可以得到APP上没有的房源信息。
豆瓣租房小组!在豆瓣上找到当地的租房小组,留意上面的转租信息,实际上你很容易了解到的房源通常都不是性价比高的房源,一方面常年对外出租基本都是商业公寓,性价比肯定不高,另一方面性价比高的房子换租率低,抢手,个人想留意到这种房子目前我了解到的最好的方式就是定期留意豆瓣租房小组里的转 ...