// Created by Amanda Rabade // 2/9/2022 // Code creates a shader that resembles dark stone with glowing elements // // shader SimpleMaterial( color A = color(1,0,1), color B = color(0,0,1), color C = color(0,0,0), color D = color(1,1,1), //sliders to control specular roughness and bump intensities float roughVal = 0.5[[float min = -20, float max = 20]], float bumpVal = 0.5[[float min = 0, float max = 20]], //sliders to control amplitude of noise float noise_amp = 0.5[[float min = 0, float max = 5]], float disp_amp1 = 0.5[[float min = 0, float max = 5]], float disp_amp2 = 0.5[[float min = 0, float max = 5]], //sliders to control frequency of noise float noise_freq = 0.5[[float min = 0, float max = 200]], float disp_freq1 = 0.5[[float min = 0, float max = 200]], float disp_freq2 = 0.5[[float min = 0, float max = 200]], //sliders to turn on/off animation and to control speed of animation float speed = 0.5[[float min = -2, float max = 2]], int anim = 0[[int min = 0, int max = 1]], //sliders to manipulate noise float Mask = 1[[float min = 0, float max = 1]], float Multi = 1[[float min = 0, float max = 200]], float stretch = 1[[float min = 0, float max = 10]], //outputting different attributes output color disp = 0.5, output color roughness = 0.5, output color mainColor = 0.5, output color emiss = 0.5, output color Bump = 0.5, output color lumi = luminance(B), ) { //each noise placed in object space with amplitude and frequency sliders used. animation variable added for animation color dispNoise1 = mix(1.0, noise("perlin",(transform("object",P) * disp_freq1)+(time*speed*(anim*.3))), disp_amp1); color dispNoise2 = mix(1.0, noise("usimplex",(transform("object",P) * disp_freq2)+(time*speed*(anim*.3))), disp_amp2); color Noise = mix(1.0, noise("usimplex",(transform("object",P) * noise_freq)+(time*speed*(anim*.3))), noise_amp); disp = dispNoise1[2]*(-1*(dispNoise2[0])*dispNoise2[0]); roughness = roughVal*(dispNoise1[2]*dispNoise2[1]*Noise[0]); Bump = bumpVal*(dispNoise2[0]); mainColor = (mix((A*C)*(10*dispNoise1[2]),B*dispNoise2[1],dispNoise1[2]*dispNoise2[0])); emiss = -1*((D*dispNoise1[2])*dispNoise2[0]); }