找回密码
 立即注册
查看: 444|回复: 0

笔记

[复制链接]
发表于 2021-7-7 14:16 | 显示全部楼层 |阅读模式
1、vertex factory


顶点工厂继承于FRenderResource;是vertex shader的数据源;

两个重要的宏:

DECLARE_VERTEX_FACTORY_TYPE,

IMPLEMENT_VERTEX_FACTORY_TYPE( 这个宏将vertexfactory绑定到对应的shader中去)

上面两个宏在创建vertexfactory的时候用到,第一个要放在class里,第二个放到外边,两个宏的作用其实就是为vertex factory定义和实现了statictype属性和getType方法(返回statictype),statictype类型为FVertexFactoryType,代表顶点工厂种类的类。并且将vertexfactory加入到全局的顶点工厂列表中。从宏观上来看就是如下效果:
class CustomVertexFactory {

public:

        static FVertexFactoryType StaticType; (这里初始化的时候,会将.ush文件路径传进去,进而与当前vertexfactory绑定在一起);

        virtual FVertexFactoryType* GetType() const override;

}
IMPLEMENT_VERTEX_FACTORY_TYPE宏里传入的.ush文件,最后会变成vertex shader的一部分。vertex shader的main函数也来自某个.ush或者.usf文件,main里边会调用某些函数,但并未实现该这些函数,这些函数交由其他.ush来实现,用户可以修改函数实现的方式。因此,用户可以把修改后的.ush文件作为这个宏的参数传进去。
2、proxy

proxy是render thread里的,通常game thread里的component 和render thread里的proxy一一对应;

负责打包渲染时候要用的数据,比如vertex factory、material等;

Unreal通过proxy知道component要使用哪个vertex factory;

常见的例子如:UPrimitiveComponent ------FPrimitiveSceneProxy
3、shader

4、给shader传参数

BEGIN_SHADER_PARAMETER_STRUCT(FMyStruct,)

        SHADER_PARAMETER(float, MyScalar)

  SHADER_PARAMETER(int, MyInt)

END_SHADER_PARAMETER_STRUCT()

IMPLEMENT_VERTEX_FACTORY_PARAMETER_TYPE

IMPLEMENT_MATERIAL_SHADER_TYPE将一个继承于FShader的class与一个hlsl文件绑定,并可以指定hlsl的入口函数

继承于primitivecomponent的组件 ,要复写createproxy方法,来创建proxy;

在proxy的初始化函数中,会初始化vertex factory等数据;

BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT是旧的宏,新的为BEGIN_UNIFORM_BUFFER_STRUCT,两者等效;

BEGIN_UNIFORM_BUFFER_STRUCT : 定义一个shader global parameter structure;全局

BEGIN_SHADER_PARAMETER_STRUCT: 定义一个shader parameter structure;局部
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-15 08:43 , Processed in 0.090724 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表