本文整理汇总了C++中osl::ShadingSystem::register_closure方法的典型用法代码示例。如果您正苦于以下问题:C++ ShadingSystem::register_closure方法的具体用法?C++ ShadingSystem::register_closure怎么用?C++ ShadingSystem::register_closure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osl::ShadingSystem
的用法示例。
在下文中一共展示了ShadingSystem::register_closure方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: register_appleseed_closures
// We probably want to reuse OSL macros to declare closure params
// and register the closures. We can use them only inside the OSL namespace.
OSL_NAMESPACE_ENTER
void register_appleseed_closures(OSL::ShadingSystem& shading_system)
{
// Describe the memory layout of each closure type to the OSL runtime.
const size_t MaxParams = 32;
struct BuiltinClosures
{
const char* name;
int id;
ClosureParam params[MaxParams];
};
static const BuiltinClosures builtins[] =
{
{ "as_ashikhmin_shirley", AshikhminShirleyID, { CLOSURE_VECTOR_PARAM(AshikhminShirleyClosureParams, N),
CLOSURE_VECTOR_PARAM(AshikhminShirleyClosureParams, T),
CLOSURE_FLOAT_PARAM(AshikhminShirleyClosureParams, kd),
CLOSURE_COLOR_PARAM(AshikhminShirleyClosureParams, Cd),
CLOSURE_FLOAT_PARAM(AshikhminShirleyClosureParams, ks),
CLOSURE_COLOR_PARAM(AshikhminShirleyClosureParams, Cs),
CLOSURE_FLOAT_PARAM(AshikhminShirleyClosureParams, nu),
CLOSURE_FLOAT_PARAM(AshikhminShirleyClosureParams, nv),
CLOSURE_FINISH_PARAM(AshikhminShirleyClosureParams) } },
{ "as_microfacet_blinn", MicrofacetBlinnID, { CLOSURE_VECTOR_PARAM(MicrofacetBRDFClosureParams, N),
CLOSURE_FLOAT_PARAM(MicrofacetBRDFClosureParams, glossiness),
CLOSURE_FINISH_PARAM(MicrofacetBRDFClosureParams) } },
{ "as_microfacet_ward", MicrofacetWardID, { CLOSURE_VECTOR_PARAM(MicrofacetBRDFClosureParams, N),
CLOSURE_FLOAT_PARAM(MicrofacetBRDFClosureParams, glossiness),
CLOSURE_FINISH_PARAM(MicrofacetBRDFClosureParams) } },
{ "background", BackgroundID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ "debug", DebugID, { CLOSURE_STRING_PARAM(DebugClosureParams, tag),
CLOSURE_FINISH_PARAM(DebugClosureParams) } },
{ "diffuse", LambertID, { CLOSURE_VECTOR_PARAM(LambertClosureParams, N),
CLOSURE_FINISH_PARAM(LambertClosureParams) } },
{ "emission", EmissionID, { CLOSURE_FLOAT_PARAM(EmissionClosureParams, inner_angle),
CLOSURE_FLOAT_PARAM(EmissionClosureParams, outer_angle),
CLOSURE_FINISH_PARAM(EmissionClosureParams) } },
{ "holdout", HoldoutID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ "microfacet_beckmann", MicrofacetBeckmannID, { CLOSURE_VECTOR_PARAM(MicrofacetBRDFClosureParams, N),
CLOSURE_FLOAT_PARAM(MicrofacetBRDFClosureParams, glossiness),
CLOSURE_FINISH_PARAM(MicrofacetBRDFClosureParams) } },
{ "microfacet_ggx", MicrofacetGGXID, { CLOSURE_VECTOR_PARAM(MicrofacetBRDFClosureParams, N),
CLOSURE_FLOAT_PARAM(MicrofacetBRDFClosureParams, glossiness),
CLOSURE_FINISH_PARAM(MicrofacetBRDFClosureParams) } },
{ "reflection", ReflectionID, { CLOSURE_VECTOR_PARAM(ReflectionClosureParams, N),
CLOSURE_FINISH_PARAM(ReflectionClosureParams) } },
{ "refraction", RefractionID, { CLOSURE_VECTOR_PARAM(RefractionClosureParams, N),
CLOSURE_FLOAT_PARAM(RefractionClosureParams, from_ior),
CLOSURE_FLOAT_PARAM(RefractionClosureParams, to_ior),
CLOSURE_FINISH_PARAM(RefractionClosureParams) } },
{ "translucent", TranslucentID, { CLOSURE_VECTOR_PARAM(LambertClosureParams, N),
CLOSURE_FINISH_PARAM(LambertClosureParams) } },
{ "transparency", TransparentID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ 0, 0, {} } // mark end of the array
};
for (size_t i = 0; builtins[i].name != 0; ++i)
{
shading_system.register_closure(
builtins[i].name,
builtins[i].id,
builtins[i].params,
0,
0);
RENDERER_LOG_INFO("registered OSL closure %s.", builtins[i].name);
}
}
示例2: register_appleseed_closures
// We probably want to reuse OSL macros to declare closure params
// and register the closures. We can use them only inside the OSL namespace.
OSL_NAMESPACE_ENTER
void register_appleseed_closures(OSL::ShadingSystem& shading_system)
{
// Describe the memory layout of each closure type to the OSL runtime.
const size_t MaxParams = 32;
struct BuiltinClosures
{
const char* name;
int id;
ClosureParam params[MaxParams];
};
static const BuiltinClosures builtins[] =
{
{ "as_ashikhmin_shirley", AshikhminShirleyID, { CLOSURE_VECTOR_PARAM(AshikhminShirleyBRDFClosureParams, N),
CLOSURE_VECTOR_PARAM(AshikhminShirleyBRDFClosureParams, T),
CLOSURE_FLOAT_PARAM(AshikhminShirleyBRDFClosureParams, kd),
CLOSURE_COLOR_PARAM(AshikhminShirleyBRDFClosureParams, Cd),
CLOSURE_FLOAT_PARAM(AshikhminShirleyBRDFClosureParams, ks),
CLOSURE_COLOR_PARAM(AshikhminShirleyBRDFClosureParams, Cs),
CLOSURE_FLOAT_PARAM(AshikhminShirleyBRDFClosureParams, nu),
CLOSURE_FLOAT_PARAM(AshikhminShirleyBRDFClosureParams, nv),
CLOSURE_FINISH_PARAM(AshikhminShirleyBRDFClosureParams) } },
{ "as_disney", DisneyID, { CLOSURE_VECTOR_PARAM(DisneyBRDFClosureParams, N),
CLOSURE_VECTOR_PARAM(DisneyBRDFClosureParams, T),
CLOSURE_COLOR_PARAM(DisneyBRDFClosureParams, base_color),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, subsurface),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, metallic),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, specular),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, specular_tint),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, anisotropic),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, roughness),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, sheen),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, sheen_tint),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, clearcoat),
CLOSURE_FLOAT_PARAM(DisneyBRDFClosureParams, clearcoat_gloss),
CLOSURE_FINISH_PARAM(DisneyBRDFClosureParams) } },
{ "as_oren_nayar", OrenNayarID, { CLOSURE_VECTOR_PARAM(OrenNayarBRDFClosureParams, N),
CLOSURE_FLOAT_PARAM(OrenNayarBRDFClosureParams, roughness),
CLOSURE_FINISH_PARAM(OrenNayarBRDFClosureParams) } },
{ "background", BackgroundID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ "debug", DebugID, { CLOSURE_STRING_PARAM(DebugClosureParams, tag),
CLOSURE_FINISH_PARAM(DebugClosureParams) } },
{ "diffuse", LambertID, { CLOSURE_VECTOR_PARAM(DiffuseBSDFClosureParams, N),
CLOSURE_FINISH_PARAM(DiffuseBSDFClosureParams) } },
{ "emission", EmissionID, { CLOSURE_FLOAT_PARAM(EmissionClosureParams, inner_angle),
CLOSURE_FLOAT_PARAM(EmissionClosureParams, outer_angle),
CLOSURE_FINISH_PARAM(EmissionClosureParams) } },
{ "holdout", HoldoutID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ "microfacet", MicrofacetID, { CLOSURE_STRING_PARAM(MicrofacetClosureParams, dist),
CLOSURE_VECTOR_PARAM(MicrofacetClosureParams, N),
CLOSURE_VECTOR_PARAM(MicrofacetClosureParams, T),
CLOSURE_FLOAT_PARAM(MicrofacetClosureParams, xalpha),
CLOSURE_FLOAT_PARAM(MicrofacetClosureParams, yalpha),
CLOSURE_FLOAT_PARAM(MicrofacetClosureParams, eta),
CLOSURE_INT_PARAM(MicrofacetClosureParams, refract),
CLOSURE_FINISH_PARAM(MicrofacetClosureParams) } },
{ "reflection", ReflectionID, { CLOSURE_VECTOR_PARAM(ReflectionBRDFClosureParams, N),
CLOSURE_FINISH_PARAM(ReflectionBRDFClosureParams) } },
{ "refraction", RefractionID, { CLOSURE_VECTOR_PARAM(RefractionBTDFClosureParams, N),
CLOSURE_FLOAT_PARAM(RefractionBTDFClosureParams, eta),
CLOSURE_FINISH_PARAM(RefractionBTDFClosureParams) } },
{ "translucent", TranslucentID, { CLOSURE_VECTOR_PARAM(DiffuseBSDFClosureParams, N),
CLOSURE_FINISH_PARAM(DiffuseBSDFClosureParams) } },
{ "transparent", TransparentID, { CLOSURE_FINISH_PARAM(EmptyClosureParams) } },
{ 0, 0, {} } // mark end of the array
};
for (size_t i = 0; builtins[i].name != 0; ++i)
{
shading_system.register_closure(
builtins[i].name,
builtins[i].id,
builtins[i].params,
0,
0);
RENDERER_LOG_INFO("registered OSL closure %s.", builtins[i].name);
}
}