- 博客(138)
- 资源 (10)
- 收藏
- 关注
原创 TSR,FSR,DLSS超级分辨率的原理分析
超分辨率与深度学习抗锯齿 (DLAA)帧生成光线重建这些特性分别适用于不同的 GeForce RTX GPU 系列,并且通过不断的技术更新和优化,DLSS 已经成为提升游戏体验的重要工具。DLSS 技术通过超分辨率、抗锯齿、帧生成和光线重建等特性,为游戏玩家提供了前所未有的图像质量和性能提升。随着越来越多的游戏和应用支持 DLSS,玩家可以在更多的游戏中体验到这一革命性技术带来的优势。无论是追求极致画质的玩家,还是希望在高分辨率下享受流畅游戏体验的玩家,DLSS 都是一个不可或缺的工具。
2024-06-05 23:13:15
46270
原创 meshshader中对三角形的组织优化
Mesh Shader是一种新型的图形着色器,结合了传统的顶点着色器和几何着色器的功能,提供了更高的灵活性和性能。它允许开发者以更自由的方式组织和处理顶点数据,从而优化渲染流程。Nanite是Epic Games在Unreal Engine 5中引入的一种虚拟化几何体技术,旨在处理极其复杂的几何体数据。它通过细粒度的细分和动态加载,实现了高效的几何体渲染。
2024-05-24 23:55:32
870
原创 Unreal基础多线程及渲染多线程
unreal engine(ue)支持多线程执行和渲染,优化了游戏和应用程序的性能。在多线程执行方面,ue允许并行处理多个任务,如物理计算、人工智能逻辑和网络通信,提高cpu使用率和响应速度。对于多线程渲染,ue采用延迟渲染技术,将渲染任务分配到多个核心上同时进行,有效减少画面撕裂和提升帧率,为玩家带来流畅的视觉体验。
2024-05-24 11:00:50
1437
原创 gdc2024:Raytracing in Snowdrop技术实现与性能优化策略
图形渲染技术的快速发展中,光线追踪(Raytracing)技术已成为推动高质量渲染效果的关键力量。特别是在Snowdrop引擎中,光线追踪技术的运用不仅优化了控制台游戏的照明管线,还极大地提升了游戏的视觉体验和沉浸感。本文将深入探讨Snowdrop引擎中光线追踪技术的核心技术和优化细节。
2024-05-22 22:49:16
1112
原创 实时角色控制:基于相位函数神经网络的研究
本文提出了一种基于相位函数神经网络(PFNN)的实时角色控制方法,旨在实现高质量、自然流畅的角色运动,并具有良好的环境适应性。该方法包含三个主要阶段:数据预处理、网络训练和运行时。本文对方法的局限性进行了讨论,并提出了未来的改进方向。总体而言,本文提出了一种有效的实时角色控制方法,具有显著的应用前景
2024-04-17 09:30:26
1221
原创 游戏动画技术:从传统到深度学习
文章详细介绍了传统游戏动画技术的原理,包括骨骼动画、蒙皮技术,以及状态机、动作融合和IK等交互控制方法。同时,深入探讨了Motion Matching技术的优势及其在UE5引擎中的实现和优化。此外,文章还特别介绍了基于深度学习的动画技术,如PFNN、MANN和MotorNerve系统,以及它们在游戏开发中的重要应用和前景。无论您是游戏开发者、动画师,还是对游戏技术感兴趣的读者,这篇专业且详尽的文章都将是您的宝贵资源。立即阅读,开启您对游戏动画技术的全新认知之旅!
2024-04-09 10:08:43
2538
原创 基于物理的可微渲染
可微渲染(Differentiable Rendering)是一种新兴的渲染技术,它结合了计算机图形学和机器学习,特别是的技术。与传统的渲染技术相比,可微渲染最大的特点是其渲染过程是的,这意味着可以通过计算渲染图像的梯度来优化渲染参数。需要通过梯度下降算法来学习场景参数、光照条件或材料属性等任务中。
2024-03-28 14:15:54
1979
原创 基于可变分辨率的半透明特效渲染优化方案
粒子效果在游戏中无处不在。大颗粒系统常见于烟雾、火灾、爆炸、灰尘和雾。如果这些效果填满屏幕,overdraw会非常严重,帧率会掉得很快,即使是在技术成熟的 3A 游戏中也是如此。以至于来半透明渲染的优化问题一直都是难题。
2024-03-05 17:03:56
1416
原创 VDB-具有动态拓扑的高分辨率稀疏体积表示方法
论文提出了一个称为VDB的新颖数据结构和算法,它可以高效地表示三维网格上的稀疏、随时间变化的数据。VDB的数据结构基于B+树,包含一个动态的根节点,以及多个内部节点和叶节点层次,这些节点具有不同的分支因子和较小的尺寸。它通过倒序遍历已经访问过的节点来实现随机访问的显著加速,同时保持了固定的树深度和分支因子。
2024-02-10 00:58:20
1449
原创 3D Gaussian Splatting-实时辐射场渲染技术
3D Gaussian Splatting是一种新颖的连续体表示,能够高效地表示场景并支持快速渲染。交错优化高斯点属性和密度控制实现了高斯点集的紧凑表示。基于瓦片的渲染算法实现了高效可微分的渲染,支持了快速训练和实时渲染。方法在多个数据集上实现了高质量和实时效果,同时训练速度和内存占用较低。3D高斯模型可被视为一种介于体积和表面表示之间的折衷,具有广泛的适用性。尽管方法在某些区域存在缺陷,但总体上达到了高质量实时神经辐射场渲染的要求。
2024-01-31 11:42:56
2034
原创 Mesh Shader介绍
Mesh Shader 是一种新型的 GPU 编程模型,它是为了解决传统的图形管线在处理复杂几何体时的瓶颈而设计的。Mesh Shader 提供了一种更灵活、更高效的方式来处理大量的几何体,特别是在现代的实时 3D 渲染环境中。在传统的图形管线中,顶点着色器和几何着色器是按顶点或图元(如三角形)顺序执行的,这种方式在处理大量几何体时可能会导致 GPU 的计算能力没有被充分利用。
2023-05-28 17:47:27
4255
原创 ue多线程简单概述
在任务图中,每个任务都是由一个函数表示,可以在一个线程上执行。这个调度过程是自动完成的,无需手动干预。此外,如果线程需要访问UE的游戏对象和函数,则需要在创建线程时将主线程上下文传递给它。多线程是一种非常复杂的概念,需要对系统的底层结构和算法有深入的了解。在游戏开发中,多线程可以极大地提高游戏的性能,但是如果不小心处理,也可能导致游戏出现各种问题。FRunnable是UE的一个轻量级线程抽象,提供了简单的线程管理和同步方法。总之,UE的多线程模型提供了一种灵活且高效的方法来处理复杂的游戏逻辑。
2023-03-26 01:02:10
1233
原创 unity 性能自适应
每个游戏在一些指标下会导致性能变化比较大,所以这个unity的插件就是为了解决每个时刻对性能影响的控制。他会包括是否动态合批,限制帧率,lod的切换距离,lut的分辨率,msaa的子像素个数,是否支持动态分辨率,csm的个数,阴影贴图的距离,阴影贴图的分辨率,是否开启不透明从前往后渲染顺序,是否渲染半透明物体,远裁剪面距离。
2022-09-30 11:32:45
1791
1
原创 unity core-prefab
添加一个组件到prefab,需要通过将组件对应的对象存在磁盘种后,再标记为prefab的一个部分。这部分在prefab.cpp中。
2022-09-01 22:36:55
1657
原创 unity computeshader的可读写buffer
computeshader中的读写的buffer,在opengl上是用ssbo实现的。KernelState中的inBuffers,outBuffers这些buffer,会走到GfxDeviceGLESSetComputeBuffer,如果索引0x7FFFFF表示GLE中实际上不存在缓冲区,但仍然需要计数器。则用BindShaderStorageBuffer来绑定ssbo,...
2022-07-27 16:54:08
2146
原创 unity texturestreaming
texturestreaming是想通过摄像机可见范围内的对象区分指定的mipmap,然后只流送指定的mipmap给到mesh中。
2022-07-15 17:56:16
1400
原创 unity srpbatcher
srpbatcher是使用ubo实现的,如果是不需要更改的信息他不会更新这个对象的ubo的索引。在GraphicsCapsGLES.cpp中初始化时会确定是否使用了es3来确定是否支持srpbatcher。如果支持则在GpuProgramParamsGLES.cpp中填充参数时执行FillParamsBaseGLES。在有使用uniform的情况下更新ubo的绑定对象UpdateUBOBindings。如果有使用srpbatcher则会判断该是否要重新绑定这个ubo的索引。......
2022-06-17 16:22:31
1177
原创 ozzanimation-基于sse的动作系统
ozzanimation是利用sse也就是用simd单指令多数据的形式来处理animation的动作变化、转换坐标以及ik等的处理方式。可以比传统的直接矩阵转换快。
2022-06-07 22:50:22
720
原创 UE5-nanite数据流处理
入口:在DeferredShadingRenderer中的render,如果开启了nanite,会进行数据流的更新。核心入口是Nanite::GStreamingManager.BeginAsyncUpdate和Nanite::GStreamingManager.EndAsyncUpdate以及Nanite::GStreamingManager.SubmitFrameStreamingRequests。初始化:NaniteStreamingManager种对数据流的初始化执行InitRHI,
2022-05-13 00:19:41
1943
原创 ue5-Nanite运行时数据获取
nanite的执行起始:VisBuffer64是可视信息的纹理对象,在NaniteRender.cpp中的FRasterContext InitRasterContext,这里对RasterContext的对象初始化,其中的VisBuffer64就在这里创建的纹理。在LumenSceneRendering的nanite阶段会初始化。除了lumen的处理,在FDeferredShadingSceneRenderer::Render在开启了nanite后也会初始化FDeferred.
2022-04-16 16:37:01
3440
原创 UE5-Nanite构建
在MeshBuilderModule.cpp的FMeshBuilderModule::BuildMesh中执行到StaticMeshBuilder.cpp的BuildNanite会执行nanite的构建NaniteBuilderModule.Build执行到NaniteBuilder.cpp的FBuilderModule::Build分线程构建三角形首先从Sections中拿到材质索引设置到MaterialIndices中。执行BuildNaniteData,根据三角形的数据执行C.
2022-04-10 23:10:25
3347
原创 Unity-URP-基于模板的延迟渲染
URP延迟渲染的差异:在urp的12版本以上支持了延迟渲染,但是这个延迟渲染跟我们之前说的延迟渲染管线会有一些差异。核心是他构建光照这块不太一样。传统的方式是要通过簇的方式创建簇中所有符合的灯光列表,然后最后才根据像素所在的簇给到灯光的颜色叠加。而这个方式的gbuffer部分还是会输出gbuffer0.rgb(漫反射颜色),gbuffer0.a(材质索引),gbuffer1.rgb(高光信息),gbuffer1.a(环境遮蔽),gbuffer2.rgb(世界空间法线),gbuffer2.a(光滑度),g
2022-04-05 15:07:56
5716
原创 ue5-预计算可视性体积(PVS)
构建pvsFStaticLightingSystem::BeginLightmassProcess在lightmass的构建过程中,如果设置了pvs的构建则会一起构建。执行InitiateLightmassProcessor,然后在里面执行LightmassProcessor->InitiateExport在里面如果选择了生成pvs则会创建FGuid::NewGuid然后执行Exporter->WriteToChannel(Statistics, DebugMappin.
2022-04-04 02:30:55
2432
原创 HDRP-接触阴影ContactShadows
接触阴影是改善场景视觉深度和保真度的有效方法。 因为提供了一个更为准确的阴影近似, 实现其他阴影算法难以达到的波状外形阴影。接触阴影cpu设置:在HDRenderPipeline中的Render下执行ExecuteRenderRequest的时候,是跟ue5的延迟渲染的做法一样,把需要的效果都在这里展现了,其中接触阴影RenderContactShadows就在这里执行。在RenderContactShadows中var parameters = PrepareContactSh..
2022-03-27 22:55:06
2616
原创 ue5-Nanite网格体的渲染方式
Nanite网格体的computeshader处理渲染nanite的网格体是在FDeferredShadingSceneRenderer::Render的阶段执行NaniteRender.cpp的AddVisualizationPasses中执行FNaniteVisualizeCSFNaniteVisualizeCS会执行到/Engine/Private/Nanite/Visualize.usf的VisualizeCScomputeshader解析三角形信息VisualizeCS里首先会
2022-03-26 17:29:00
1503
原创 HDRP-GTAO
hdrp对ao的做法是gtao(Ground Truth Ambient Occlusion)的做法。通过AmbientOcclusion.cs,执行Render的时候,Dispatch,在里面PrepareRenderAOParameters创建ao的参数,包括执行的computeshader的内核。GTAO获取ao信号RenderAO执行gtao,执行到Runtime/Lighting/ScreenSpaceLighting/GTAO.compute。GTAOMain中通过GetPositi
2022-03-24 23:39:23
1038
原创 hdrp-延迟渲染-gbuffer
GBufferManagergbuffer在HDRenderPipeline构造的时候会创建GBufferManager,默认会构造指定数量的gbuffer的rt,一般是4张rt加一张深度rt。RenderGBuffer在ExecuteRenderRequest中执行RenderGBuffer,然后执行CoreUtils.SetRenderTarget(cmd, m_GbufferManager.GetBuffersRTI(hdCamera.frameSettings), m_SharedR
2022-03-19 17:45:42
1566
原创 hdrp-延迟渲染光照渲染
BuildGPULightLists在ExecuteRenderRequest中执行BuildGPULightLists来构建整个gpu的灯光列表。BuildGPULightListsCommon在LightLoop中的BuildGPULightListsCommon,在里面会通过PrepareBuildGPULightListParameters先准备好数据,在里面创建BuildGPULightListParameters,往里面填参数,包括要执行的cs。然后在Prepare.
2022-03-19 17:42:25
1295
1
原创 hdrp的后处理-颜色映射ColorGradingLUT
hdrp是通过computeshader来处理颜色映射的,让效果能够更生动。执行的computeshader是PostProcessing下的LutBuilder3D.compute的KBuild内核。AlexaLogC色彩空间首先要将颜色值映射到AlexaLogC的空间,主要目的是要一个能到58.85666大小的颜色空间,方便后面计算。这个调色空间可以让色彩生成更明亮的效果。如果_Params.x大于0则执行颜色映射,执行ColorGrade。在ColorGrade里面首.
2022-03-15 23:35:58
1761
原创 unity hdrp的TAA
入口当hdrp开启了后处理后会执行PostProcessSystem.cs的Render,然后如果开启了taa则执行taaEnabled中的内容获取历史和申请当前颜色rt,获取历史移动速度和当前移动速度rtGrabTemporalAntialiasingHistoryTextures主要收集历史颜色rt和申请当前颜色rt的。GrabVelocityMagnitudeHistoryTextures主要是收集历史速度变化rt和当前速度变化rt的。TAA核心DoTempo.
2022-03-14 01:37:37
9725
1
原创 ogre源码-动作系统animation
ogre的动画系统写在OgreMain中。骨骼资源导入SkeletonManager是骨骼的创建管理,创建有两种方式,第一种是直接new出Skeleton,第二种是通过资源导入。资源导入时执行到OgreResource的Resource::prepare,然后执行prepareImpl,这个是OgreResource.h的prepareImpl。然后Skeleton继承Resource,所以导入时执行Skeleton::prepareImpl。先获取资源ResourceGro
2022-03-09 00:34:18
661
原创 unity-builtin实现体积光
参考GitHub - SlightlyMad/VolumetricLights: Volumetric Lights for Unity这里实现的体积光会包括几个方面的影响。制作的核心:核心是灯光类型(平行光,点光源,聚光灯)。这些灯光类型会受到米尔散射通透度影响,高度指数雾,级联阴影,噪音影响以及降噪。原理:无论哪个光照,他都会按照步进的次数跟摄像机的四个视角顶点的距离做比较,然后再跟深度以及地面比较,看究竟跟哪个最近则选择谁是最终碰撞点,然后选取...
2022-03-06 22:55:41
4921
原创 ue5-屏幕空间反射SSR
在FDeferredShadingSceneRenderer::Render中如果是bRenderDeferredLighting,也就是渲染延迟光照,则可以执行RenderDeferredReflectionsAndSkyLighting。在IndirectLightRendering.cpp的RenderDeferredReflectionsAndSkyLighting中如果ViewPipelineState.ReflectionsMethod == EReflectionsMethod::SSR会
2022-03-03 23:40:38
2490
原创 ue5-lumen-RenderDiffuseIndirectAndAmbientOcclusion中对lumen的探针执行计算获取探针的光照来叠加
lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien
2022-03-01 20:54:00
1168
原创 ue5-lumen的光照探针数据收集RenderLumenSceneVisualization
lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien
2022-02-28 21:22:35
1119
原创 ue5-lumen的场景数据更新与写入UpdateLumenScene
lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien
2022-02-28 21:15:04
1012
原创 ue5-lumen的场景重建BeginUpdateLumenSceneTasks
lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien
2022-02-28 21:06:46
1157
原创 unity的hdrp对半透明渲染的upsample做法以及ue5的做法
在升采样中,hdrp会执行UpsampleTransparent.shader。他参考的是Nividia的Fast rendering of opacity-mapped particles using DirectX 11 tessellation and mixed resolutions。这里面又个upsample的做法。https://developer.download.nvidia.cn/assets/gamedev/files/sdk/11/OpacityMappingSDKWhitePape
2022-02-27 01:46:37
4890
原创 UE5-lumen的光照计算RenderLumenSceneLighting
RenderLumenSceneLighting主要是lumen计算直接光与间接光的地方,主要通过体素以及有号距离场来计算光照效果。总体的步骤如下:1.初始化光照的uav,srv,buffer2.meshcard层面的剔除3.间接光照参数4.合并lumen场景光照需要的5.lumen直接光照计算6.合入漫反射信息,为后续间接光使用7.过滤颜色8.计算体素和有号距离场的间接光照可见对象9.计算lumen的半透明光照效果LumenSceneLighting.c
2022-02-21 01:40:48
3111
Mesh Slicer v1.8.rar
2021-10-19
LuaProfiler-For-Unity-master.zip
2020-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人