码迷,mamicode.com
首页 > 其他好文 > 详细

arnold shader custom aov

时间:2015-02-27 15:22:24      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

  • add aov parameter in [enum zsjStandardParams]

 enum zsjStandardParams
{
...
 p_aov_spec_fresnel,
 p_aov_refl_fresnel,
 ...
};
  • node parameter

node_parameters 
{
...
   AiParameterStr("aov_spec_fresnel", "spec_fresnel");
   AiParameterStr("aov_refl_fresnel", "refl_fresnel");
   ...
};
    
}
  • use a shader data struct to pass aov_name to shader

node_initialize{
 ShaderData* data = new ShaderData;
    AiNodeSetLocalData(node,data);
};
node_finish{
 if (AiNodeGetLocalData(node))
    {
        ShaderData* data = (ShaderData*) AiNodeGetLocalData(node);
        AiNodeSetLocalData(node, NULL);
        delete data;
    }
};
node_update{
 ShaderData *data = (ShaderData*)AiNodeGetLocalData(node);
 data->aov_spec_fresnel = params[p_aov_spec_fresnel].STR;
 data->aov_refl_fresnel = params[p_aov_refl_fresnel].STR;
 AiAOVRegister(data->aov_spec_fresnel.c_str(), AI_TYPE_RGB, AI_AOV_BLEND_OPACITY);
 AiAOVRegister(data->aov_refl_fresnel.c_str(), AI_TYPE_RGB, AI_AOV_BLEND_OPACITY);
};
shader_evaluate{
 ShaderData *data = (ShaderData*)AiNodeGetLocalData(node);
 ...
 if (sg->Rt & AI_RAY_CAMERA)
 {
  AiAOVSetRGB(sg, data->aov_spec_fresnel.c_str(), AiColor(fresnel_spec));
  AiAOVSetRGB(sg, data->aov_refl_fresnel.c_str(), AiColor(fresnel_refl));
 }
  • edit mtd file:

     [attr aov_spec_fresnel]
        aov.type                INT     0x05
        default STRING "spec_fresnel"
        aov.enable_composition BOOL TRUE
    [attr aov_refl_fresnel]
        aov.type                INT     0x05
        default STRING "refl_fresnel"
        aov.enable_composition BOOL TRUE
  • edit template file

        self.addAOVLayout(aovReorder = [‘spec_fresnel‘, ‘refl_fresnel‘])

arnold shader custom aov

标签:

原文地址:http://my.oschina.net/zsjasper/blog/380453

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!