Blender Cycles OSL: Copper Material

Hi everybody. Today I'm going to show you a migration to OSL of my Copper Material:



This is the Cycles version:



As I did with my OSL Gold Material, I have migrated all the nodes information included in that material to the code, trying to minimize the overhead of the node system. This time the facing value is an input parameter in the script. So the OSL code is as follows:

/*
*   Migrated from "http://elbrujodelatribu.blogspot.com/2013/07/cooper-material.html"
*   By: elbrujodelatribu
*/
 
shader node_metal_copper(
    color ForeColor = 0.8,
    color MiddleColor = 0.4,
    float Facing = 0.665,
    float ForeRoughness = 0.01,
    color BackColor = 0.1,
    float BackRoughness = 0.04,
    normal Normal = N,
    output closure color Metal = 0.0)
{
    closure color ForeClosure = background();
    closure color BackClosure = background();
 
    // Facing colors - formula and code from Blender OSL code
    float aux = fabs(dot(I,(vector)Normal));
    float facing = Facing;

    // code from Blender 2.68
    if (facing != 0.5) {
        facing = clamp(facing, 0.0, 1.0 - 1e-5);
        facing = (facing < 0.5) ? 2.0 * facing : 0.5 / (1.0 - facing);

        facing = pow(aux, facing);
    }

    float Factor1 = 1.0 - facing;
     
    // Dot vectors
    float Factor2 = clamp(pow(dot((vector)Normal,I),1.3), 0.0, 1.0 - 1e-5);

    // Create and mix closures    
    ForeClosure = ((1-Factor1)*ForeColor + MiddleColor*Factor1)*microfacet_beckmann(Normal,ForeRoughness);
    BackClosure = BackColor*microfacet_beckmann(Normal,BackRoughness);
     
    Metal = ((1-Factor2)*BackClosure)+(ForeClosure*Factor2);
}

The node setup of the copper material is this:


By changing the colors you can get a yellowish version of this kind of material:


You can download this material for cycles (no OSL) inside my metal pack available in blendswap.

Bye

Comentarios

Unknown ha dicho que…
Hey very useful tutorials, congratulations and thaks for sharing. You Rock!

Entradas populares de este blog

Santa Alejandra

Blender Cycles: Black Body Lights Reference (New Feature in Blender 2.69)

Blender Cycles: Vector Transform for Texturing (New Feature in Blender 2.69)