ue4 模板类实例化_UE4材质系统源码分析之材质编译成HLSL CODE

这篇文章所覆盖的内容是:UE4从材质蓝图生成原始的HLSL代码的基本流程,这儿的材质特指的Surface Domain类材质,其对应的Shader种类为MeshShader,只因这一类材质应用最为广泛,可用于描述任何3D Primitive表面属性,一个游戏中可见的90%以上材质都属此类。

如果你对UE4的材质系统、Shader系统的基础还不够了解。建议先简单了解读读UE的官方文档中关于材质编辑器使用的基本流程。

以下前两篇文章也有对材质、Shader做过简单的介绍。

Jiff:UE4渲染引擎模块简介(1)​zhuanlan.zhihu.com
Jiff:UE4材质系统源码分析之UMaterial和材质节点介绍​zhuanlan.zhihu.com

HLSL生成的核心功能类

UMaterial

UE4的材质类为UMaterial,生成Shader的入口函数有二:

一个用于资源Cooking,名为CacheResourceShadersForCooking

一个用于材质编辑和引擎运行时渲染,名为CacheResourceShadersForRendering

5d84ff6c4f4b00c52ca53d04b3b6ceb5.png

UMaterial中为单个FMaterial执行Shader生成的函数为CacheShadersForResources,CacheShadersForResources先会重建材质函数依赖信息、材质收集器依赖信息,并把此材质(或材质函数)所依赖的输出和输入纹理填充到依赖列表里。UMaterial本身并不编译材质和Shader,它依赖FMaterail类完成其所持有的Shader变种的编译。

FMaterial/FMaterialResource

前面的文章我提到过FMaterialResourceFMaterail的子类,用于UMaterial的渲染,FMaterialResource代表的是从一个截面(在某个Render API FeatureLevel、指定的平台下、指定材质品质预设下)时它对应的UMaterial的具体呈现。

FMaterialResource不是持有一个

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值