Oi gente, tudo bem?
Nos meus estudos com a linguagem de Shader do Mental Ray, eu escrevi um Shader Blinn básico com reflexão e transparência. Incentivado pelo Marco Tomaselli, que queria um Shader desse com AO junto, para facilitar o trabalho, eu tentei fazer e deu certo, então, estou colocando aqui para vocês baixarem e usarem.
Acredito que vai facilitar para quem deseja trabalhar com materiais puros do Mental Ray e ainda não sabe compor com os Shaders.
Para facilitar ainda mais, eu fiz a interface em português.
Aproveitei e coloquei função para reflexão borrada também.
Basta aplicar o Shader no Slot Surface do material Mental Ray, as configurações de Photons, Shadows e Material já estão definidas.
Espero que gostem.
Abaixo um render de teste com Final Gather, Area Light, reflexão borrada e Ambient Occlusion.
BAIXAR O SHADER
Abaixo segue o código do Shader
declare phenomenon
color "3D1_Blinn_AO" (
struct "p" {
color "Ambience",
color "Ambient",
color "Bright",
color "Specular",
scalar "Roughness",
scalar "Spec Ior"
},
struct "r" {
color "Reflect Color",
scalar "Reflectivity",
boolean "Blur Reflection",
scalar "Spread",
integer "Samples"
},
struct "o" {
color "Dark",
scalar "AOspread",
scalar "Max_distance",
integer "AOsamples"
},
struct "l" {
integer "Mode",
array light "Lights"
}
)
shader "Occlusion"
"mib_amb_occlusion" (
"bright" = interface "p.Bright",
"dark" = interface "o.Dark",
"spread" = interface "o.AOspread",
"max_distance" = interface "o.Max_distance",
"samples" = interface "o.AOsamples"
)
shader "Blinn"
"mib_illum_blinn" (
"ambience" = interface "p.Ambience",
"ambient" = interface "p.Ambient",
"diffuse" = "Occlusion",
"specular" = interface "p.Specular",
"roughness" = interface "p.Roughness",
"ior" = interface "p.Spec Ior",
"mode" = interface "l.Mode",
"lights" = interface "l.Lights"
)
shader "Reflex"
"Metal" (
"Surface Material" = "Blinn",
"Reflectivity" = interface "r.Reflectivity",
"Reflect Color" = interface "r.Reflect Color",
"Blur Reflection" = interface "r.Blur Reflection",
"Spread" = interface "r.Spread",
"Samples" = interface "r.Samples"
)
root = "Reflex"
apply texture, light, material, shadow, photon
gui "gui_3D1_Blinn_AO" {
control "Global" "Global" (
"category" "Illumination",
"uiName" "3D1 Blinn AO",
"addApply" "illum"
)
control "p" "struct" ("uiName" "Parâmetros básicos")
{
control "Ambience" "color" ("uiName" "Ambientação", "value" 0.0 0.0 0.0)
control "Ambient" "color" ("uiName" "Ambiente", "value" 0.0 0.0 0.0)
control "Bright" "color" ("uiName" "Cor difusa", "value" 1.0 1.0 1.0)
control "Specular" "color" ("uiName" "Cor especular", "value" 1.0 1.0 1.0)
control "Roughness" "scalar" ("uiName" "Rugosidade", "value" 0.2)
control "Spec Ior" "scalar" ("uiName" "IOR especular", "value" 20)
}
control "r" "struct" ("uiName" "Reflexão")
{
control "Reflectivity" "float" ("uiName" "Nível de reflexão", "value" 0.5, "range" 0.0 1.0)
control "Reflect Color" "color" ("uiName" "Cor do reflexo", "value" 0.3 0.3 0.3)
control "Blur Reflection" "boolean" ("uiName" "Reflexão borrada", "value" 0)
control "Spread" "float" ("uiName" "Nível de borrado", "value" 4.0, "range" 0.0 90.0)
control "Samples" "integer" ("uiName" "Qualidade", "value" 0, "range" 1 100)
}
control "o" "struct" ("uiName" "Oclusão Ambiente AO")
{
control "Dark" "color" ("uiName" "Cor de oclusão", "value" 0.0 0.0 0.0)
control "AOspread" "scalar" ("uiName" "Dispersão", "value" 0.75)
control "Max_distance" "scalar" ("uiName" "Distância máxima", "units" "world", "value" 0.0)
control "AOsamples" "integer" ("uiName" "Qualidade", "value" 16, "range" 0 512)
}
control "l" "struct" ("uiName" "Luzes")
{
control "Mode" "integer" ("uiName" "Modo das luzes", "value" 0)
control "Lights" "array light" ("uiName" "Luzes")
}
}
end declare