自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 资源 (10)
  • 收藏
  • 关注

原创 实时角色控制:基于相位函数神经网络的研究

本文提出了一种基于相位函数神经网络(PFNN)的实时角色控制方法,旨在实现高质量、自然流畅的角色运动,并具有良好的环境适应性。该方法包含三个主要阶段:数据预处理、网络训练和运行时。本文对方法的局限性进行了讨论,并提出了未来的改进方向。总体而言,本文提出了一种有效的实时角色控制方法,具有显著的应用前景

2024-04-17 09:30:26 880

原创 游戏动画技术:从传统到深度学习

文章详细介绍了传统游戏动画技术的原理,包括骨骼动画、蒙皮技术,以及状态机、动作融合和IK等交互控制方法。同时,深入探讨了Motion Matching技术的优势及其在UE5引擎中的实现和优化。此外,文章还特别介绍了基于深度学习的动画技术,如PFNN、MANN和MotorNerve系统,以及它们在游戏开发中的重要应用和前景。无论您是游戏开发者、动画师,还是对游戏技术感兴趣的读者,这篇专业且详尽的文章都将是您的宝贵资源。立即阅读,开启您对游戏动画技术的全新认知之旅!

2024-04-09 10:08:43 1095

原创 基于物理的可微渲染

可微渲染(Differentiable Rendering)是一种新兴的渲染技术,它结合了计算机图形学和机器学习,特别是的技术。与传统的渲染技术相比,可微渲染最大的特点是其渲染过程是的,这意味着可以通过计算渲染图像的梯度来优化渲染参数。需要通过梯度下降算法来学习场景参数、光照条件或材料属性等任务中。

2024-03-28 14:15:54 732

原创 基于可变分辨率的半透明特效渲染优化方案

粒子效果在游戏中无处不在。大颗粒系统常见于烟雾、火灾、爆炸、灰尘和雾。如果这些效果填满屏幕,overdraw会非常严重,帧率会掉得很快,即使是在技术成熟的 3A 游戏中也是如此。以至于来半透明渲染的优化问题一直都是难题。

2024-03-05 17:03:56 985

原创 VDB-具有动态拓扑的高分辨率稀疏体积表示方法

论文提出了一个称为VDB的新颖数据结构和算法,它可以高效地表示三维网格上的稀疏、随时间变化的数据。VDB的数据结构基于B+树,包含一个动态的根节点,以及多个内部节点和叶节点层次,这些节点具有不同的分支因子和较小的尺寸。它通过倒序遍历已经访问过的节点来实现随机访问的显著加速,同时保持了固定的树深度和分支因子。

2024-02-10 00:58:20 824

原创 3D Gaussian Splatting-实时辐射场渲染技术

3D Gaussian Splatting是一种新颖的连续体表示,能够高效地表示场景并支持快速渲染。交错优化高斯点属性和密度控制实现了高斯点集的紧凑表示。基于瓦片的渲染算法实现了高效可微分的渲染,支持了快速训练和实时渲染。方法在多个数据集上实现了高质量和实时效果,同时训练速度和内存占用较低。3D高斯模型可被视为一种介于体积和表面表示之间的折衷,具有广泛的适用性。尽管方法在某些区域存在缺陷,但总体上达到了高质量实时神经辐射场渲染的要求。

2024-01-31 11:42:56 1194

原创 Mesh Shader介绍

Mesh Shader 是一种新型的 GPU 编程模型,它是为了解决传统的图形管线在处理复杂几何体时的瓶颈而设计的。Mesh Shader 提供了一种更灵活、更高效的方式来处理大量的几何体,特别是在现代的实时 3D 渲染环境中。在传统的图形管线中,顶点着色器和几何着色器是按顶点或图元(如三角形)顺序执行的,这种方式在处理大量几何体时可能会导致 GPU 的计算能力没有被充分利用。

2023-05-28 17:47:27 2228

原创 ue多线程简单概述

在任务图中,每个任务都是由一个函数表示,可以在一个线程上执行。这个调度过程是自动完成的,无需手动干预。此外,如果线程需要访问UE的游戏对象和函数,则需要在创建线程时将主线程上下文传递给它。多线程是一种非常复杂的概念,需要对系统的底层结构和算法有深入的了解。在游戏开发中,多线程可以极大地提高游戏的性能,但是如果不小心处理,也可能导致游戏出现各种问题。FRunnable是UE的一个轻量级线程抽象,提供了简单的线程管理和同步方法。总之,UE的多线程模型提供了一种灵活且高效的方法来处理复杂的游戏逻辑。

2023-03-26 01:02:10 836 1

原创 unity 性能自适应

每个游戏在一些指标下会导致性能变化比较大,所以这个unity的插件就是为了解决每个时刻对性能影响的控制。他会包括是否动态合批,限制帧率,lod的切换距离,lut的分辨率,msaa的子像素个数,是否支持动态分辨率,csm的个数,阴影贴图的距离,阴影贴图的分辨率,是否开启不透明从前往后渲染顺序,是否渲染半透明物体,远裁剪面距离。

2022-09-30 11:32:45 1542 1

原创 unity core-prefab

添加一个组件到prefab,需要通过将组件对应的对象存在磁盘种后,再标记为prefab的一个部分。这部分在prefab.cpp中。

2022-09-01 22:36:55 1413

原创 unity computeshader的可读写buffer

computeshader中的读写的buffer,在opengl上是用ssbo实现的。KernelState中的inBuffers,outBuffers这些buffer,会走到GfxDeviceGLESSetComputeBuffer,如果索引0x7FFFFF表示GLE中实际上不存在缓冲区,但仍然需要计数器。则用BindShaderStorageBuffer来绑定ssbo,...

2022-07-27 16:54:08 1847

原创 unity spritemask实现

spritemask能实现ui上裁剪部分区域或者叫只显示部分区域。这里介绍相关实现

2022-07-15 17:59:03 1700

原创 unity texturestreaming

texturestreaming是想通过摄像机可见范围内的对象区分指定的mipmap,然后只流送指定的mipmap给到mesh中。

2022-07-15 17:56:16 1242

原创 unity srpbatcher

srpbatcher是使用ubo实现的,如果是不需要更改的信息他不会更新这个对象的ubo的索引。在GraphicsCapsGLES.cpp中初始化时会确定是否使用了es3来确定是否支持srpbatcher。如果支持则在GpuProgramParamsGLES.cpp中填充参数时执行FillParamsBaseGLES。在有使用uniform的情况下更新ubo的绑定对象UpdateUBOBindings。如果有使用srpbatcher则会判断该是否要重新绑定这个ubo的索引。......

2022-06-17 16:22:31 1049

原创 ozzanimation-基于sse的动作系统

ozzanimation是利用sse也就是用simd单指令多数据的形式来处理animation的动作变化、转换坐标以及ik等的处理方式。可以比传统的直接矩阵转换快。

2022-06-07 22:50:22 582

原创 UE5-nanite数据流处理

入口:在DeferredShadingRenderer中的render,如果开启了nanite,会进行数据流的更新。核心入口是Nanite::GStreamingManager.BeginAsyncUpdate和Nanite::GStreamingManager.EndAsyncUpdate以及Nanite::GStreamingManager.SubmitFrameStreamingRequests。初始化:NaniteStreamingManager种对数据流的初始化执行InitRHI,

2022-05-13 00:19:41 1475

原创 ue5-Nanite运行时数据获取

nanite的执行起始:VisBuffer64是可视信息的纹理对象,在NaniteRender.cpp中的FRasterContext InitRasterContext,这里对RasterContext的对象初始化,其中的VisBuffer64就在这里创建的纹理。在LumenSceneRendering的nanite阶段会初始化。除了lumen的处理,在FDeferredShadingSceneRenderer::Render在开启了nanite后也会初始化FDeferred.

2022-04-16 16:37:01 3105

原创 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 2729

原创 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 5236

原创 ue5-预计算可视性体积(PVS)

构建pvsFStaticLightingSystem::BeginLightmassProcess在lightmass的构建过程中,如果设置了pvs的构建则会一起构建。执行InitiateLightmassProcessor,然后在里面执行LightmassProcessor->InitiateExport在里面如果选择了生成pvs则会创建FGuid::NewGuid然后执行Exporter->WriteToChannel(Statistics, DebugMappin.

2022-04-04 02:30:55 1616

原创 HDRP-接触阴影ContactShadows

接触阴影是改善场景视觉深度和保真度的有效方法。 因为提供了一个更为准确的阴影近似, 实现其他阴影算法难以达到的波状外形阴影。接触阴影cpu设置:在HDRenderPipeline中的Render下执行ExecuteRenderRequest的时候,是跟ue5的延迟渲染的做法一样,把需要的效果都在这里展现了,其中接触阴影RenderContactShadows就在这里执行。在RenderContactShadows中var parameters = PrepareContactSh..

2022-03-27 22:55:06 1979

原创 ue5-Nanite网格体的渲染方式

Nanite网格体的computeshader处理渲染nanite的网格体是在FDeferredShadingSceneRenderer::Render的阶段执行NaniteRender.cpp的AddVisualizationPasses中执行FNaniteVisualizeCSFNaniteVisualizeCS会执行到/Engine/Private/Nanite/Visualize.usf的VisualizeCScomputeshader解析三角形信息VisualizeCS里首先会

2022-03-26 17:29:00 1265

原创 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 855

原创 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 1351

原创 hdrp-延迟渲染光照渲染

BuildGPULightLists在ExecuteRenderRequest中执行BuildGPULightLists来构建整个gpu的灯光列表。BuildGPULightListsCommon在LightLoop中的BuildGPULightListsCommon,在里面会通过PrepareBuildGPULightListParameters先准备好数据,在里面创建BuildGPULightListParameters,往里面填参数,包括要执行的cs。然后在Prepare.

2022-03-19 17:42:25 1140 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 1551

原创 unity hdrp的TAA

入口当hdrp开启了后处理后会执行PostProcessSystem.cs的Render,然后如果开启了taa则执行taaEnabled中的内容获取历史和申请当前颜色rt,获取历史移动速度和当前移动速度rtGrabTemporalAntialiasingHistoryTextures主要收集历史颜色rt和申请当前颜色rt的。GrabVelocityMagnitudeHistoryTextures主要是收集历史速度变化rt和当前速度变化rt的。TAA核心DoTempo.

2022-03-14 01:37:37 9497

原创 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 595

原创 unity-builtin实现体积光

参考GitHub - SlightlyMad/VolumetricLights: Volumetric Lights for Unity这里实现的体积光会包括几个方面的影响。制作的核心:核心是灯光类型(平行光,点光源,聚光灯)。这些灯光类型会受到米尔散射通透度影响,高度指数雾,级联阴影,噪音影响以及降噪。原理:无论哪个光照,他都会按照步进的次数跟摄像机的四个视角顶点的距离做比较,然后再跟深度以及地面比较,看究竟跟哪个最近则选择谁是最终碰撞点,然后选取...

2022-03-06 22:55:41 4617

原创 ue5-屏幕空间反射SSR

在FDeferredShadingSceneRenderer::Render中如果是bRenderDeferredLighting,也就是渲染延迟光照,则可以执行RenderDeferredReflectionsAndSkyLighting。在IndirectLightRendering.cpp的RenderDeferredReflectionsAndSkyLighting中如果ViewPipelineState.ReflectionsMethod == EReflectionsMethod::SSR会

2022-03-03 23:40:38 1987

原创 ue5-lumen-RenderDiffuseIndirectAndAmbientOcclusion中对lumen的探针执行计算获取探针的光照来叠加

lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien

2022-03-01 20:54:00 926

原创 ue5-lumen的光照探针数据收集RenderLumenSceneVisualization

lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien

2022-02-28 21:22:35 835

原创 ue5-lumen的场景数据更新与写入UpdateLumenScene

lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien

2022-02-28 21:15:04 777

原创 ue5-lumen的场景重建BeginUpdateLumenSceneTasks

lumen在渲染的时候会走几个步骤:第一是BeginUpdateLumenSceneTasks对场景的距离场体素重建第二是UpdateLumenScene更新lumen的场景以及包括用nanite提出并且上传lumen的card第三是RenderLumenSceneLighting获取lumen光照的直接光与间接光第四是RenderLumenSceneVisualization可视化探针的获取与设置,体素步进与辐射度设置。第五是RenderDiffuseIndirectAndAmbien

2022-02-28 21:06:46 969

原创 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 4715

原创 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 2582

原创 unity code-静态批处理

要进入静态批处理,需要给到channel,unity的channel保存的是包括顶点信息,uv信息之类的材质相关信息。PrePassRenderLoop::RenderBasePass或者 ForwardShaderRenderLoop::PerformRendering或者ForwardShaderRenderLoop::CollectShadows或者PrePassRenderLoop::RenderFinalPass执行m_BatchRenderer.Add,把组织好的channel放到批处理

2022-02-21 00:09:23 1785

原创 unity code-probe

球谐九个值的计算:在LightManager::FindForwardLightsForObject中无论执行CrossBlendForwardLights或者函数本身都会计算AddLightToSH,这里就是球谐的九个值计算的部分。SphericalHarmonics.h这里是球谐函数的计算类。首先要确定是直线光还是其他光线,如果是直线光就只看旋转方向,如果是其他光线需要知道距离和旋转。光线强度:CalculateLightColorAtPointForSH这里主要是根据直线光或者其他

2022-02-20 23:59:39 304 1

原创 unity code-动作系统Animator

AnimatorOverrideController是运行时版本可以运行时更改controller,AnimatorController是编辑器版本,不能运行时修改,所以运行时只能通过用AnimatorOverrideController来替换才行CreateObjectAnimator是动作状态机的入口,他是继承Behaviour的,所以他能拖到gameobject上去AwakeFromLoad首先执行CreateObject,他会先清理对象ClearObject();avat

2022-02-20 23:54:47 1125

原创 unity code-shader的拆解为顶点着色以及片元着色(opengles3)

opengles3的shader在GlslGpuProgramGLES30中是针对gles3的shader的识别和提交到opengl渲染的类。GlslGpuProgramGLES30::Create (const std::string &shaderString, ChannelAssigns& channels)是把shader代码字符串拆解下来放到channels这个shader的缓存内。m_Programs[0] = glCreateProgram())是创建shader

2022-02-20 23:45:44 700

ozzanimation

ozzanimation

2022-06-07

unity体积光,Sunshaft

unity体积光,Sunshaft

2022-03-06

bullet3-master.zip

bullet物理引擎源码

2022-01-07

Mesh Slicer v1.8.rar

Mesh Slicer 是一个可以进行切割人体或者切割其他物体的能力的,他比较好的一点是组织三角面的能力,不会像其他切割网格的方式会产生把多个原本独立的网格连接起来(因为这样索引设置简单)。

2021-10-19

MultipleLight.7z

unity低消耗多光源

2021-06-17

PlaneReflection.7z

低消耗的实现倒影效果

2021-06-17

PointLightOcclusion.7z

PointLightOcclusion.7z

2021-06-16

LuaProfiler-For-Unity-master.zip

unity端测试lua性能的工具,支持 XLua、SLua、ToLua,本工具是基于远程Socket的Profiler工具,因此它支持Android,IOS 的真机 Profiler。

2020-01-08

服务器端ActionScript语言参考

服务器端ActionScript语言参考,可以做后台哦

2013-11-06

Cocos2d-xmobile game development

cocos2d-x mobile game 教程 游戏。绝对有帮助。

2013-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除