Film Production Assistant/VFX Coordinator | Author
OSL BUBBLE SHADERS WITH CODES
Without OSL Shader
With OSL Shader
srf_mt_bubbles_v46.osl
// To become familiar with pattern creation and texture mapping by coding repeating patterns in OSL.
// Micaa Thomas
// SCAD-Atlanta
// Programming Models and Shaders I-VSFX-319-A01
// May 29, 2019
// THIS FILE CREATES a bubble swirl shader by casting points to a vector with an array
//This was definitely one of the hardest shaders that I have made by far because I wanted to go a bit beyond what
//was taught in class. I am glad that we did this project so now I can show off my beautiful shader.
​
// LIST OF TODOS
//1) create a couple of variables that the user can interact with, such as Vector, Time, Scale, and MaxIterations
//2) I did not animate the shader.
shader srf_mt_bubbles_v46(
vector Vector = P, //creates the vector called P for the shader
float Scale = 0.2,
float Time = 1.0, //could be animated by keying time
int MaxIterations = 64, //This parameter limits the number of iterations of the cutting plane
output color Color = 0.8)
{
vector p = Vector * Scale; //the position of the shader position
for(int m=1; m < MaxIterations; m++) //creates an array
{
vector newp = p; //start of vector newp
newp[0]+=0.4/float(m)*sin(float(m)*p[1]+Time/24.0+0.3*float(m))+20.0; //casting points to the vector newp.
newp[1]+=0.4/float(m)*sin(float(m)*p[0]+Time/24.0+0.3*float(m+10))-5.0; //newp is being called in and creates a sin wave with time that can make it become animated.
p=newp;
}
Color = color(sin(Time+p[1]+p[0]-M_PI*color(0,2,4)/(4.0+sin(Time)))*0.3+0.5); //my newly created color is being output and creates a zig zag like shader for the bubble that I plug into Pixar's bubble material.
}
Without OSL Shader
With OSL Shader
srf_mt_bubbles_bowl_v20.osl
// To become familiar with pattern creation and texture mapping by coding repeating patterns in OSL.
// Micaa Thomas
// SCAD-Atlanta
// Programming Models and Shaders I-VSFX-319-A01
// May 29, 2019
// THIS FILE CREATES a bubble swirl shader by casting points to a vector with an array
//This was definitely one of the hardest shaders that I have made by far because I wanted to go a bit beyond what
//was taught in class. I am glad that we did this project so now I can show off my beautiful shader.
// My Original Code, but did receive help from a few sites:
// *Open Shading Language 1.10
// *http://www.fundza.com/rfm/osl/velvet/index.html
// *https://blenderartists.org
// *http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html
// *https://octave.org/doc/v4.2.1/Three_002dDimensional-Plots.html
// LIST OF TODOS
//1) create a couple of variables that the user can interact with, such as Vector, Time, Scale, and MaxIterations
//2) I did not animate the shader.
shader srf_mt_bubbles_bowl_v20(
point Pos = P, // creates points with an indication of P
color ColA = color(1, 0, 0),
color ColB = color(0, 1, 0),
float Offset = 0.0,
output color ColOut = color(0, 0, 1)
)
{
float x = Pos[0];
float y = Pos[1];
float z = Pos[2];
point myPoint = point(x, 0, 0);
float f = distance(Pos, myPoint) + noise(Pos, Offset);
ColOut = mix(ColA, ColB, sign( tan( f * 4 ) ));
}