当前位置: 首页 > news >正文

qq创号申请注册网站在网站添加邮箱

qq创号申请注册网站,在网站添加邮箱,sem优化软件选哪家,十堰微网站建设电话讨论了优化和速度问题#xff0c;以便简化调试过程 节目以一个有趣的类比开始#xff0c;提到就像某些高端餐厅那样#xff0c;菜单上充满了听起来陌生或不太清楚的描述#xff0c;需要依靠服务员进一步解释。虽然这听起来有些奇怪#xff0c;但实际上#xff0c;它反映…讨论了优化和速度问题以便简化调试过程 节目以一个有趣的类比开始提到就像某些高端餐厅那样菜单上充满了听起来陌生或不太清楚的描述需要依靠服务员进一步解释。虽然这听起来有些奇怪但实际上它反映了本期的开发过程没有现成的工具而是全程手动开发。开发者虽然没有顶楼花园但他们自己编写的代码和图形纹理就像这些高端餐厅里的自家种植的食材一样确保质量。 当前阶段开发者已经编写了自己的纹理映射和渲染器并且做了许多优化。然而尽管优化带来了性能提升但调试时开启优化后的构建会让代码执行变得过于跳跃难以通过单步调试来演示。为了解决这一问题开发者正在考虑是否应该调整优化策略。虽然一部分开发者认为此时不应进行过早的优化因为可能会在后续开发中发现其他需要改进的地方另一部分开发者则认为进行优化后即使需要重新优化也无妨毕竟可以在这个过程中向观众展示优化的步骤和技巧。 总的来说虽然目前的开发过程存在一些优化和调试的挑战但通过这种完全自定义的方式可以让开发者充分控制整个游戏引擎的构建过程并在此过程中与观众分享经验和技巧。 提出了两种可能的方向渲染器特性… 在接下来的开发过程中存在两个主要的方向。第一个方向是为当前的渲染器增加一些新的功能并思考如何在不优化代码的情况下实现这些功能以便能够逐步调试并演示。当前的渲染器还缺少两个主要的功能其中一个是确保像素填充的定义更加严格以及纹理如何应用到这些像素上的规则。 在最初实现时代码的设计是为了尽快让功能能够运行而不是过于纠结于每个细节。这种做法在初期阶段是合理的因为目的是确保基础功能能快速实现。然而在开发进一步功能之前最好先明确像素填充的规则并对纹理的获取方式进行严格的定义。这包括如何选择纹理、如何应用纹理到像素以及具体的操作规则。这样可以确保在后续开发时基础的渲染逻辑是健全的避免后期修改时出现问题。 …或者是光照控制 目前已经实现了色调控制、透明度控制、缩放和旋转等功能这些功能大致上满足了游戏的需求。然而仍然缺少一个重要的功能——光照控制。具体来说如果想要根据方向光源或区域光源来改变精灵的像素目前的渲染系统无法有效地处理这一需求。因此在优化纹理填充的过程中考虑增加光照控制功能显得尤为重要。 在现有的基础上虽然已经实现了平滑旋转和其他基本效果但要让游戏更加生动和富有动感增加一些动态光照效果将是一个重要的步骤。这样可以让游戏中的物体在光照下有更多的变化和表现使其更加细腻和真实。因此考虑如何在当前系统中加入光照效果能够提升渲染的质量为游戏增添更多的视觉效果。 建议关闭除树木之外的所有内容 为了避免性能问题可以考虑暂时关闭游戏中的其他功能只渲染一两个主要的元素比如一个树。这样做可以避免复杂的渲染计算从而减少性能压力因为如果只渲染非常小的一部分性能问题就不大。接着应该专注于实现光照功能并确保亚像素计算准确无误直到这些功能完善且稳定为止。 在确保这些基础功能正确运行之后再开始对渲染进行优化这样的步骤相对安全。通过这种方式可以逐步完成渲染系统的功能并确保每个部分的稳定性和效果。 审查game_render_group中的内容 在代码中渲染系统通过分组的方式构建出要渲染的内容并在执行时逐个渲染。当前的测试项目涉及到旋转和缩放使用了一个坐标系统来进行测试允许指定坐标并对矩形进行变换。这个过程进行得很顺利。 然而问题在于目前的复杂代码都在同一条路径下运行而其他未进行旋转和缩放处理的代码路径较为简单且速度较慢。后者并没有进行复杂的变换操作因此执行效率较低。这意味着虽然现在的代码路径实现了基本的功能但它们并没有像当前的测试项目那样进行额外的变换处理。 关闭DrawBitmap修改难看的粉色背景并切换到调试模式编译 如果完全去除DrawBitmap的代码那么运行程序时只会看到树和一个令人不悦的粉色背景。如果保留矩形轮廓仍会看到这些元素。背景色可以调整为灰色或其他颜色这样就能更灵活地调整显示效果。 如果关闭编译器优化请求就能得到较慢的版本运行这对当前的开发来说并不构成问题。因此认为这样的方法是可行的可以继续在这个状态下工作几天添加新特性等到功能完善后再转向优化。除非有特别的顾虑否则这种方式似乎是合理的。 停止树木旋转 首先暂时不再需要旋转功能所以决定停用旋转功能。现在树木就直接处于直立位置。停止透明度变化 接下来想要引入光照的概念。虽然会详细讨论一些内容但首先需要开始思考要在光照方面实现哪些功能。 黑板‘光照是图形的声音’——Doug Church 讨论了光照的重要性。有一位名叫Doug Church的人曾提到“光照是图形的声音”这句话虽然在当时可能显得有些奇怪但现在看起来已成为经典名言。Doug Church当时的意思是如果没有光照游戏中的图像会显得非常平坦就像是颜色的简单排列缺乏深度和空间感。而引入阴影图等光照效果后能够大大改变游戏的表现因为光线如何与空间互动能让空间看起来更生动、真实且具有深度。 他通过将光照与声音进行类比指出如果没有声音游戏的体验会变得差很多尽管玩家可能没有意识到这一点。优秀的音效能提升游戏的表现同样良好的光照效果能让图像更有生气和层次感。尤其在3D游戏中光照的作用更加突出因为它能够为艺术资源带来更大的表现力使得环境看起来更为真实和有维度。 黑板动态光照 尽管在2D游戏中光照效果不像在3D游戏中那么重要但动态光照仍然能够为游戏增色带来很多视觉上的强调效果。例如在一个有许多树木的场景中如果树木周围有篝火光照会随着火焰的闪烁在树木上投射这种效果能大大提升场景的氛围。同样如果游戏中有一个愤怒的巫师他施放火球时火球的光亮照射到周围的树木上也能让光线在树木间来回变化从而加强火球的运动感并让所有元素看起来处于同一个空间中。 此外光的缺失也能用来讲述故事。比如当某个庞大的物体的影子笼罩在空间中时这种暗影变化同样能够传达氛围和情感。这些例子都说明即便是在2D游戏中动态光照的控制也是有意义的它能够提升游戏的表现力和代入感。 黑板光照本质上是‘方向性的’效果 光照本质上是一个方向性的效果意味着光线沿着直线路径传播这与现实世界中的光传播方式相符。光线从光源出发经过反射和折射最终到达观察者的眼睛。眼睛通过收集这些光子来构建图像。因此照明效果的关键在于光线的传播方向这使得实现正确的照明非常复杂。 要进行真实的光照计算需要处理很多复杂的因素。光线从光源发出经过多个表面的反射和折射最终进入眼睛而这些过程涉及大量的计算。如果要完全准确地模拟光线的行为照明的实现会变得异常复杂因为每个表面反射的光线方向和强度都会影响最终图像的呈现。 黑板波长 在这个简单的照明模型中光线从太阳发出照射到一个表面上然后反射到眼睛最终在视网膜上形成图像。即使是这种简化的情况计算照明仍然非常复杂。大多数表面在光照射时会将光线散射到多个方向因此难以准确计算。 光线的波长决定了我们所看到的颜色。光波是振荡的就像正弦波一样光的振荡速度和波长会随着光源的不同而变化。波长的变化决定了我们看到的颜色范围包括不可见的红外线、紫外线等。虽然我们无法直接看到这些不可见的光线但它们可以通过与其他物质的相互作用转变为可见光。 光的颜色并不是由红、绿、蓝三种颜色组成的。实际上光是连续的可以表示任何颜色而RGB模式只是为了适应显示技术的需求。每种颜色都有其独特的波长并且可以通过这些波长来表示不同的颜色。 黑板RGB颜色感应器 RGB被广泛使用的原因是因为人眼的感光细胞只对红、绿、蓝三个波段的光敏感。在视网膜中有三种感光细胞分别对红光、绿光和蓝光敏感。每种感光细胞并不是只对某一特定波长的光做出反应而是对接近其感应波长的光产生较强的反应离其波长越远的光产生的反应则越弱。大脑通过分析这些感光细胞的活动来推断光的波长从而识别不同的颜色。 当不同波长的光照射到视网膜时感光细胞会根据光的波长产生不同的反应。例如蓝色和绿色的光会同时刺激蓝色和绿色的感光细胞而大脑将其识别为一种混合色。当有多种波长的光同时进入眼睛时感光细胞的反应会结合起来例如白光就包含了不同波长的光刺激了红、绿、蓝三种感光细胞。 RGB的颜色表示方法非常有效因为它能够模拟人眼的感光机制。通过控制红、绿、蓝光的输出可以让眼睛误以为看到了其他颜色比如通过同时发出红光和绿光可以让眼睛感知到黄色尽管实际发出的并不是黄色光。这种方法是通过刺激不同的感光细胞使其混合反应从而产生我们所见的颜色。 有些动物拥有比人类更多种类的感光细胞因此它们对光的感知方式不同。如果这些动物看我们的显示器它们可能会觉得显示器上的颜色与现实世界大不相同。 黑板不要和拥有更多颜色波长传感器的动物交谈 一个重要的教训是不要和那些拥有更多色觉感光细胞或更广泛光波长感应器的动物交谈。与这些动物交谈可能会带来不必要的麻烦因此不值得去尝试。至于接下来的内容尽管这一点是最重要的但仍然要继续前进尽量在剩下的时间内深入探讨实际的照明问题。 黑板我们看到的是所有光源将光散射到我们眼睛中的聚合效果 光的波长从光源入射碰到表面后会在各个方向上散射其中一些会朝着眼睛的方向散射。问题在于这种散射对于任何入射方向都是适用的。如果有第二个光源比如如果有第二个光源它也会像第一个光源一样向表面散射光线。它也会向眼睛散射光。人眼看到的并不是单一光源的光而是所有光源的光聚合效应。 即使只有一个太阳周围的物体也会反射光线许多反射的光会再次回到观察点并散射到眼睛。因此要计算世界上某一点的正确照明实际上需要计算从该点发出所有方向的入射光这是一个极其困难的问题。这也是为什么准确的光照在计算机图形学中是最难实现的任务之一。 黑板次表面散射 光线不仅仅是反射在表面上它实际上会穿透表面并进入到物体内部然后再反弹出来。当光线接触到一个真实的表面时表面通常是有厚度的可能像蜡一样复杂。当光子到达表面时它们会穿透表面可能在内部发生反射最终光线会从物体内部出来并散射到眼睛。这种现象被称为“次表面散射”Subsurface Scattering。 如果要准确计算光照不仅需要知道所有可能从外部射向眼睛的光线还需要了解所有可能从物体内部射向眼睛的光线。虽然很多物体是如此不透明以至于不需要考虑物体内部的光线但如果想要准确处理如蜡、水或其他透明或半透明物质的光照就必须考虑到这些次表面散射的效果。 黑板是什么让表面看起来不同 物体表面看起来不同的原因在于它们如何处理光子。不同表面对光线的反射方式有所不同关键在于光的入射角度光源发出的光与表面之间的角度和观察角度观察者眼睛与表面之间的角度。每个表面对于不同的光入射角度和观察角度反射的光的比例也会有所不同这控制了表面在视觉上的表现。 为了准确描述这一过程必须使用一个二维函数来表示每个入射角度和观察角度的光反射百分比。所有光线的反射量加起来通常为100%但因为表面也会吸收一些光因此实际反射光的比例会少于100%。这个函数决定了表面的外观而不同表面可能在处理不同波长的光时有不同的效果这也是需要考虑的细节。 在实际计算中由于光线的行为非常复杂精确的渲染通常会采用更简化的模型。在实时渲染中不会尝试进行如此复杂的计算而是使用一些近似方法来在性能上做出妥协。为了处理光线的传播和反射实际应用中可能会简化为使用RGB等颜色空间来近似光的传播行为尽管这并不是最精确的方式。 黑板我们实际上想要的是什么样的表面 在考虑表面的类型时通常关注三种表面漫反射表面、光泽表面和反射表面。 漫反射表面这种表面类似于粉笔它不具有明显的高光。光线射入后会在所有方向上均匀散射不会偏向某个特定方向。其特性是光的散射是分布均匀的。 反射表面这种表面类似于镜子当光线照射到它上面时光线会直接反射回来几乎没有光线进入或散射到其他方向。反射表面是典型的镜面反射眼睛看到的图像非常清晰几乎就像没有表面一样。 光泽表面这种表面介于漫反射和反射之间。当光线照射到表面时大部分光线会反射回去但仍然有一部分会散射到其他方向。这种表面通常具有一个明显的反射中心光泽而四周的反射则较弱形成一个反射的“光环”。 这些表面是艺术创作中常用的因为它们能够通过合适的近似效果在游戏中呈现出更真实的视觉效果。 黑板近似方法 在早期由于计算机处理能力有限光照效果通常使用非常简单的近似方法。这些方法没有考虑复杂的光传播过程而是通过简单的计算来模拟光的反射。最常见的做法是仅考虑一个点光源光线从光源射向表面然后反射回来。此时光照效果主要通过控制反射角度和光线强度来实现通常会有一个衰减系数来决定光斑的尖锐度。 这种方法看起来就像是有人用手电筒照射物体表面上只有一个光源反射光线通常较为尖锐阴影也很硬。这种简单的模型通过调整反射角度和亮度衰减来呈现表面的光泽感或阴影变化但它也会带来一些问题比如表面没有来自其他方向的光照阴影部分会显得非常黑暗除非添加一些假的光源来弥补。 然而对于早期的二维艺术作品来说这种近似的光照方法是可以接受的。由于艺术已经绘制了很多光照效果光照系统不需要精确重建整个场景的光照而是通过覆盖一些高光区域并让艺术本身的环境光处理其他细节这样就能够达到较为合适的效果。因此这种简单的光照方法在当时是可行的。 黑板‘光探针’或间接光采样 随着计算能力的提升现代光照的近似方法不再仅仅依赖于单一的点光源而是引入了“光探针”light probes技术来解决传统方法的局限性。传统的方法将光源视为单个点这样无法准确模拟真实世界的光照因为光线来自各个方向而不仅仅是某个点或少数几个点。 为了更真实地模拟光照效果现代方法通过使用间接光采样来捕捉多个方向的光照信息。例如一种常见的做法是使用六个面向不同方向的立方体贴图来捕捉周围环境的光照信息。这种方法的本质是将周围的光照压缩成一个查找表方便快速访问和计算。 接下来通过对这些立方体贴图进行降采样例如将256x256x256的分辨率降至128x128x128甚至更低可以得到不同清晰度的光照图像。较低分辨率的贴图通常表示环境中的平均光照而高分辨率的贴图则更加精细适用于反射较强的表面。 通过这种方式可以模拟不同类型的表面反射。例如对于一个光滑的表面可以使用高分辨率的光探针来计算反射光而对于一个粗糙的表面则使用低分辨率的光探针来模拟较为平均的光照。这种方法使得在三维环境中能够较为精准地模拟各种光照效果尤其是在实时渲染中能够在不进行复杂计算的情况下实现较为真实的光照效果。 总体来说光探针技术为光照的近似计算提供了一种有效的解决方案使得即便在计算资源有限的情况下依然能够实现较为真实的光照表现。 黑板我们在2D中如何处理 在二维渲染中面临两个主要问题 首先在三维中每个表面都是多边形的可以明确知道它们的形状、方向和其他重要信息因此可以方便地计算表面的光照和反射。然而在二维渲染中并没有明确的表面定义。即使我们看到一个物体例如一棵树也只是看到了不同的颜色变化而大脑通过颜色的变化推测出树的形状。对于计算机来说这个过程非常困难因为它并不能像人类一样自动理解颜色变化代表的形状它甚至无法识别出这些颜色是树的部分。这使得计算机很难理解这些图像的表面方向或朝向特别是在没有明确几何数据的情况下。 其次计算机不知道每个表面的朝向。在三维渲染中反射计算依赖于已知的表面方向。例如如果一个墙面朝向不同的方向反射的光线会有所不同类似于球击打墙壁的方式也取决于墙面朝向。对于二维渲染来说计算机无法获取每个表面的方向因此无法像三维那样进行精确的反射计算。 因此解决这些问题对于二维渲染的光照计算是一个巨大的挑战尤其是在没有明确的表面几何信息的情况下。 黑板法线贴图 解决第一个问题的一种方法是使用法线贴图Normal Maps。法线贴图是一种增强颜色贴图的技术其中每个像素不仅存储颜色信息还存储一个表示表面朝向的向量通常是单位向量。这些向量表示每个像素的表面方向而不是存储实际的表面能量。通常这些向量只需要存储x和y或y和z而不是存储完整的x、y、z坐标因为法线的长度通常为1这样可以简化计算。 法线贴图的使用能够有效解决二维渲染中的表面方向问题。然而问题在于如何生成这些法线贴图。艺术家通常是绘制颜色贴图的但他们并不一定能直接绘制法线贴图。虽然可以要求艺术家先绘制凸起贴图再从中生成法线贴图但这会增加额外的时间和工作量。此外市面上也有一些程序可以帮助生成法线贴图但它们的效果不一定理想。 因此这个问题虽然是艺术资源的问题但它并不是计算上的难题。解决方案是尝试实现法线贴图并希望能够找到一种有效的方法来生成有用的法线贴图。如果无法得到合适的法线贴图可以考虑采用一种不太理想的方式来处理至少这样做可以为问题提供一个计算上的解决方案。 黑板我们不知道光场是什么 第二个问题是关于光照场的问题。在三维渲染中可以通过设置摄像机的位置并渲染场景轻松地获取不同方向的光照信息。然而在二维渲染中无法通过这种方式获得光照信息。因此需要找到一种方法来生成可供采样的光照场。 一种可能的解决方案是使用点光源这种方法是通过将光源设置为点光源并在计算中使用来模拟光照。虽然这种方式简单有效但可能并不总是足够灵活。 另一种方法是进行预渲染生成一个类似光照缓存的东西。这个光照缓存是一个位图可以在渲染前创建类似一个帧缓冲区。通过这种方式可以将场景中的光源渲染到这个缓存中并对其进行扩散处理如模糊化。然后在渲染实体时可以根据法线信息从这个光照缓存中获取光照数据进行合成最终计算出光照效果。 这种方法的核心思想是通过在光照缓存中创建“小光照探针”来获取周围的光照信息。每个探针覆盖一个区域采样时会根据当前位置周围的光照情况进行采样从而获得相应的光照数据。这种方法相较于传统的渲染方式可以加速光照查找提高渲染效率。 然而光照是一个方向性的问题涉及到反射等复杂情况。例如如果在一个场景中有镜面反射光源远在镜子另一侧应该能够通过镜面反射看到该光源。如何处理这种情况是一个挑战因此仍需要深入思考如何实现这种方法。 总的来说这个问题的解决方案仍在探索阶段尽管目前没有明确的解决方案但目标是通过加速光照查询提升渲染的动态性和场景的一致性。 问这就是为什么像皮克斯这样的动画工作室需要超级计算机来渲染吗 动画工作室像皮克斯之所以需要超级计算机来进行渲染主要是因为光照计算非常复杂通常涉及到四维或更高维度的采样问题。这些问题需要大量的计算资源才能解决因此即使我们已经掌握了如何进行较为精确的光照计算计算量依然非常大导致需要使用强大的计算机硬件来处理。 为了生成高质量的图像一种解决方案就是通过增加计算能力投入更多的计算资源来加速渲染。光照计算尤其需要大量的计算因为它涉及到复杂的采样过程而不仅仅是简单的几何计算。虽然几何渲染也需要一定的计算资源但相比之下光照计算对计算能力的需求更为庞大。因此超级计算机主要是用来处理光照等复杂的渲染计算。 问阴影怎么办 阴影的有趣之处在于阴影其实并不是真正独立存在的“东西”它只是由于没有光照的区域产生的效果。因此光照计算本身就能够处理阴影问题。然而由于光照技术的近似性当遇到需要锐利阴影的情况时效果可能不够理想。例如当需要像阳光照射在灯柱上的长阴影时这些技术可能只会生成一种非常模糊的阴影效果而无法呈现出锐利的阴影边缘。 黑板阴影贴图 通常为了实现阴影效果人们会使用阴影映射技术。阴影映射的原理是首先计算光源直接贡献的照明即直接光照而不是间接光照通常使用光探针等技术处理。然后从光源的视角进行渲染得到光源看到的场景信息这样就能判断某些区域是否处于光源的视野范围内从而产生阴影。当渲染时如果光源没有看到某个区域那么该区域就会被认为是阴影区域。 然而对于本项目而言阴影映射可能不需要实现因为游戏中的场景不需要特别锐利的阴影效果。如果确实需要锐利阴影也许可以通过简单的静态方式实现。这个游戏更关注的是环境光照的效果例如通过绿色物质照射产生的绿色光或者被绿色光照遮挡的物体呈现出不同的效果。因此更适合的方式是采用光照传播技术而阴影映射可能会浪费计算资源。 问我在找一个构建设计文档如果有的话该如何遵循 在讨论“构建设计文档”时主要是指为构建过程或开发工作制定的文档通常涉及到构建流程、工具链、环境设置、依赖项、构建步骤以及可能的部署策略等内容。通过这样的文档开发团队能够清晰地了解如何从代码到可执行文件的整个过程并确保一致性和可重复性。 如果没有这样一个文档可能是因为没有专门制定详细的构建步骤或工作流程或者当前的开发方式并不需要一个正式的构建文档。在某些情况下团队可能依赖于简单的脚本或自动化工具来处理构建而不需要额外的文档支持。 问我们是否计划实现昼夜循环和动态阴影阴影会根据太阳位置伸长和消失 虽然从技术角度来看动态的昼夜循环和随着太阳位置变化的阴影变化可能是一个有趣的功能但在这个游戏中并不会实现昼夜循环。游戏设定在完全的夜晚整个冒险过程发生在森林的夜晚所以游戏中没有白天的情节。 不过当前的阴影处理方法是通过单独的渲染通道来完成的这样的技术支持实际上可以很容易地实现动态的阴影变化包括阴影随着太阳的位置变化而拉长或变淡。如果以后有人希望为游戏加入昼夜循环的功能这项技术支持应该能够很好地应对这一需求可能只需要做一些小的调整。 问光羽化例如在窗户或树木上 关于“光的羽化”问题是否指的是透明度效果如果能提供更多具体的细节将有助于理解所提问题。 问是否考虑过在未来做一次关于真实3D光照或光线追踪的讨论/课程 虽然不排除未来讨论三维照明或光线追踪的可能性但由于当前项目并不涉及这些技术因此这些内容不太适用。 问如果镜子反射到另一个镜子里反射光又反射回来这种无限反射怎么处理 在处理无限反射时如果是在合成环境中通常会采用一种技巧比如限制反射的次数通过设定一定的反射次数来避免无限反射的计算。但在现实世界中这种情况并不存在。每次光子反射时都会有一定的几率被吸收或散射最终不会出现能够无限反射光线的镜子。即使是面对面的镜子反射最终光线会被吸收反射会逐渐变暗。实际上并不存在完全纯粹的反射器因为反射器会有一些散射和吸收现象甚至空气中的灰尘也会影响光线的反射。 黑板体积散射(Volumetric Scattering) 在现实世界中光线的反射不会无限循环因为空气中的粒子会导致散射现象。当光线在大气中传播时它可能会与空气中的粒子碰撞并发生散射这就是为何远处的物体看起来更加模糊或被洗淡的原因。实际上光线通过空气时会损失一些能量因为散射现象在不断发生。即使是在两个面对面的镜子之间光线每次穿过空气时都会因为空气分子造成散射而损失一部分能量。因此在现实世界中不可能存在光线无限反射的情况因为每次反射都会有部分光线被散射或吸收。 问关于新手为何要经历你们正在经历的这些讨论。#JustUseUnity 在讨论是否使用Unity时提到有些新人可能认为直接使用Unity会更省事快速开发一个游戏。然而这个讨论并不是关于如何快速上手Unity或其他游戏引擎而是深入了解游戏开发的核心技术。在这场讨论中强调的是如何深入理解这些引擎背后的原理以及如何在现有引擎基础上进行拓展和定制。对于那些只想使用引擎完成基础开发的人来说Unity和其他引擎已经提供了足够的工具和教程。但如果目标是突破引擎的限制掌握更深层次的技术甚至自己开发引擎或插件那么这就是与众不同的地方。学习这些技术可以使得开发者能够实现别人做不到的效果并且为自己提供更多的开发自由甚至在未来有能力创造全新的游戏引擎或插件。这个过程就像是想要了解汽车构造的工程师而不仅仅是买一辆车开。 问当2D变得比3D更复杂时值得继续做2D吗 虽然表面上看2D可能看起来更复杂但实际上3D涉及的复杂性要高得多。对于3D存在许多看不见的挑战如如何实现表面反射函数如何处理透明度和排序问题如何正确渲染立体图像等。3D渲染需要解决更复杂的数学问题比如如何处理光线通过透明物体的折射如何管理光照贴图如何计算多重光照探针等这些都比2D要困难得多。尽管在一些现代引擎中3D图形的实现已经变得更加实时且精确但要实现高质量的3D光照仍然需要大量的工作和计算。这也是为什么开始时选择2D作为入门是明智的因为3D涉及的内容过于复杂且许多技术和方法需要在后期进一步学习和掌握。如果要在3D中处理光照涉及的问题和技术的深度远超2D需要对HDR等技术有很高的理解和应用能力。 问你的‘光照立方体’概念和立方贴图是一样的吗 在讨论光照时所提到的“光照立方体”实际上就是“立方体贴图”cube maps。立方体贴图通常是通过在场景中不同位置渲染多个立方体图像来进行的这些图像用来插值计算间接光照。间接光照指的是光线反射或散射后的路径而不仅仅是直接照射到物体上的光线。直接光照相对简单因为它只涉及光源直接照射到物体表面再进入观察者眼睛的部分。间接光照则复杂得多因为它来自各个方向且光线会反射或折射多次。立方体贴图是计算间接光照的一种常见方案但也存在其他方案。 问如何让光穿过窗户或树木的羽化效果 在讨论间接光照时提到的复杂性源于光线的多方向传播。与直接光照相比间接光照涉及更多的计算因为它不是来自单一方向而是来自各个反射或散射后的方向。这使得计算更加复杂尤其是在尝试模拟光线穿过窗户或树木等场景时。 黑板半透明 在讨论半透明时举了一个典型的例子日式屏风Shoji屏风。这种屏风由木制框架和纸张构成具有半透明的特性。当光线从屏风的另一侧照射过来时屏风会发出柔和的光线而人影会投射到其上但不能看到人本身。这种现象被称为半透明而不是透明因为光可以透过但无法清晰地看到物体的形状。 另外提到了通过树叶看到阳光的例子光线通过叶子时也只能看到光的存在却看不到叶子的具体形状这也是半透明的表现。 半透明的处理方法实际上是间接光照的一种扩展。对于半透明物体光从背面进入通过物体内部散射后再从前面出来。这种光线的散射行为需要在计算中处理考虑到光线如何从物体的一面传播到另一面。因此半透明的表面实际上是通过间接光照方程来处理的光线通过物体的背面传播而不仅仅是从正面入射。 问为什么不直接在精灵上模拟光照 将光照直接预先渲染到精灵上是不可行的因为无法提前确定光源的方向。如果想让物体如树木能够根据光源的不同位置而显示不同的光照效果无法将这些效果固定在精灵上。为了实现这种效果需要动态计算光照。这样光照可以随着光源的移动而变化而不是静态的。因此需要在渲染时动态计算物体周围的光照尤其是当光源围绕物体移动时才能正确表现光照的变化。 问关于第二帧缓冲区的提议是否可以让光源有预计算的距离衰减并让图形对象有一个类似透明度的通道表示反射率这样会很快或许足够适用于2D游戏 使用第二帧缓冲区与光源的预先计算的距离衰减和图形对象的额外反射率通道类似于透明度通道是一种加速并能够为2D渲染提供足够效果的方法。然而这种方法依然面临挑战。尽管距离衰减可以通过模糊处理实现但光照的处理依然复杂因为光照系统涉及多种因素远比流体动力学或其他体积效应更具挑战性。 黑板光照在一条线上的分布是恒定的 光照的本质问题在于光并不会因为它传播的距离而变暗。实际上光沿直线传播如果没有任何物体阻挡光的强度在传播过程中是不会衰减的。只有当光照射到物体时它的强度才会变化。现实中空气的密度太低所以在游戏中光源与远处物体比如镜面球体之间的反射光实际上并不会发生显著衰减。 尽管如此光照在现实中并不会像游戏中的计算那样准确地衰减因此为了在游戏中实现更合理的效果可能会使用一些近似方法比如使用假设的衰减来模拟光的效果。因为游戏需要实时计算无法像物理模拟那样精确所以下近似处理是不可避免的可能会通过点光源来处理衰减效果而漫反射光的衰减则可能并不被考虑因为远距离的光照衰减对视觉效果影响较小。 问由于光照的复杂性系统资源在着色引擎中的使用是一个重要因素吗 由于光照的复杂性系统资源确实是游戏引擎中的一个重要考虑因素。在游戏设置中通常会提供选项来调整如阴影细节等内容这些设置直接影响光照的计算和渲染效果。更强大的计算机硬件意味着能够处理更复杂的光照计算因此高性能的机器可以实现更精细的光照效果。 问如果使用2D光照缓冲区是否需要先生成G缓冲区或Z缓冲区 在使用 A 到 D 的光照缓冲区时通常不需要生成 Z 缓冲区但需要一种方式来控制光的传播。因此可能会使用 G 缓冲区。在这种情况下需要能够阻止光在有实物的方向上传播以减少光的量。具体如何实现这一点尚不确定但可以通过某种方式处理这一问题。 问关于光晕效应怎么办 不清楚“光晕效应”指的是什么。 问这个系统是否适用于软件渲染或者会因为计算开销过大而无法实现 该方法会在软件渲染中实现如果发现运行速度不够快就会在软件渲染中关闭。如果性能不够理想且无法优化到足够快就只会在GPU路径上运行。首先会确保软件路径能够正确工作然后根据需要依赖GPU的运算能力来实现实时渲染以支持游戏的表现。 问你提到过如何计算一个光源接收来自多个源的光。我们应该如何计算这些值我猜测是基于相邻像素的值。我有点难以构思这个方法 计算来自多个光源的单一光源接收的光值的方法是通过逐步下采样的方式进行的。首先从较高分辨率如156x128开始逐步将其下采样为128x64、64x32、32x16、16x8、4x4、4x2、2x1和1x1。这样在需要模糊光照时可以通过对这些下采样版本进行采样来实现。具体操作仍然在探索中未来可能会进行调整和尝试。在解决问题时会尝试处理之前从未遇到过的问题因为这有助于学习如何处理新问题而不仅仅是展示已经掌握的知识。 问在大多数情况下使用现有的图形/渲染引擎来开发游戏而专注于游戏本身/玩法会不会更聪明 在游戏开发中选择是否使用现有的图形引擎来专注于游戏玩法是一个带有假设性的问题。如果目标只是快速实现游戏玩法那么使用现有的图形引擎是更聪明的选择。然而游戏开发不仅仅是关于实现游戏玩法。游戏开发是一门完整的学科包含了许多方面。每个开发者对开发的乐趣来源不同不能仅仅假设每个人的唯一目标是尽快将游戏玩法呈现出来。实际上很多开发者享受的是整个开发过程包括与游戏玩法无关的部分。 使用现有技术或引擎的选择正是因为有一些人不只关注于快速实现游戏玩法而是享受制作游戏各个部分的过程。游戏开发不仅仅是为了实现一个具体目标而是艺术性的创作涉及多个层面的工作。因此如果只追求简单的游戏呈现可以使用更简单的工具但如果想要了解如何从零开始构建整个游戏就需要了解所有的开发方面。 问什么是环境遮蔽为什么我的显卡在运行带有环境遮蔽的游戏时会变慢为什么会丢失FPS 环境光遮蔽Ambient Occlusion简称AO是一种模拟光线与物体表面相互作用的技术旨在增强图像的真实感。它通过在场景中的暗区域添加更多的阴影来模拟光线如何被遮挡这样可以使得物体看起来更加立体和真实。具体来说AO模拟的是物体表面在与周围环境互动时的遮挡效果例如物体之间的缝隙、角落和紧密区域通常这些地方会比开放区域更暗。 关于为何启用环境光遮蔽时某些视频卡运行游戏会变慢可能的原因有多个。AO是一种计算密集型的渲染技术它需要处理大量的光线信息特别是在场景复杂或动态光照条件下。较低端或老旧的视频卡可能没有足够的处理能力来快速计算这些额外的光影效果从而导致游戏性能下降。 黑板环境遮蔽 环境光遮蔽Ambient Occlusion, AO是一种技术旨在通过模拟光线与物体表面相互作用来增强图像的真实感。它并不是一个真实的物理现象而是通过近似计算来再现光线在物体表面传播时的遮挡效应。简单来说AO通过在物体表面和物体之间添加阴影模拟光线在小空间或物体表面细节中的遮挡现象从而让物体看起来更有层次感。 具体来说AO通常有两种实现方式 烘焙环境光遮蔽Baked AO这种方法是在离线渲染过程中计算物体表面某些区域的遮挡程度并将结果存储为纹理图。通过分析每个纹理的视野范围即它能够看到的光线来源的半球区域计算其受遮挡的程度然后将这个信息写入纹理映射中最终在渲染时直接应用这些预计算的值。 屏幕空间环境光遮蔽SSAO这种方法利用场景的Z缓冲区即在渲染过程中每个像素的深度值信息。通过分析每个像素周围的深度值确定是否有其他物体会遮挡光线进而模拟阴影效果。尽管这种方法常常产生不太真实的效果但它能够在实时渲染中动态计算遮挡减少了计算开销。 值得注意的是环境光遮蔽并不是真正的物理光照计算而是一种近似的技巧目的是增加图像的真实感。它并不像全局光照或其他复杂的光照计算那样精确因此被视为一种“修补”或“黑客式”的方法用来弥补常规光照模型无法捕捉到的自阴影效应。 问你有计划实现精灵的不透明度吗如果有是否可以在光照贴图计算中考虑它即不透明物体会阻挡更多的光 已经实现了精灵的透明度控制精灵可以根据需要进行过渡。对于透明物体的处理确实可以在光照贴图计算时考虑透明度较不透明的物体会阻挡更多的光线。还可以尝试让半透明物体表现为透明但同时保留颜色传递的效果。对于这些处理可能会做一些实验看看最终效果如何。开发自己的图形引擎的有趣之处就在于可以尝试一些新的技术虽然这些技术可能没有人做过也可能效果不佳但通过实验可以探索出一些有趣的想法。 问是否有任何关于光照或游戏引擎创建的书籍或资源推荐 有一本关于光照的书籍被很多人推荐书名是《Physically Based Rendering》作者是Matt Fair。虽然本人没有读过这本书但它是很多人推荐的资源尤其适合想要了解光照背后的数学原理和如何模拟光照的人。如果想要获得一个全面的概述这本书被认为是一个不错的选择。 2023版 -zlibrary 外网才行 Physically Based Rendering -本地 Physically Based Rendering 问游戏设计文档比如游戏的路线图 在这项工作中并没有涉及游戏设计文档或类似的路线图。设计和实现是分开的重点是编程游戏引擎和开发游戏玩法但并不讨论设计方面的内容。因为并不从事游戏设计所以也不打算讲解游戏设计的相关知识避免提供不恰当的指导。因此游戏设计文档或类似的设计工作并不在当前的工作范围内。 问如果游戏在完全黑暗中是否最容易编写光照系统 确实如果游戏完全处于漆黑的环境中编程一个简单的照明系统会相对容易。曾经有一款游戏名为《黑暗之中》Alone in the Dark最初的设想是完全在黑暗中进行游戏主要依靠音频来进行交互。最初的计划是让游戏完全依赖音频而没有视觉元素但最终发布商要求他们修改所以游戏最终还是加入了位图和简单的视觉元素。不过即便如此这款游戏依然非常成功。虽然设计最初是要保持完全黑暗的游戏环境但由于后来的改变最终并没有实现这一点。 问能不能回到过去15年前就开始这个系列 如果能够回到十五年前肯定会很愿意开始那个系列。十五年前没有现在的Twitch和YouTube等平台所以需要想办法传输内容。不过相信最终还是能够找到解决方法的。 问我的意思是如何让光束穿过渲染对象 问题是在追踪如何让光束穿过渲染的物体似乎是想弄清楚如何实现这种效果。可能是指光辉god rays效果而不是通常的光晕bloom。 黑板光辉god rays God rays实际上是体积散射的现象。它的原理是没有所谓的“光束”光是以光子形式穿过空气散射的效果发生在空气中充满颗粒物的情况下特别是在明亮的光线下。比如阳光在雾气中照射这时光子会与空气中的颗粒物碰撞并发生散射从而形成可见的“光束”效果。 例如如果有一个彩色玻璃窗光通过窗户时玻璃会吸收某些颜色的光允许其他颜色通过。假如是红色的玻璃红色光会透过而其他颜色会被吸收。然后这些红色光通过空气中的颗粒物散射部分光线会回到观察者眼中形成散射效果。 在实现上如果是在光线追踪中需要计算光在通过体积时的散射概率并在命中时进行光的散射。而在游戏中由于体积散射的复杂性需要进行近似处理。目前可能会采用屏幕空间技术来实现这种效果通过在渲染时检查是否存在需要体积效果的像素然后对这些像素进行处理。 因此当前可能的技术是利用屏幕空间进行处理利用屏幕空间的渲染信息来模拟这些体积散射效应而不需要复杂的物理计算。 问你不应该从眼睛发射光线而是从太阳发射光线以减少计算量然后检查从眼睛发射的光线是否击中太阳 在光线追踪中通常是从眼睛出发射线而不是从光源发射以减少计算量。这样做是因为大多数光线追踪算法尤其是蒙特卡罗方法会从观察者的视角出发追踪光线如何与场景中的物体交互最终返回到眼睛。因此光线追踪的核心是从眼睛出发的。 在一些更复杂的实现中像双向路径追踪Bidirectional Path Tracing这样的算法会同时从眼睛和光源发射光线结合这两者的结果来计算最终的照明效果。这些算法可以提高某些场景下的计算效率但它们的实现会更加复杂。 所以是否从眼睛或光源发射光线取决于具体的实现和所用的算法。在游戏中通常使用的是较为简单的光照技术如阴影贴图等而不直接使用光线追踪。 问你可以使用3D叠加层来模拟3D环境的切片吗例如平台的z值是1x值表示左右y值表示上下。这样你可以在x33, y50, z1的位置有一个光源所有小于x33的物体会在右侧投下阴影而大于x33的物体则会在左侧投下阴影 可以使用三维重叠的方式来模拟一个三维环境的切片。例如平台可以表示为 Z 轴而 X 轴则表示横向Y 轴表示上下。在这种设定下可以有一个光源所有 X 坐标小于某个值的物体会被照亮到右边而大于该值的物体则会被照亮到左边。 这种方法实际上是在通过三维空间的分割来模拟光照和物体的关系。然而这样的设定可能会变得非常复杂因此还需要进一步探索和实验才能决定如何实现这个过程。 问在早期的剧集里你们曾经讨论过多重z层次。那是否意味着你们需要在渲染中加入3D墙面这样就会引入一些3D的计算到渲染和光照中 在早期的讨论中涉及到多个海拔层次的问题这可能会意味着需要渲染墙壁并引入三维渲染和光照计算。不过可能会选择通过分割的方法来处理而不是完全采用三维渲染。可能的做法是在不同的平面上进行光照计算或者只在某些平面上应用光照而其他平面不做光照处理。 问你认为我们能实时完成所有这些工作吗还是我们必须在生成地图时预先计算一些光照信息 目前还无法确定是否能够实时完成所有的工作可能需要在生成地图时预测一些光照信息。目前这一切还只是猜测。 问难道不能直接做一个3D游戏然后用擀面杖把它压扁 将一个三维游戏做成二维的想法其实不错这样可以轻松地从三维资源中创建二维资产。不过担心用“擀面杖”压平之后可能会有太多细节被压缩掉因此需要找到解决这个问题的方法。 问实时辐射度在游戏中有多常见它容易实现吗你们使用过吗为什么或者为什么不有什么提示吗 实时辐射传输技术radiography在游戏中并不常见因为辐射传输主要是处理热传递问题而游戏中使用的实时光照技术通常是不同的。虽然一些引擎如Frostbite可能使用了辐射传输引擎但许多游戏引擎现在已经不再使用这种方法而是采用其他方式处理间接光照。例如Unreal Engine 4就包含了很多实时间接光照的处理方法而CryEngine则使用了体积光传播方案Voxels。总的来说实时光照中包括间接光照的技术已变得更加普遍但辐射传输技术并不是主流。 问我看到有个游戏在精灵上使用了法线贴图 使用法线贴图normal maps在精灵sprites中的确并不常见但也不算特别罕见。有些游戏确实会使用法线贴图来增强精灵的视觉效果。关键问题在于如何生成这些法线贴图。如果从3D模型渲染到2D生成法线贴图是相对简单的。但如果精灵是手绘的问题则在于谁来制作这些法线贴图以及如何制作。 问光的衰减不是平方反比定律吗当你远离光源时每一束光线与邻近的光线之间的距离增大 光的衰减确实遵循反平方定律即随着距离光源越来越远每条光线之间的距离也会增大。这是两个不同的概念其中一个是光的衰减方式另一个则是光线之间的空间分布。 黑板平方反比定律 反平方定律只会影响部分光线。在讨论光的传播时直接光和间接光的影响有所不同。当考虑到反射光时反平方定律并不会直接影响单个光子的路径。例如在反射光源时如果光源距离镜面较远镜面上光源的大小会变小但光源的亮度并不会随之衰减。实际上反平方定律影响的是光源的大小特别是在反射光源的情况下而不是其亮度。 当光源距离物体越来越远时反射光源的大小会变得更小且光线会更分散因此到达物体的光量会减少。然而纯反射部分的亮度并不会受到反平方定律的影响反而是光源的大小会根据距离变化。这意味着尽管光源的亮度可能会因光的散射变得更稀疏但对于反射部分的计算亮度本身并不会按照反平方定律变化。 问你会考虑像《小小大星球2》那样体素化场景吗 考虑到光源的处理方式类似《Little Big Planet》的照明系统就是一种可行的思路。在这个系统中首先将光源放入场景并进行扩散然后根据物体的位置来调整光的传播避免光线穿过物体。这种方式与Vauxhall的光照方案相似虽然没有完全采用类似的盒子结构但整体的思路是相同的。可以通过这种方式实现类似《Little Big Planet》风格的照明效果并根据实际情况进行调整。 问我需要登录希望这还不算太晚。当集光源时是否会有衰减效应因为光线从源头扩展出去时衰减会影响表面 关于光源的衰减问题光源的衰减并不是简单地遵循逆平方定律。对于环境光和间接光衰减会受到逆平方定律的影响但对于直接光源逆平方定律并不适用。常见的误解是所有光线都遵循逆平方定律实际上并非如此。光线沿着一条直线传播时并不会因为距离远近而衰减只有当考虑到面积时才会涉及到衰减的效果。 因此光的亮度并不会沿着直线衰减而是取决于反射计算的哪一部分。如果计算的是反射光的大小逆平方定律会影响光源在物体上的投射尺寸而如果计算的是反射光的亮度逆平方定律则不再起作用。这表明逆平方定律主要影响的是散射光的亮度变化而对纯反射光的亮度没有影响。 问为什么在3D程序中用光子而不是粒子来表示光会更容易 在三维程序中将光表示为光子而非粒子并不一定更容易。实际上光子本身也是一种粒子。问题的关键在于三维程序中通常不会直接模拟光子的行为而是通过物理模型来处理光的传播和反射等效果。光作为光子是量子物理中的概念而在计算机图形学中更多的是通过光线追踪等方法来模拟光的路径和与物体的交互。这样的方法虽然基于粒子理论但更多的是关注光的宏观行为比如传播方向、强度等而非光子级别的细节。因此将光表示为光子并不总是与程序的实际需求相符。 问如何在接近光速的环境中渲染光和事件 在渲染光与接近光速的环境和事件时处理这类问题非常复杂涉及到相对论的理论。在这种情况下考虑到光速的限制和光在不同参考系下的表现可能需要采用特殊的技术或算法来模拟光的传播。这是一个高级的物理问题可能需要专门的领域知识和技术通常不在常规渲染方法的范围内。 问PBR光照简要介绍一下它是如何工作的 (Physically based rendering ) 本集到此结束 接下来将开始涉及法线贴图的内容预计会作为接下来的一个部分进行处理
http://www.dnsts.com.cn/news/89877.html

相关文章:

  • 鞋 东莞网站建设 技术支持企业网站建设都需要什么准备
  • 网站建设最高管理权限个人网站可以放广告吗
  • 科技 杭州 网站建设wordpress放视频
  • 密云建站推广移动应用开发介绍
  • 网站建设是指wordpress 家教
  • 珠海市区工商年报在哪个网站做网站建设要学哪些软件有哪些内容
  • 设计师的网站有哪些宁波网站优化平台
  • 银行门户网站建设小程序商城开发平台
  • 做网站好还是做商城好优秀网站参考
  • 网站建设与维护是什么nginx wordpress php7
  • 网站开发交易平台查pv uv的网站
  • 做设计最好的参考网站小程序商店制作
  • 简阳建设网站公司php抽奖网站源码
  • 做水果的有什么网站照片在线编辑
  • 做免费网站需要营业执照吗怎么直接做免费网站吗
  • 网站开发的晋升晋升空间路径行政还要负责网站建设新媒体吗
  • 咖啡网站设计模板黄南北京网站建设
  • 答题卡在线制作网站西安今天最新招聘信息
  • 网站开发用什么工具好施工企业审图ppt
  • seo网站监测十大新零售公司
  • 个人网站包括哪些内容杭州最新新闻
  • 广东官网网站建设公司wordpress如何添加商桥
  • 广东建设协会网站网站建设的步骤过程ppt
  • 大型网站方案高品质网站设计制作
  • 公司网站开发建设费用快速一体化网站建设
  • 手机设计企业网站关于网站建设的基础知识
  • 自己怎么建h5商城网站h5创建网站
  • 甘肃省建设厅官方网站信息网白塔网站建设
  • 计算机前端培训机构哪个好莱芜做网站优化
  • 泉州企业制作网站咨询公司成本费用包括哪些内容