自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (178)
  • 收藏
  • 关注

原创 UE引擎 LandscapeGrass 实现机制分析(UE5.2)

材质Grass采样层配置显示结果。

2023-12-11 00:53:40 544 3

原创 UE地形系统材质混合实现和Shader生成分析(UE5 5.2)

随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是地形系统,地形系统两大构成因素:高度和多材质混合,此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。

2023-11-12 22:44:13 1471

原创 UE5 Profile 内存

UE5 提供了多种Profile内存(Mempry)的手段。

2023-07-12 00:01:39 1010 2

原创 UE5.2 Mobile安卓游戏 Graphics Profile工具使用总结

Android游戏Profile 图形帧的常用工具有: snapdragon profiler, renderdoc,(1)opengl es3.1/3.2或者vulkan(2)UE5 Android 打Debug包(3)USB连接电脑的设置:手机连接电脑,开启USB传输文件模式,开启开发者模式,打开USB调试模式,打开允许USB安装,打开启动GPU调试层下载地址:Snapdragon Profiler - Qualcomm Developer Network打开snapdragon profilerSta

2023-06-29 03:59:30 1149

原创 (UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

在 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析 这篇博客大致介绍HISM组件从游戏线程到渲染线程的重建KD-Tree和剔除并提交DrawCall逻辑,但是没有分析渲染层的大致数据结构和实现. 可以看出FHierarchicalStaticMeshSceneProxy 实际存储Instance数组数据来自于FInstancedStaticMeshSceneProxy FHierarchicalStaticMeshSceneProxy只是以FClu

2023-06-15 03:52:19 1471

原创 Unity Nsight Graphcis 使用

在渲染Profile中,大家经常喜欢使用Renderdoc软件, 之前我的一篇博客也介绍Renderdoc Profile渲染的流程Renderdoc适合查看Draw哪一步出差了,导致效果不符合理想,又或者是非常粗糙估算某次Drawcall的消耗时间。但是Renderdoc有个非常严重的缺点,无法具体查看某次DrawCall具体瓶颈, 比如具体消耗瓶颈是在VertexShader, 还是PixelShader,消耗瓶颈在Shader的哪一步计算,这些Renderdoc是无法查看的。

2023-05-06 04:04:25 1479 1

原创 Unity实现GPU Cull渲染

前言在网上看到不少有关于UE4 生成Texture的教程,但是有些可以成功生成,有些生成失败,有些是创建无法持久保存的Texture或者说是关掉编辑器重启后就变黑的Texture等等。

2023-05-05 02:38:24 1439

原创 UE4引擎的CopyTexture, CopyToResolveTarget

在图形渲染各种算法上,特别是对2D纹理的处理上,经常出现一种情况,我们需要将一张纹理的一部分拷贝到另外一张纹理上。如下所示UE4提供了CopyTexture和CopyToResolveTarget来实现拷贝一张纹理一部分到另外一张纹理上的类似功能。......

2022-07-19 01:59:38 2310 2

原创 UE4引擎自定义ScreenPass和MRT输出

在前面的博客 (UE4 4.27)插件添加GlobalShder 中我们定义了一个GlobalShader来对一张RT进行后处理, 那篇博客还自定义VertexShader, PixelShader, 顶点格式, 顶点数组等等,其实这个只是作为案例教学,实际上在UE4引擎里对一张纹(多张)纹理进行后处理已经有内置的RenderPass, 它是ScreenPass。UE4默认为我们定义了FScreenVS和配套DrawRectangle函数,我们只需要轻松编写自己PixelShader,就可以进行后处理。..

2022-07-10 23:17:39 1125

原创 UE5引擎 PC端的Landscape渲染浅分析

游戏目前发展趋势是大世界,而大世界必不可少的元素是大地形,UE引擎从地形系统有完善的渲染管线和工具链。

2022-07-04 00:44:37 3485

原创 (UE4 4.27)UE4的Texture生成和原理浅分析

UE4的Texture使用分析UE4的Texture使用分析UE4的Texture使用分析

2022-04-10 18:25:22 4790 2

原创 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析

UE4 UHierarchicalInstancedStaticMesh剔除原理分析UE4 UHierarchicalInstancedStaticMesh剔除原理分析UE4 UHierarchicalInstancedStaticMesh剔除原理分析

2022-04-08 02:24:07 6179 1

原创 地形渲染之四叉树(QuadTree)

地形的四叉树对象为一个地形,如下面所示:这里我们利用四叉树进行对地形进行分割,在此之前我分享两篇关于四叉树的技术博客:四叉树与八叉树和四叉树。这里我们以地形的三角形数量为条件进行四叉树的构建,如下面图所示:当然这里仅仅是一个类比,最终进行空间分区可能得到1块,也可能是4块,也可能是16块,也可能是64块,等等等。。。。。其实这取决于...

2022-04-06 00:40:51 2626 1

原创 UE4性能Profile的各种方式

Profile渲染阶段时间--stat scenerendering在RenderCore(.h,.cpp)声明定义profile字段,加入到局部函数,可以通过stat scenerendering指令来打印出相应时间

2022-03-20 01:33:23 2035

原创 RenderDoc Debug UE4 Shader

修改配置文件UnrealEngine\Engine\Config\ConsoleVariables.inir.Shaders.Optimize=0r.Shaders.KeepDebugInfo=1下载Renderdoc和开启Renderdoc插件F12按键截帧Debug PixelShader鼠标右键选取像素,点Debug进入PixelShader 代码Debug ComputeShader选取Dispatch的时候点击Debug...

2022-02-28 23:34:42 1664 1

原创 UE4 4.27 修改Mobile Forward管线支持Cluster多光源剔除

前言最近闲着没事想熟悉下UE4的图形模块(差不多算第一次碰这玩意),自己想寻找个需求,目前UE4 4.27的 Mobile Forward是不支持多光源的,默认是最大支持到4栈点光源. 于是,我萌发了一点想法,通过改造UE的Mobile Forward管线支持多光源剔除.分析UE MobileForward 的多点光源实现看下MobileBasePassPixelShader.usf的文件,你会发现是UE是“手动”多光源实现,硬编码最大4个点灯光。如下所示所以想支持多光源,后续必

2022-02-25 02:19:49 3426 4

原创 (UE4 4.27) UE4添加一次自定义的MeshPass实现移动端边缘发光

(UE4 4.27) UE4添加一次自定义的Mesh Render Pass(UE4 4.27) UE4添加一次自定义的Mesh Render Pass

2021-12-02 02:33:09 4837

原创 (UE4 4.27)自定义PrimitiveComponent

(UE4 4.27)自定义PrimitiveComponent(UE4 4.27)自定义PrimitiveComponent(UE4 4.27)自定义PrimitiveComponent

2021-10-29 02:07:51 3870 2

原创 (UE4 4.27)插件添加GlobalShder

前言在上一节我们大致介绍了UE4 GlobalShader的情况, 并且在引擎代码做了一些修改来阐述GlobalShader的声明-定义-使用。实际上在UE4开发中, GlobalShader不一定使用在修改引擎代码,也可能是用在插件, 比如LensDistortion插件就是使用GlobalShader定制一个RenderToTexture的功能。当然在插件中,GlobalShader的使用场景不仅仅局限于RenderToTexture, 可以ComputeShader等等来加速某些并行计算(如基于G

2021-10-15 00:55:07 1129 1

原创 (UE4 4.27)自定义GlobalShader

GlobalShader是什么我的理解是GlobalShader就是一个普通Shader, 只不过它存在一个全局Shader实例, 不和Mesh材质绑定, GlobalShader经常用于SinglePass, 如体积云, 各种可视化,全部的ComputeShaderPass都是用的GlobalShader.自定义GlobalShader添加C++ VertexShaderclass FMyVS : public FGlobalShader{ DECLARE_SHADER_TYPE

2021-09-30 23:09:23 2875 1

原创 (UE4 4.26)UE4 UObject的内存管理机制浅析

UE4 UObject的内存管理机制UE4 UObject的内存管理机制

2021-09-24 01:52:25 2638

原创 Houdini & UE4 程序化生成山脉和多植被撒点

程序化整体流程塑造地形山脉用HF(HeightField)系统的噪声,腐蚀,水流侵蚀等计算基本地形提取Rock层和Tree层主要是利用HF系统的mask by feature进行特征性提取,如斜率等等,然后进行一些释放的HF Remap操作.植被撒点地形撒点主要是用HF系统的scatter,能根据各种特征来进行撒点.树在tree Layer下进行撒点灌木在主干树的周围进行撒点蕨类植物在灌木的周围进...

2021-09-14 00:16:27 1635 1

原创 理解Houdini的(HeightField)Remap操作

Houdini的SOP节点存在大量的Remap操作, 字面上翻译为"重映射", 作用是通过Y-X函数曲线进行重新映射。比较典型的一个节点heightfield_remap可以看到下面的例子 HeightField-Flow-Filed得到flow图然后flow值域不在0-1之间,我们要进行一个函数映射remap, 把flow整个值域映射到0-1,方便其他软件的使用可以看到flow层的数据在 0-21.82 (x范围)之间, 映射到0-1之间,就采用y = 0.05的函数(大概估算),.

2021-09-11 17:34:18 834

原创 Houdini脚本Vex学习

Vex前言Vex是Houdini的控制脚本, 语法类似C/C++, 能方便编写出操控几何数据的程序.八面体阵列程序void add_pyramid(vector pos){ int p0 = addpoint(0, pos + {1, 0, 1}); int p1 = addpoint(0, pos + {1, 0, -1}); int p2 = addpoint(0, pos + {-1, 0, 1}); int p3 = addpoint(0, .

2021-09-07 00:49:10 2388

原创 HoudiniEngine HDA和UE4使用入门

下载HoudiniEngineV2插件, 连接UE4HoudiniEngineV2的链接地址:https://github.com/sideeffects/HoudiniEngineForUnreal-v2此时得注意你的Houdini版本和HoudiniEngineV2的版本最好是一样的配置HoudiniEngine在UE4的目录, 用UE4同步打开Houdini在Houdini将节点图保存为HDA资源...

2021-09-02 02:58:15 1335

原创 Houdini程序化建模之简易螺旋梯子生成

软件版本Houdini 18.5.532生成思路现实生活中的螺旋梯子很常见,如下图所示,可见螺旋梯子的模块是一个地板 + 栏杆(红圈部分),每个模板不停的进行位置和旋转的变换就最终形成了螺旋梯子。Houdini实现基于上面的分析, 程序化螺旋梯子的思路就是 单个阶梯模板 + Copy复制进行copy不停的向上进行位移和角度的变换项目链接https://download.csdn.net/download/qq_29523119/2...

2021-08-31 01:19:58 723

原创 (UE4 4.26)UE4 C++ FMemory内存管理从入门到深入

UE4 C++内存管理从入门到深入UE4 C++内存管理从入门到深入

2021-08-22 23:01:42 4661 2

原创 Houdini地形创建

简介目前Houdini创建地形主要两种方式, Grid网格和HF(HeightField)节点创建Grid网格Grid节点 + Mountant节点原理: 利用各种噪波函数对Y进行偏移HF节点(HeightField)HeightField系列节点合成 + COP图形合成...

2021-08-12 13:02:26 1038

原创 UE4 C++反射从入门到原理剖解(UE4 4.26)

UE4 C++反射具体应用案例测试反射类ATestActor// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "TestActor.generated.h"UCLASS(Blueprintable, meta = (Dis..

2021-08-05 23:05:50 4129 1

原创 程序化物件放置(procedural placement)之泊松硬盘采样(poisson disk sampling)

poisson disc samplingpoisson disc samplingpoisson disc samplingpoisson disc samplingpoisson disc sampling

2021-05-23 05:48:48 1175 1

原创 Directx11进阶教程之Cluster Based Deffered Shading

前言很多游戏中存在大量的点光源(PointLight),环境艺术家为了让游戏模拟现实的氛围,一个场景下放下上千个点光源(PointLight)毫不奇怪。在上一章中 Directx11进阶教程之Tiled Based Deffered Shading我们介绍了基于分块的光源剔除技术, 相对于传统的延迟渲染,渲染性能明显更好. 当然, Tiled Based Deffered Shading也是存在巨大缺点,而图形渲染届的大佬们为了克服 Tiled Based 的算法缺点,又提出了 Clust...

2021-05-17 03:02:47 890

原创 Directx11进阶教程之Tiled Based Deffered Shading

11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

2021-04-19 01:03:29 726

原创 Directx11进阶教程PBR(3)之IBL

IBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBLIBL

2021-04-07 04:14:55 1208

原创 Directx11进阶教程PBR(2)之BRDF

PBR单位电磁辐射的测量是辐射度学。有很多的辐射量单位来描述物体表面接受的光照,但是图形渲染经常用RGB三色谱来作为单位, 也就是float3.BRDF基本属性普通认为, 光照shading是在局部进行的, 在上面PBR物理现象的图17可以看出来。这种情况下,我们用V代表作为从物体表面观察点到人眼睛的单位方向向量,用 L 代表物体表面观察点的入射光的反方向单位向量。物体对光的交互关系用双向反射分布函数(BRDF)来描述,也就是有关于:“一个物体表面点在给定的入射光照方向L和给定的观察方向..

2021-04-06 03:20:36 1023

原创 Directx11进阶教程PBR(1)之光的物理现象总结

Directx11进阶教程之PBR理论,BRDF, IBLDirectx11进阶教程之PBR理论,BRDF, IBL

2021-04-05 22:05:50 424 1

原创 RTTR(Run Time Type Reflection) C++反射原理实现剖解

1111111111111111111111111111111111111111111111111

2020-11-23 00:27:21 5315 1

原创 c++ 虚函数表, RTTI, dynamic_cast的探索

111111111111111111111111111111111111

2020-10-19 02:00:37 905 1

原创 C++多线程的生产者消费者问题: Queue(队列)和环形缓存(RingBuffer)的效率对比

111111111111111111111111111111111111111111111

2020-08-31 00:07:52 3491

原创 游戏中的寻路算法--Dijkstra算法和AStar(A*)算法

前言如今游戏中最最常用的两种寻路算法为Dijkstra算法和A*算法,虽然现代引擎中的Al寻路算法看似很复杂,其实大部分是Dijkstra算法或者A*算法的变种。导航网格(图数据)无论是2D游戏的导航网格或者3D游戏导航网格, 本质上就是一个图,里面包含了各种点数据和边数据。图(Graph)由点(Node)和边(Edge)构成,这里以二维为示例class FVector2D{public: float x; float y;}//2D位置...

2020-06-16 03:52:25 5949 1

原创 游戏内存管理三之GeneratorAllocator(通用的内存分配器)

前言在前面的游戏内存管理一之StackAllocator(堆栈分配器)和内存对齐和游戏内存管理二之PoolAllocator(池分配器)分别介绍了堆栈分配器和池管理器。堆栈分配器以堆栈的方式进行内存的分配和回收,并不是很灵活。而池分配器仅仅是针对一类对象,一类对象就是一个池,也就是我们存在N多种对象,就得用模板声明N种对象池,也是有点麻烦。所以希望实现一个比较通用的内存管理器,可以分配任意类型...

2019-11-19 01:34:12 486 1

DX11_CSM_OPT.rar

DX11_CSM_OPT.rar 代码

2018-02-08

DX11_CascadeShadowMap

DX11_CascadeShadowMap

2018-02-08

Directx11_CSM.rarDirectx11_CSM.rarDirectx11_CSM.rar

Directx11_CSM.rarvvDirectx11_CSM.rarDirectx11_CSM.rarDirectx11_CSM.rar

2018-01-23

Directx11_Basic.rarDirectx11_Basic.rarDirectx11_Basic.rar

Directx11_Basic.rarDirectx11_Basic.rarDirectx11_Basic.rarDirectx11_Basic.rar

2018-01-23

123.rar123.rar123.rar

123.rar123.rar123.rar123.rar123.rar123.rar123.rar123.rar123.rar

2017-12-19

OpenGL3.3_CascadeShadowMap1.rar

OpenGL3.3_CascadeShadowMap1.rar OpenGL3.3_CascadeShadowMap1.rar OpenGL3.3_CascadeShadowMap1.rar

2017-12-10

OpenGL_PBR+IBL+Specular+Texture1

OpenGL_PBR+IBL+Specular+Texture.rar OpenGL_PBR+IBL+Specular+Texture.rar OpenGL_PBR+IBL+Specular+Texture.rar

2017-11-19

OpenGL3.3_PBR+IBL_Specular-NoTexture.rar

OpenGL3.3_PBR+IBL_Specular-NoTexture.rar OpenGL3.3_PBR+IBL_Specular-NoTexture.rar

2017-11-18

OpenGL3.3_PBR_IBL_Diffuse.rar

OpenGL3.3_PBR_IBL_Diffuse.rarOpenGL3.3_PBR_IBL_Diffuse.rarOpenGL3.3_PBR_IBL_Diffuse.rar

2017-11-12

OpenGL3.3_IBL_Diffuse_Equireutangular1.rar

OpenGL3.3_IBL_Diffuse_Equireutangular1.rar OpenGL3.3_IBL_Diffuse_Equireutangular1.rar OpenGL3.3_IBL_Diffuse_Equireutangular1.rar

2017-11-12

OpenGL3.3_IBL_Diffuse_Equireutangular.rar

OpenGL3.3_IBL_Diffuse_Equireutangular.rarOpenGL3.3_IBL_Diffuse_Equireutangular.rarOpenGL3.3_IBL_Diffuse_Equireutangular.rar

2017-11-12

OpenGL3.3_PBR_TEXTURE.rar

OpenGL3.3_PBR_TEXTURE.rarOpenGL3.3_PBR_TEXTURE.rarOpenGL3.3_PBR_TEXTURE.rar

2017-11-06

OpenGL3.3_PbrNoTexture.rar

OpenGL3.3_PbrNoTexture.rarOpenGL3.3_PbrNoTexture.rarOpenGL3.3_PbrNoTexture.rarOpenGL3.3_PbrNoTexture.rar

2017-11-06

Directx11_SSAO.rar

Directx11_SSAO.rar Directx11_SSAO.rar Directx11_SSAO.rar Directx11_SSAO.rar

2017-10-31

OpenGL3.3_ShadowCubeMap_NoGeometry.rar

OpenGL3.3_ShadowCubeMap_NoGeometry.rarOpenGL3.3_ShadowCubeMap_NoGeometry.rarOpenGL3.3_ShadowCubeMap_NoGeometry.rar

2017-10-29

OpenGL3.3_Shadow_PointLight.rar

OpenGL3.3_Shadow_PointLight.rar OpenGL3.3_Shadow_PointLight.rar OpenGL3.3_Shadow_PointLight.rar OpenGL3.3_Shadow_PointLight.rar

2017-10-23

OpenGL3.3_ShadowMap_PCF.rar

OpenGL3.3_ShadowMap_PCF.rarOpenGL3.3_ShadowMap_PCF.rarOpenGL3.3_ShadowMap_PCF.rarOpenGL3.3_ShadowMap_PCF.rar

2017-10-22

OpenGL3.3_Ssao.rar

OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rarv OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar OpenGL3.3_Ssao.rar

2017-10-20

OpenGL3.3_DefferShading.rar

OpenGL3.3_DefferShading.rar OpenGL3.3_DefferShading.rar OpenGL3.3_DefferShading.rar OpenGL3.3_DefferShading.rar

2017-10-14

OpenGL3.3_Bloom.rar

OpenGL3.3_Bloom.rar

2017-10-13

UE4 FFT Ocean

UE4 FFT Ocean

2022-10-11

UE4测试CopyTexture和CopyToResolveTarget的代码

UE4测试CopyTexture和CopyToResolveTarget的代码

2022-07-19

UE4的自定义ScreenPass和MRT输出

UE4的自定义ScreenPass和MRT输出

2022-07-10

hdk_Dijkstra_Find_Path

hdk_Dijkstra_Find_Path

2021-12-06

CustomRenderComponent.zip

CustomRenderComponent.zip

2021-10-30

CustomRenderComponent.rar

UE4的定制渲染八面体的Mesh

2021-10-29

TestShader.rar

UE4 GlobalShader插件

2021-10-15

terrain_type1.hda

terrain_type1.hda

2021-09-14

step.hip 程序化螺旋梯子生成

step.hip 程序化螺旋梯子生成

2021-08-31

TestFreeImage.zip

TestFreeImage.zip

2021-05-23

DijkstraAndAstar.rar

c++实现Dijkstra和Astar.算法c++实现Dijkstra和Astar.算法c++实现Dijkstra和Astar.算法

2020-09-25

PathFind.rar

用C++代码实现了A*算法和Dijkstra算法。

2020-06-16

generatorAllocator.rar

generatorAllocator

2019-11-19

PoolAllocator.cpp

PoolAllocator池分配器PoolAllocator池分配器PoolAllocator池分配器

2019-10-14

StackAllocator(堆栈分配器)

游戏内存管理一之StackAllocator(堆栈分配器)

2019-10-11

DX11_DOF

DX11_DOFDX11_DOFDX11_DOFDX11_DOFDX11_DOFDX11_DOFDX11_DOFDX11_DOF

2018-04-19

D3D11_LoadFBX.rarD3D11_LoadFBX.rarD3D11_LoadFBX.rarD3D11_LoadFBX.rar

D3D11_LoadFBX.rarD3D11_LoadFBX.rarD3D11_LoadFBX.rar

2018-04-16

AdvanceMotionBlur

AdvanceMotionBlurAdvanceMotionBlurAdvanceMotionBlurAdvanceMotionBlur

2018-03-26

zyh-code-review.rar

zyh-code-review.rarzyh-code-review.rarzyh-code-review.rarzyh-code-review.rar

2018-03-12

计算机图形学书籍.PRT计算机图形学书籍.prt计算机图形学书籍.prt计算机图形学书籍.prt计算机图形学书籍.prt

计算机图形学书籍.PRT计算机图形学书籍.PRT计算机图形学书籍.PRT计算机图形学书籍.PRT

2018-03-09

空空如也

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

TA关注的人

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