笔记

作者: 百思不得Ting姐 | 来源:发表于2021-07-07 11:23 被阅读0次

    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;局部

    相关文章

      网友评论

          本文标题:笔记

          本文链接:https://www.haomeiwen.com/subject/ybwiultx.html