跳转至

十月 2023

元宇宙杂谈

这周被抓到上海参加集训,有个游戏相关的研究汇报,本来想着通过脑袋瓜里的一些硬通货,秀下肌肉,结果一上台就猿形毕露,重点重点没说,还尬住好几回,白瞎了组内小伙伴的协助以及连夜赶的PPT,果然我目前还是只能写点技术小作文。

长期的闭门造车,导致了口述能力很差,思维跳脱,情商又低,这次可以说是充满遗憾~

很多同学了解到 元宇宙(Metaverse) ,可能是从电影《头号玩家》所呈现出来的效果,也有来自于扎克伯格对于元宇宙的阐述,但实际上,元 这个概念,在人类近代社会发展中,已经有了非常成熟的应用。

那什么是元呢?

Qt 3D UI

整了个花活0.0,在没改Qt源码的情况下,可以很轻松地将一个QWidget进行3D变换。 原理:

  • 通过前后两个四边形区域算出中心投影变换矩阵

  • 利用中心投影变换矩阵在QApplication中重新映射鼠标位置相关的事件

  • 通过QRHI和GraphicsEffect的机制,结合变换矩阵,重新绘制图像

  • 根据目标四边形的位置,自动伸缩绘制区域 目前还有一些问题:

  • 弹出窗口的位置有偏差

  • 焦点事件也对不上

不过现在能做好多有意思的东西了~

开放世界杂谈

开放世界(Open World) 是一个玩家可以在自由地实现目标的虚拟世界,而不是具有更线性和结构化游戏玩法的世界。其中的著名游戏包括《塞尔达传说》《侠盗猎车手》《荒野大镖客》《上古卷轴》《我的世界》《艾尔登法环》...

开放世界的重点在于开放性,因此开放世界游戏一般在在内存上会动态且无缝的加载游戏世界,这类游戏的主要吸引力在于为玩家提供自主权,使得游戏进程可以按玩家预期的顺序和方式来推进,但不是在游戏中可以做他们想做的任何事情(这在当下的计算机技术几乎是不可能的)。

——摘自 《Wiki - Openg World》

关于开放世界的关卡设计,这里有一些非常优秀的文档:

笔者是一名入行不久的引擎工程师,本文主要用于记录和讨论,将以程序开发的视角去剖析开放世界,一些想法和思考方式可能过于片面,欢迎大家指正。

国庆内卷

国庆疯狂卷了5000+行代码0.0

把RenderGraph重构了一遍,之前的RenderGraph仅仅是实现了一个便于构造依赖图的结构

重构之后增加了以下功能:

  • 异步执行渲染组织逻辑,借助QObject的ThreadQueue机制来完成线程间的数据通信。
  • 在RenderGraph中对资源进行了封装,该层面的代码并不直接创建RHI资源,每帧的setup阶段只是创建资源描述,在complie阶段会对资源进行绑定和重建,可以通过资源池对无引用的资源进行复用,并调整了编辑器上的预览视图。
  • 封装PrimitiveRenderProxy,主要用于搭建MeshPass(BasePass)中的渲染结构,它可以复用几何数据和流水线结构,来达到外部调用 drawAllMesh(OverrideFragmentShader, OverrideUniformBuffer,OverridePipelineState)的效果,目前用于鼠标的点选机制,后续将用于ShadowMap,屏幕空间反射效果的实现。

明天看下能不能把文章给赶完,忙不过来就得等到下周,弄完这篇文章我可能要跳票了~

preview

preview