Category: Unreal Engine 4

Ue4 渲染流程

TranslucentRendering.h: Translucent rendering definitions. TranslucentRendering.cpp: Translucent rendering implementation.     这部分用来渲染透明网格。         后面两个函数处理参数后都是调用的 DrawMesh() 实现,DrawMesh 实现框架如下:         这里关键点就是判断,只处理透明材质: if (IsTranslucentBlendMode(BlendMode))。         然后来看可能是那里调用了上面的处理函数,TranslucentRendering.cpp 文件里面最后的几个实现方法是来自 DeferredShadingRenderer.h: Scene rendering definitions. 的,我们溯源会看到如下信息:     目测 DeferredShadingRenderer.h: Scene rendering definitions. 定义了完整的场景渲染方法。                    
Read More

UE4渲染模块分析

UE4的渲染模块是一个独立的模块,这篇文章从该模块的设计理念和思路进行剖析。 通常渲染模块由如下几个部分组成: 场景的描述 场景遍历和拣选 渲染的执行         场景的描述     UE4场景管理相关的数据结构如下: FScene 场景类 FPrimitiveSceneProxy 场景里的几何体类 FPrimitiveSceneInfo 场景里的结点(拥有几何体和状态信息)     每个几何体具有材质属性,相关的数据结构如下: FMaterial 材质接口类,提供材质属性的查询(eg. blend mode)和shader查找。 FMaterialResoruce UMaterial实现的具体的FMaterial FMaterialRenderProxy 渲染线程用的Material对象,提供FMaterial的访问和材质参数的访问(eg. scaler, vector, texture parameter等参数)。             场景的遍历和拣选     在简单的3D渲染引擎中,通常的做法是:遍历场景结点,根据视景体进行判断该结点是否可见,如果可见则保存到渲染队列中,否则忽略之。最后对渲染队列中的结点进行按材质排序,然后绘制它们。     在UE4中,使用了不同于上面的方式进行处理,它对几何体进行分类处理(Static Primitive和Dynamic Primitive)。     Static Render Path 在FScene对象中存在一些static
Read More

UE4 四种加载资源的方式

    http://blog.csdn.net/u012385432/article/details/52154737     在UNITY中,我们加载资源一般是通过Resources.Load(path).即可完成.该方法返回的是Object类型.如果你想要的是材质或者贴图等等,只要价格类型转换的关键字就可以了例如 as Material,则可以返回一个材质的引用…     在UE4中,加载资源的方式区别较大.经过自己一个下午的摸索,目前发现了这4种资源的加载方式.在UE4中,它的蓝图就大致等于UNTIY中的prefab.所以我们将资源弄成了蓝图的方式来进行加载.             第一种: 如果该蓝图有C++类(或者说是从C++类创建的蓝图),直接进行加载     ATemp* spawnActor = GetWorld()->SpawnActor<ATemp>(ATemp::StaticClass());     所有的加载资源并创建到场景中的方式都离不开SpawnActor这一句代码.如果你的蓝图包含了C++类,那么可以直接访问类的StaticClass     剩下的加载方式均是单纯的加载蓝图,并没有对应的C++类             第二种: 通过ConstructorHelpers来加载     static ConstructorHelpers::FClassFinder<AActor> bpClass(TEXT(“/Game/BluePrint/TestObj”)); if(bpClass.Class != NULL) { GetWorld()->SpawnActor(bpClass.Class); }     FClassFinder是一个结构体,其中的Class成员变量是TSubClassof<T>类型的.所以我们只需要SpawnActor(bpClass.Class)就可以生成我们要的东西了    
Read More