arnold shader custom aov

  • 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‘])
时间: 2024-10-09 02:40:20

arnold shader custom aov的相关文章

关于 arnold shader的参数

注意 enum parameter 和 node_parameters 必须,必须,必须,必须 一 一对应,否则编译不会出错,但是执行渲染会出错, 不匹配的结果 , 一般表现为 parameter 读取错误,比如类型无法匹配,无法读取数据, 内存溢出等 匹配的意思是 个数和顺序都要匹配 以下是 ai_params.h 对 AiParameter***  的定义 .... #define AiParameterBYTE(n,c) AiNodeParamByte (params,-1,n,c); 

arnold shader parameter

node_parameters {} 里面应当把所有的 参数都用AiParameterFLT/RGB等参数调用方法 放进去 如     // DIFFUSE     AiParameterRGB ( "color", 1.0, 1.0, 1.0);     AiParameterFLT ( "Kd", 0.8f);     AiMetaDataSetFlt(mds, "Kd", "min", 0.0f);     AiMeta

arnold aov ui for maya

mtoa 检查shader的aov 仅仅读取 mtd文件中对aov的定义 例如:     [attr aov_surface]         aov.type                INT     0x05     [attr aov_Nw]         aov.type                INT     0x05     [attr aov_fr]         aov.type                INT     0x05 如果mtd没有定义,即使sha

【Unity Shader】Shader纹理映射的例子

将漫反射的颜色改为从纹理贴图中获取,逐像素计算. Shader "Custom/11-Texture" { // BlinnPhong光照模型 Properties{ //_Diffuse("Diffuse Color", Color) = (1,1,1,1) // 可在编辑器面板定义材质自身色彩 _MainTex("Main Tex",2D) = "white"{} // 纹理贴图,默认是一张白色贴图 _Color(&quo

【译】Unity3D Shader 新手教程(2/6) —— 积雪Shader

如果你是一个shader编程的新手,并且你想学到下面这些酷炫的技术,我觉得你可以看看这篇教程: 实现一个积雪效果的shader 创建一个具有凹凸纹理的shader 为每个像素修改其对应纹理值 在表面着色器中修改模型的顶点数据 引论 这是我们系列教程的第二部分,我们将在此部分实现些有用的技术.在学习完第一部分的所有背景知识后,我们将利用所学的知识实现一个简单的积雪效果的shader.效果如下: 准备工作 我们想做的其实很简单,简单介绍一下: 随着Snow Level(表示积雪的程度,该值越大,积雪

Unity Shader入门教程(四)反射光斑的实现

本节内容介绍PhongModel(也就是上文说的反射光的计算模型),采用的计算方法是BlinPhong(也即是用视线方向V+光源方向L的和,与N做点积,随后幂化得到高光反射系数)下图采用了csdn博文http://blog.csdn.net/u010133610/article/details/52206654中的一张插图. 第1.1步:新建shader和material,正如我前面的教程所说的那样. 第1.2步:代码如下: ▼代码开始 Shader "Custom/Learn2" {

关于Unity中Shader的使用

在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示. 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader Unity坐标系转换 1: transform.localToWorldMatrix 局部转世界的矩阵;2: transfrom.worldToLocalMatrix 世界坐标转局部坐标矩阵; MultiplyPoint, MultiplyPoint3x4 MultiplayVector 来进行坐

unity3d shader 自定义光照函数

希望实现一个根据摄像机朝向与网格法向关系控制光照亮度的双面shader. 代码如下 Shader "Custom/UnlitOP" { Properties{ _Color("Main Color", Color) = (1,1,1,1) //渲染需要外部设置的颜色 _MainTex("Base (RGB)", 2D) = "white" {} //材质 _CamDir("Camera Dirction",

Unity小技巧 - 烧熔Shader

效果 原理 根据给定的噪声图,当噪声图中的R值小于指定的值,就舍弃当前的像素. 1. 噪声图 噪声在图形学内十分常见,可以认为是图形学里的随机数(这里我们不用真的随机数,是因为真的随机数太过“均匀”,形成的是白噪声,一点都不好用). 2. 着色器 (注:完整代码在最后贴出.) 属性定义如下: (1) Main Tex:物体的主要纹理贴图,决定了物体的主要外表 (2) Noise Tex:噪声贴图 (3) Min Alpha:最低的Alpha,当噪声贴图中的R值小于该值,则舍弃当前的像素 顶点着色