天天看點

Mental ray Custom Shader 主函數和參數的命名

感謝這裡的mr shader教程

http://www.lvyuedong.org/projects/tech/mentalray/magazines/august/august.html

custom shader 中檔案引用、函數命名的關聯關系如下:

檔案目錄如下:

city.mi

shader_lensfog/lensfog.c

shader_lensfog/lensfog_mi.mi

shader_lensfog/lensfog_dll.dll

---------------------------------city.mi:-------------------------------------------

...

link "shader_lensfog/lensfog_dll.dll "

$include "shader_lensfog/lensfog_mi.mi "

...

camera "perspShape"

    output "rgba" "tga" "city.tga"

    resolution 640 480

    aspect 1.33333

    lens "lensfogshader " ("depth" 480, "color" 0.866 0.813 0.775, "power" 2 )

    focal 1.1

    environment = "env"

end camera

--------------------------------lensfog_mi.mi --------------------------------------------

declare shader

    color "lensfogshader " (

        scalar "depth",

        color     "color",

        scalar "power"

    )

    version 1

    apply lens

end declare

--------------------------------lensfog.c --------------------------------------------

....

#define SHADER_MAIN_PARM          parm

#define SHADER_MAIN_FUNC          lensfogshader

#define SHADER_VERSION_FUNC    lensfogshader ##_version

struct SHADER_MAIN_PARM {

    miScalar depth;

    miColor color;

    miScalar power;

};

DLLEXPORT int SHADER_VERSION_FUNC (void)

{

    return 1;

}

DLLEXPORT miBoolean SHADER_MAIN_FUNC (

  miColor *result,

  miState *state,

  struct SHADER_MAIN_PARM *paras

)

{

....

}

最主要的是.mi檔案引用的shader名字是“.c檔案中定義的主函數的名字SHADER_MAIN_FUNC ”

而.mi檔案引用的shader的參數是“.c檔案中定義的主函數中的參數SHADER_MAIN_PARM ”

代碼在這裡 http://download.csdn.net/source/1745356

繼續閱讀