- 博客(84)
- 收藏
- 关注
原创 图形引擎实战:角色自阴影精度优化——基于Shadowmap利用率提升的方法研究
基于骨骼层级包围盒的角色自阴影通过建立角色骨骼的树形结构,来动态生成阴影包围盒。每个骨骼节点对应着一个它自己的包围盒selfBounds,和一个局部的包围盒localBounds,而局部的包围盒是一个包含了当前骨骼节点和其骨骼子节点包围盒的集合的最小包围盒。其中,Boriginal是角色的初始包围盒尺寸,Bnew是调整后的包围盒尺寸,d是摄像机到包围盒的距离,k为可以调整的系数。最后对于bounds列表中的包围盒,求他们的包围盒边界(包围盒集合的并集的最小包围盒),即可得到最终的角色阴影包围盒。
2025-05-19 08:00:00
898
原创 图形引擎实战:Unity动态重心控制解决方案预研
全新的状态机是真正的分层结构,即使您有数千个动画源,也可以扩展。UE凭借其高度集成的工作流程、强大的工具链以及对复杂动画场景的深度支持,在多个关键领域具备显著优势,在UE中我们只通过动画蓝图Layered blend per bone 的功能就可以实现简单的动态效果,以下是UE功能实现,记得一定要勾选:网格体空间旋转混合。我们设计了三组测试用例:(捕捉一个Idle,一个举重的动画,动态射击动画(左右移动射击,前后移动射击),快速转身动画(投掷动作),)├── 逆向动力学控制器(IK Controller)
2025-05-05 08:00:00
939
原创 人工智能实战:SpineAI工具分享
在做2D角色动画的时候,从立项到角色验证,投入一堆时间和人力,每次修改都需重新排期等待,效率非常低。为了提升效率,我们最近开始尝试开发一个工具——,用AI辅助我们快速生成动画资源,帮助我们把由AI生成的图片快速适配到Spine骨骼动画体系里。这样一来,只需一人即可高效迭代动画风格,有效节省排期,减少等待与反复沟通时间,更快地验证创意想法。简单来说,它主要做两件事:一是,通过AI出图的方式,给已有角色快速生成不同风格的皮肤;二是。
2025-04-21 08:00:00
922
原创 图形引擎实战:手游harmony端后台下载SDK总结
当我们下载了一半的时候,手机没电了,或者网络断了,或者游戏闪退了,如果没有断点续传,那就悲剧了,重新启动下载,就会重新开始下载,不仅浪费了时间,浪费了电量,还浪费了流量,这对用户是不可接受的。所谓的后台下载,就是将手机切换到后台以后,我们的下载仍然可以正常运行,用户启动后台下载后,可以打开其它app,一边看着新闻,聊着天,一边后台跑着下载程序,两不耽误。上万个文件需要下载,速度不够高。我们的后台下载技术,基于harmony自带的下载模块实现,启动下载后,将游戏切换到后台,下载继续进行,不中断、不闪退。
2025-04-07 08:00:00
883
原创 人工智能实战:技术美术如何利用AI工具提升工作效率
在最近的一个项目中,我们面临了一个常见的技术挑战:前向渲染中灯光数量过多导致的性能瓶颈。该工具的核心思想是利用Compute Shader实时计算包围盒内的光源信息,并将结果存储到一张3D纹理中,从而实现仅需一次采样即可获取全部灯光信息,无需在Shader中进行逐光源遍历,同时支持动态光源的实时更新。当AI生成代码后,我们便进入测试阶段。MarsCode AI 是 JetBrains Rider 中的一个AI编程助手插件,基于GPT技术,能够根据自然语言描述生成代码、提供代码补全建议,并帮助调试代码。
2025-03-24 08:00:00
720
原创 人工智能实战:用Deepseek解决某修改器带来的崩溃问题
于是,我们将CrashSight收集到的崩溃堆栈,以及崩溃时获取的系统日志,提供给Deepseek,看它能给我们哪些帮助。Deepseek以及其他大语言模型,可以快速的辅助开发人员,针对自己不是很熟悉的领域,去展开工作,可以有效的增加人员的自信。这一点至关重要,因为我们之前对第三方修改工具的拦截措施里面,是不包括对拉起游戏的父进程的检查策略的,该修改器可能就是这么绕过我们拦截的。在解决该问题的过程中,我们求助于Deepseek R1满血版本,AI给了我们非常有效的指引,并且提供了方案,问题最终得到解决。
2025-03-10 08:00:00
544
原创 图形引擎实战:Unity重构体积云密度场
程序化生成的体积云在效果上大同小异,关键在于如何让美术更高效地调整参数。相比于程序化驱动的体积云,以稀疏体积纹理(VDB)为基础的体积云或许是未来的发展方向,因为它能够更加精细地塑造体积云的形态。希望未来能有机会对此展开更深入的研究。欢迎加入我们!感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com。
2025-02-24 08:00:00
1192
原创 图形引擎实战:Unity移动端带宽优化分享
在开始性能优化之前,我们首先需要一个可靠的工具来帮助发现问题。高通的骁龙性能分析器(Snapdragon Profiler,简称SDP)正是这样一款强大的工具。SDP能够采集骁龙系列芯片的实机性能数据,包括GPU的读写总量、纹理内存占用、L1/L2缓存未命中率、时钟频率等关键指标,并提供实时(Realtime)和快照(Snapshot)两种工作模式。在实际应用中,我们通常使用实时模式来监测游戏各项指标的变化情况,例如观察战斗场景下的带宽占用,以便定位异常场景。
2025-02-10 08:00:00
1199
原创 图形引擎实战:DDGI项目实战
为了解决这一问题,可以对剔除范围进行适当的外扩,即将相机的视锥体范围适当放大,如下图所示:红色区域表示相机的正常视锥范围,蓝色区域则是扩展后的视锥范围。然而,由于 Probe 的位置和光照计算是实时生成的,如果直接剔除视野范围外的 Probe,可能会导致相机视角移动时光照出现不连续的问题。对于特别小的物体可以忽略不处理。,针对地形系统需要解决两个问题,一个是光线如何与地形求交,地形系统没有办法生成SDF信息,第二个问题是多地形系统的支持,开放世界项目地形系统都是占据很大的面积,会将其拆分成很多个小地形。
2025-01-27 08:00:00
786
原创 图形引擎实战:游戏内简单IK的实现
本文简单介绍了一下项目中使用的IK脚本的实现思路,它很简洁,同时意味着它并不能适应所有情况,比如如何固定腿部不让计算IK时模型产生偏移,如何适用于双手武器的协调等等,这些问题就需要更多的算法来进行适配,如反IK、加限制条件、利用动画配合等等。因此本文仅供使用简单IK时作为参考。欢迎加入我们!感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com。
2025-01-13 08:00:00
720
原创 图形引擎实战:GPU优化分享
在实现过程中学习和借鉴了很多人的思路和实现,力求在能在牺牲可接受画面范围达到效率的最大化,所以其中存在很多简化和trick。欢迎加入我们!感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com。
2024-12-30 08:00:00
631
原创 图形引擎实战:DDGI动态漫反射全局光照
核心原理:对每个需要参与全局光照的物体生成一份SDF(Signed Distance Field,符号距离场)的离线数据。对于特别小的物体可以忽略不处理。运行时,每帧根据场景中物体的当前位置,将所有的SDF数据组合生成一个场景级的SDF数据,称为GDF(Global Distance Field)。然后将屏幕换分成8x8的Tile,每个Tile中生成一个Probe,利用这个GDF来进行光线求交,并生成探针的光照球谐数据。
2024-12-16 08:00:00
1337
原创 图形引擎实战:Live2D项目应用及落地
欢迎来到畅游引擎部的应用研发分享,今天给大家带来Live2D动态立绘制作的分析及项目落地分享~之前我们的知乎已经分享过Spine性能优化相关的文章,同学们可以通过本文了解到Live2D与Spine之间的对比以及适用场景。前几篇分享中有同学指出没有考虑到创新技术的落地问题,那么本文也会给大家带来落地过程中遇到的问题和解决办法!Live2D与Spine对比分析Live2D原画拆分规范Live2D在Unity中落地问题。
2024-12-02 08:00:00
3135
原创 图形引擎实战:植被风力系统以及四季变化
大家好,我是畅游引擎部 TA 组的 Fan Sir。今天,我很高兴向大家分享在游戏中如何实现植被风力系统与四季更替的动态效果。我们将先展示实际效果,随后深入讲解每个实现环节,包括模型制作的标准规范、植被风力动画的设计过程,以及四季变化的平滑过渡方式。希望本次分享能为大家带来新的启发和实用的技术思路!
2024-11-18 08:00:00
1355
原创 图形引擎实战-拼接玩法分享
塞尔达传说:王国之泪》 发售以来, 究极手和蓝图能力深受广大玩家的喜爱。究极手的能力包括抓取、 移动以及旋转物体,将物体拼接起来组成一个拼接体组合,同时也可以将物体从拼接体组合上拆下来。正是由于究极手这个拼接能力,玩家可以在王国之泪上按照的自己的想法拼接组合物体,这个能力极大的丰富了游戏玩法以及乐趣,具有较高的自由度。比如,可以拼接组合出一个高达模型。蓝图则可以帮助玩家快速记录和恢复这个高达模型。
2024-11-04 08:00:00
562
原创 图形引擎实战:Unity音频管理器
一般游戏项目都会接入诸如Wwise、Fmod或者Creware等音频管理插件,用于管理和播放音频以及实现各种音频效果。中间件的意义在于让音频同学不用关心具体的程序控制快速制作各种音频效果和控制逻辑,而程序同学只需要简单调用就能接入复杂的音频控制效果。但是由于这些音频引擎中间件都会收取较高的使用费用,对于小型项目和对音频效果没太高要求的项目来说,这种成本能省则省。所以这里介绍的音频管理工具就是为了替代Fmod 这类音频中间件,模仿Fmod 关于音频控制的结构和制作流程。同时提供运行时播放控制接口。
2024-10-21 08:00:00
775
原创 图形引擎实战:延迟管线下角色卡通渲染效果分享
此外,SDF贴图的尺寸应根据实际需求来确定。通过自身深度与偏移后的深度相减来得到边缘光区域出现的区域,最后在对它进行一次smoothstep操作来去除一些细小的边缘光并增加边缘光的对比度,然后再通过1-saturate(dot(L,N))对边缘光出现的区域进行限制。使用自定义灯光系统的好处就是可以有更加丰富的参数来控制角色在灯光下的效果,下图为自定义灯光的参数,可以调节光源影响半径,光源受光面颜色,光源受光面强度,光源背光面颜色,背光面强度,边缘光宽度,边缘光范围,边缘光受光面与背光面颜色,角色阴影强度。
2024-10-07 08:00:00
1161
原创 图形引擎实战:特效资源检查工具分享
特效是增强游戏表现力的重要手段之一,然而,华丽复杂的特效往往会导致更高的内存消耗和渲染压力。在美术制作特效时,通常只关注视觉效果,尽管程序团队可能会提供一些参数限制,但这些限制往往并未得到充分遵守。因此,定期检查美术上传的特效资源(包括纹理、网格等其他相关资源)显得尤为必要。在我参与的某个在研项目中,出于某些原因,项目初期并未对美术资源进行严格的检查,导致在实际测试中发现了内存占用异常的问题。具体表现为,在第一次战斗中,某些NPC使用了几个华丽的技能后,显存占用出现了异常增长,这显然是一个不正常的现象。
2024-09-23 20:00:00
1016
原创 图形引擎实战:项目引擎迁移及鸿蒙化
这里将对项目引擎升级以及编译鸿蒙包过程中遇到的一些问题及注意事项进行简单整理这里只提及常规要修改的地方,一个是涉及前向渲染器的类或结构体已经弃用,需要使用通用渲染器进行替换,如:ForwardRendererData替换为UniversalRendererData,ForwardRenderer替换为ForwardRenderer。
2024-09-09 08:00:00
1718
原创 图形引擎实战:UE Hillside体积云移植URP管线技术实践
若历史帧UV有效,进一步判断当前像素的深度与历史帧像素的深度差异,若深度差异过大则使用与当前像素深度差异最接近的相邻绘制结果来作为重建结果,否则将历史结果Clamp至相邻绘制结果的Min/Max包围盒内作为重建结果。值得注意的是,出于性能考虑,体积云的绘制在1/4 x 1/4分辨率RT上进行,仅渲染1/2 x 1/2分辨率目标RT中2x2像素区域内的一个像素,剩下的三个像素则通过重投影的方式用历史帧结果重建得到,再得到1/2 x 1/2分辨率目标RT的重建结果后,进一步通过上采样得到全分辨率下的体积云。
2024-08-26 08:00:00
1130
原创 图形引擎实战:开放世界游戏制作分享
想象一下你站在一座山顶,眼前是一片广阔无边的土地,山川、河流、城镇、森林尽收眼底,而这些地方你都可以自由地去探索、发现和体验。这就是开放世界游戏的魅力。开放世界游戏实际上是一种自由探索和自主选择的游戏。它提供了一个庞大而开放的环境,玩家可以按照自己的节奏和兴趣去探索,而不是像传统游戏那样有着线性的流程。线性游戏中的玩家被写好的剧本引导着一步步走向终点,所有的故事和场景都是预先设计好的,玩家只能按照流程去推进。对比传统线性游戏,开放世界游戏赋予了玩家完成任务的自由,让每个玩家的旅程都独一无二。《艾尔登法环》游
2024-08-12 08:00:00
939
原创 图形引擎实战:Unity性能分析工具原理介绍
上面简单介绍下性能工具如何通过Profiler获取数据,希望起到抛砖引砖的作用。通过该工具,在测试人员跑游戏的同时,无感的上传性能数据,并通过Web的形式展现出来,使得我们能够实时了解游戏的性能状态,及时发现问题,及时解决问题。欢迎加入我们!感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com。
2024-07-29 08:00:00
603
原创 人工智能实战:智能NPC知乎分享
在代码层面上不同动作的具体实现是通过模版来实现的,比如摆摊的行为模式是一个模版,巡逻的行为模式是另一个模版,在如果NPC的行程表从从摆摊变为巡逻那么只需要切换其装载的模版即可,可以减少功能的重复开发。为了解决以上问题,我们设计了一个基于地点的事件触发系统,事先设定好跳舞的舞台和其周围均匀分布的围观跳舞的地点,当有NPC来舞台上跳舞时,舞台上绑定的事件被触发,向周围的NPC广播来围观的信号,目标是设定好的围观地点,如果收到广播信号的NPC愿意前来,就会走到围观点播放鼓掌动画。(3)强化学习生成行程表。
2024-07-15 08:00:00
1205
原创 图形引擎实战:后台下载移动平台调试及iOS开发介绍
关于后台下载Unity插件的整体设计架构以及主要功能分析详情请见另一篇开发文档[1],这里对安卓与iOS后台下载功能修复调试过程中遇到的问题进行总结并对iOS平台的后台下载实现进行基本说明。
2024-07-01 08:00:00
873
原创 图形引擎实战:客户端优化之零GC日志系统改造
通过使用自定义字符串拼接格式化方案,确实将由传统字符串格式化产生的GC给清零了。零GC字符串不仅仅可以使用在日志系统,在项目其他需要使用字符串格式化的地方也可以扩展使用,虽然最后在ToString的时候会产生一些GC,但是至少能节约掉格式化过程产生的GC。最后就是该优化操作是针对项目日志系统的特定优化,在类型支持上可能会存在不全面的问题。欢迎加入我们!感兴趣的同学可以投递简历至:CYouEngine@cyou-inc.com。
2024-06-17 08:00:00
1084
原创 人工智能实战:Stable diffusion在角色中的应用
d. 特征细化:为了在原本的基础上提升提升机甲的特点,使用Controlnet中的canny模型控制角色大致轮廓,使用depth模型控制图像深度,权重值均给了0.8,这样做的目的是为了能在原有的基础上有所发散,并且在提示词中加入动物元素和控制色彩的提示词来进行特征强化。c. 提示词描述:按照主体、风格、色调、背景、高清、额外细节、光影、LORA的调用来描写提示词,通过反复修改,确定最终的提示词模板,按照模板再去修改特定的颜色和细节。a. 设计需求:设计几组机甲角色,主要是机甲的特点以及各个级别细节的变化。
2024-06-03 08:00:00
1071
原创 图形引擎实战:变体工具应用经验
当前游戏画面的丰富度和精美程度日益上升,为了支持这一点,就需要大量的shader及变体。随着项目的推进,shader变体也在渐渐增多,为了保证渲染效果正常以及获取良好的运行效率,就需要对所需的变体进行收集。在了解变体收集之前,首先需要了解一下什么是变体。例如在场景中有一片草地,我们希望其进行顶点动画,随风摇动,那么就需要添加额外的计算,为了适配各种配置的机型,可能会希望在低端机上关闭这个动画,不进行相关计算。
2024-05-20 08:00:00
1293
原创 图形引擎实战:近岸海浪初步尝试
关于水体渲染的主题有很多,如水面网格生成,FFT,着色等。step(0,-worldNormal.x)是加入多一个判定泡沫产生的位置的信息,一般来说泡沫产生的位置都在海浪的背部,但这样的判定导致产生的泡沫的mask太“硬”不够自然,还有一些其他更好的计算方法,这是一个可以优化的点。一个是高度信息,一个是浮沫信息,浮沫信息可以根据高度做一个Mask来进行控制,理论应该加入更多的控制和信息来做浮沫的动画来表示白沫的产生和消失的演变过程,这是一个可以优化的点。也可以根据需要,写入多张RT,如法线信息,浮沫信息。
2024-05-06 08:00:00
951
原创 图形引擎实战:基于音素对齐和语音驱动的中文口型同步
通过上述归类,我们可以制作一定类别口型的BlendShape,并设置这些BlendShape的权重来表示不同音素的口型,从而完成音素到口型的映射,图3为音素至视素的映射表。汉语产生的单位主要由词汇、音节和音素等组成,通俗讲就是我们的中文语句由若干个词组成,词又由相应的音节组成,其中声母和韵母构成了我们所熟知的拼音,从这段介绍中我们也可以得出,声母和韵母即音素构成了汉语文本的基本要素,如何将一段对话中的音素映射至相应的口型则成为了实现汉语语音和口型同步的关键。
2024-04-22 08:00:00
1761
原创 图形引擎实战:URP自定义后处理框架及扩展
游戏后处理效果是游戏开发过程中不可或缺的部分。它们通过颜色、光照、模糊等技术手段,让游戏画面更加逼真、迷人。在Unity的Built-in管线下,想要完成后处理效果,要么引进著名的后处理插件Post Processing Stack来实现此目标,要么使用OnRenderImage()配合Shader的方法进行自定义。当使用以上方法实现后,便可以对场景使用想要的后处理效果,并且自由度很高,可以随时进行修改和扩展。
2024-04-08 08:00:00
2596
原创 图形引擎实战:8级风格化级联阴影
阴影是画面表现光影的重要元素之一,高质量的阴影会对游戏画面产生不小的贡献。对于大世界来说,高质量的阴影往往意味着低走样和较远的绘制距离。Unity的URP管线中自带了最大级联数为4级的级联阴影,然而4级的级联数在阴影绘制距离较大时,近处的阴影会出现难以接受的锯齿,出现较大的走样。解决走样主要有两个方向,提高采样频率和降低信号频率。在本篇文章中,我们选择了一个较为通用的解决方案。对于前者,我们选择提高级联数,拓展4级到8级,对于后者,我们则选择在采样前进行PCF滤波。
2024-03-25 08:00:00
1377
原创 图形引擎实战:FFT海洋系统开发手记(一)
其实在前期需求调研阶段,我们也没有一开始就奔着实时计算波浪的这个方向去,还是本着能省则省的想法,测试了好几个使用预计算的置换图来计算波浪形态的插件,以及一些甚至没有顶点偏移只有法线扰动的水片shader。无论是采样预计算的资产,还是实时计算波形需要的信息,这阶段的输出都已经大体上决定了水波浪的形态:譬如波峰尖锐程度,波谷的平滑度,波浪细节的丰富度等等。一些早年的3A游戏,如神秘海域,刺客信条等,则对于这些技术根据自家需求进行了不同的改进和组合,感兴趣的朋友可以直接搜索他们当年的技术分享看看,挺有意思的。
2024-03-11 08:00:00
1212
原创 图形引擎实战:基于rdc文件的世界场景还原流程介绍
在图形流水线中,MVP变换指的是一系列坐标空间变换,这些转换通过将模型变换(Model Transform)、视图变换(View Transform)和投影变换(Projection Transform)相结合来实现。这三种变换共同组成了MVP变换,它们将3D场景中的对象转换到一个二维图像上,以便在屏幕上渲染。
2024-02-26 08:00:00
1368
原创 图形引擎实战:Spine动画性能优化
Spine 2D 是一款针对游戏开发的 2D 骨骼动画编辑工具。相比于传统的逐帧动画,Spine2D内存占用体积更小,所需美术资源更少等等。Spine2D提供了良好的 Unity 支持,包括导入工具和运行时库,使得 Spine 动画能够轻松地集成到 Unity 项目中。上述两点问题是如何发现的?这就离不开性能分析工具了,本章介绍2种常用的分析工具(干货请移步2.3章节)。(需要注意由于项目是移动端开发,所以实际性能指标,应打包安装到手机后在做性能分析才是正确的。CPU Usage。
2024-02-12 08:00:00
3782
原创 图形引擎实战:UGUI名字版合批,LightMap/ShadowMap贴图通道合并,与安卓GPU Query
近期在为Unity通用渲染管线下的手游项目进行性能优化,主要是环绕当前渲染瓶颈展开的尝试和验证。
2024-01-29 08:00:00
1849
原创 人工智能实战:Stable Diffusion技术分享
首先是文生图其目是提供衣服裁切样式的设计 ,配合 训练的大模型一起使用 ,主要检查模型是否过拟合 ,直观的方式就是一次生 成多张图片 ,观察衣服的裁切样式、配色、质感等是否多样。48.Max num workers for DataLoader: DataLoader的最大工作线程 ,此选 项会指定训练CPU的进程数 ,增加该数值会启用CPU的子进程并提高读取速 度 ,但指定太多进程会导致效率下降 ,无论指定数目多大 ,它不会超过CPU。基于训练的不同风格的LoRA,应当选择相匹配合适的基础模型。
2024-01-15 08:00:00
1263
1
原创 图形引擎实战:云雾渲染漫谈
云雾一直都是各个游戏烘托场景氛围的主要组成部分,而这种很难对其感性审美效果进行参数化的东西,无论是在美术工作流中还是渲染技术中都是比较难以处理的。
2024-01-01 08:00:00
1028
原创 图形引擎实战:RayMarching后处理实时体积雾渲染
Hi!大家好我是Kevin,来自畅游引擎部。这次分享的内容是RayMarching体积雾渲染的实现。在户外游戏场景的表现中,雾效对整体氛围的渲染有着至关重要的作用。本次使用了Unity3D引擎,采用的URP管线。首先URP管线是支持内置雾效的,可以通过Window-Rendering-Lighting-Other Settings中的fog来进行开启和调整。思路基本与后处理线性雾的思路,通过深度图还原世界空间坐标,然后分别通过高度和深度决定雾的强度。
2023-12-18 08:00:00
675
原创 图形引擎实战:端游引擎改造实践
对于溶解效果来说,需要一系列timer数据来添加基于时间的控制效果,定义相关数据结构后根据time thread以及粒子的生命周期计算出想要的数据对象,然后在initParticle对象阶段加载dissolve材质进行特殊处理,将数据传入材质中进行shader的参数重载。之后,在引擎的资源管理系统中添加支持,在导入此资源文件时对新的标签进行处理,对其中的数据进行解释,以便在前端中进行显示和修改、在文件系统中进行保存。根据引擎自身的材质系统,创建一种新的材质时需要编写相应的.material文件。
2023-12-04 08:00:00
551
原创 图形引擎实战:自阴影渲染分享
与Urp中的shadow caster pass很接近,不过这里我们要加上自定义的shadow bias,然后在Fragment中处理一下alpha 和 cutoff就可以了;
2023-11-20 08:00:00
935
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人