viernes, 31 de mayo de 2013

Blender Cycles OSL: Color Turbulence

Hi every body. Today I'm going to show you a color turbulence material:


This is the OSL code:
/*
*   Migrated from "http://glsl.heroku.com/e#8664.0"
*   By: elbrujodelatribu
*/

shader node_color_turbulence(
    vector Vector = P,
    float Scale = 0.2,
    float Time = 1.0,
    int MaxIterations = 64,
    output color Color = 0.8)    
{
 vector p = Vector * Scale;//surfacePosition;

 for(int i=1; i < MaxIterations; i++)
 {
  vector newp = p;
  newp[0]+=0.6/float(i)*sin(float(i)*p[1]+Time/20.0+0.3*float(i))+20.0;  
  newp[1]+=0.6/float(i)*sin(float(i)*p[0]+Time/20.0+0.3*float(i+10))-5.0;
  p=newp;
 }

    Color = color(sin(Time+p[1]+p[0]-M_PI*color(0,2,4)/(4.0+sin(Time)))*0.3+0.5);
}


And here there is the node setup. I have used a HSV Color node to increase the color saturation and provide a result more vivid:


And this another example scene (hires version here).



I hope you like it.

Bye

4 comentarios:

Eugenio Pignataro dijo...

Espectacular tu trabajo!

Eduardo Maldonado dijo...

¡Muchas gracias Eugenio!

Javier DL dijo...

Hola Eduardo!
Antes que nada quisiera agradecerte por tu amable generosidad por compartir con todos nosotros tus fabulosos trabajos en éste medio de materiales. Y felicitarte por la misma razon.

Aparte de felicitarte y agradecerte queria tambien preguntarte: como puedo hacer para que el "Script node" tenga sockets?
Mas especificamente, estaba tratando de usar tu "Turbulence"

setup para unos dulces (candies) que quiero usar para un proyecto personal, pero siendo el

"rookie" que soy para estos asuntos de los "noodles" no tengo la menor idea de como hacer

para connectar el Script node a los otros nodes.
Ya cree el documento OSL, solo copié el contenido de la ventana en tu pagina del setup de Turbulence, y lo pegué en un documento txt, despues de salvarlo le cambié la extension a .osl Espero que sea asi como se hace.

Aparte de esto, necesito pedirte autorizacion para conservar un par de paginas que acabo de crear con el objeto de servir como "trampolin" y referencia a tus noodles. Estas paginas las cree para uso personal, para encontrar de manera rapida los materiales. Sobre todo mientras estoy aprendiendo. Espero no te moleste.

Un saludo desde Montreal, Canada.

Javier DL

Eduardo Maldonado dijo...

Hola Javier. Puedes usarlos sin ningún problema.

Respecto a lo de crear inputs o outputs en el script se hace en los parámetros de la función shader. Los parámetros es lo que va entre paréntesis. Si pones sólo el tipo de dato son inputs, si pones además el comando "output" entonces erá de salida.

La programación es similar al lenguaje C, pero tiene sus peculiaridades.

Este sitio emplea cookies de Google para prestar sus servicios, para personalizar anuncios y para analizar el tráfico. Google recibe información sobre tu uso de este sitio web. Si utilizas este sitio web, se sobreentiende que aceptas el uso de cookies. Más información Entendido