OSL
Jump to navigation
Jump to search
Inferno Depth Map
Spaghetti AI code to get inferno (scientific/matplotlib) gradient camera depth map. Works in arnold/maya need to try it in octane. 3ds has a better 'scientific colors' osl but I can't find it.
shader camera_depth_inferno_gradient(
float dmax=10[[float min=0, float max=1000]],
output color ResultColor = color(1.0, 0.0, 0.0),
color Color0 = color(0.0, 0.0, 0.01568627450980392),
color Color1 = color(0.00784313725490196, 0.00392156862745098, 0.0392156862745098),
color Color2 = color(0.01568627450980392, 0.011764705882352941, 0.07450980392156863),
color Color3 = color(0.027450980392156862, 0.0196078431372549, 0.10588235294117647),
color Color4 = color(0.043137254901960784, 0.027450980392156862, 0.1411764705882353),
color Color5 = color(0.06274509803921569, 0.03529411764705882, 0.1803921568627451),
color Color6 = color(0.08235294117647059, 0.043137254901960784, 0.2196078431372549),
color Color7 = color(0.10588235294117647, 0.047058823529411764, 0.2549019607843137),
color Color8 = color(0.13333333333333333, 0.047058823529411764, 0.29411764705882354),
color Color9 = color(0.1568627450980392, 0.043137254901960784, 0.32941176470588235),
color Color10 = color(0.18823529411764706, 0.0392156862745098, 0.3568627450980392),
color Color11 = color(0.21568627450980392, 0.03529411764705882, 0.3803921568627451),
color Color12 = color(0.24313725490196078, 0.03529411764705882, 0.4),
color Color13 = color(0.27058823529411763, 0.0392156862745098, 0.4117647058823529),
color Color14 = color(0.29411764705882354, 0.047058823529411764, 0.4196078431372549),
color Color15 = color(0.3215686274509804, 0.054901960784313725, 0.42745098039215684),
color Color16 = color(0.34509803921568627, 0.06274509803921569, 0.43137254901960786),
color Color17 = color(0.37254901960784315, 0.07450980392156863, 0.43137254901960786),
color Color18 = color(0.396078431372549, 0.08235294117647059, 0.43137254901960786),
color Color19 = color(0.4235294117647059, 0.09411764705882353, 0.43137254901960786),
color Color20 = color(0.4470588235294118, 0.10196078431372549, 0.43137254901960786),
color Color21 = color(0.47058823529411764, 0.10980392156862745, 0.42745098039215684),
color Color22 = color(0.4980392156862745, 0.11764705882352941, 0.4235294117647059),
color Color23 = color(0.5215686274509804, 0.12941176470588237, 0.4196078431372549),
color Color24 = color(0.5490196078431373, 0.13725490196078433, 0.4117647058823529),
color Color25 = color(0.5725490196078431, 0.1450980392156863, 0.40784313725490196),
color Color26 = color(0.6, 0.1568627450980392, 0.396078431372549),
color Color27 = color(0.6235294117647059, 0.16470588235294117, 0.38823529411764705),
color Color28 = color(0.6470588235294118, 0.17647058823529413, 0.3764705882352941),
color Color29 = color(0.6745098039215687, 0.18431372549019607, 0.36470588235294116),
color Color30 = color(0.6980392156862745, 0.19607843137254902, 0.35294117647058826),
color Color31 = color(0.7215686274509804, 0.20784313725490197, 0.3411764705882353),
color Color32 = color(0.7450980392156863, 0.2196078431372549, 0.32549019607843135),
color Color33 = color(0.7686274509803922, 0.23529411764705882, 0.30980392156862746),
color Color34 = color(0.788235294117647, 0.25098039215686274, 0.29411764705882354),
color Color35 = color(0.8117647058823529, 0.26666666666666666, 0.27450980392156865),
color Color36 = color(0.8313725490196079, 0.2823529411764706, 0.25882352941176473),
color Color37 = color(0.8509803921568627, 0.30196078431372547, 0.23921568627450981),
color Color38 = color(0.8666666666666667, 0.3215686274509804, 0.2235294117647059),
color Color39 = color(0.8862745098039215, 0.3411764705882353, 0.20392156862745098),
color Color40 = color(0.9019607843137255, 0.36470588235294116, 0.18431372549019607),
color Color41 = color(0.9176470588235294, 0.38823529411764705, 0.16470588235294117),
color Color42 = color(0.9294117647058824, 0.4117647058823529, 0.1450980392156863),
color Color43 = color(0.9411764705882353, 0.43529411764705883, 0.12549019607843137),
color Color44 = color(0.9529411764705882, 0.4627450980392157, 0.10588235294117647),
color Color45 = color(0.9607843137254902, 0.49019607843137253, 0.08235294117647059),
color Color46 = color(0.9686274509803922, 0.5176470588235295, 0.06274509803921569),
color Color47 = color(0.9764705882352941, 0.5450980392156862, 0.043137254901960784),
color Color48 = color(0.9803921568627451, 0.5725490196078431, 0.027450980392156862),
color Color49 = color(0.984313725490196, 0.6039215686274509, 0.023529411764705882),
color Color50 = color(0.988235294117647, 0.6313725490196078, 0.03137254901960784),
color Color51 = color(0.988235294117647, 0.6627450980392157, 0.054901960784313725),
color Color52 = color(0.988235294117647, 0.6941176470588235, 0.08235294117647059),
color Color53 = color(0.984313725490196, 0.7254901960784313, 0.11764705882352941),
color Color54 = color(0.9803921568627451, 0.7568627450980392, 0.15294117647058825),
color Color55 = color(0.9764705882352941, 0.788235294117647, 0.19215686274509803),
color Color56 = color(0.9686274509803922, 0.820392156862745, 0.23529411764705882),
color Color57 = color(0.9647058823529412, 0.8509803921568627, 0.2823529411764706),
color Color58 = color(0.9568627450980392, 0.8784313725490196, 0.3333333333333333),
color Color59 = color(0.9490196078431372, 0.9058823529411765, 0.38823529411764705),
color Color60 = color(0.9411764705882353, 0.9294117647058824, 0.4392156862745098),
color Color61 = color(0.9450980392156862, 0.9607843137254902, 0.5215686274509804),
color Color62 = color(0.9647058823529412, 0.9803921568627451, 0.5882352941176471),
color Color63 = color(0.984313725490196, 1.0, 0.6431372549019608),
color stop_colors[] = {
Color0,
Color1,
Color2,
Color3,
Color4,
Color5,
Color6,
Color7,
Color8,
Color9,
Color10,
Color11,
Color12,
Color13,
Color14,
Color15,
Color16,
Color17,
Color18,
Color19,
Color20,
Color21,
Color22,
Color23,
Color24,
Color25,
Color26,
Color27,
Color28,
Color29,
Color30,
Color31,
Color32,
Color33,
Color34,
Color35,
Color36,
Color37,
Color38,
Color39,
Color40,
Color41,
Color42,
Color43,
Color44,
Color45,
Color46,
Color47,
Color48,
Color49,
Color50,
Color51,
Color52,
Color53,
Color54,
Color55,
Color56,
Color57,
Color58,
Color59,
Color60,
Color61,
Color62,
Color63
},
float stop_depths[] = {
0.0,
0.015873015873015872,
0.031746031746031744,
0.047619047619047616,
0.06349206349206349,
0.07936507936507936,
0.09523809523809523,
0.1111111111111111,
0.12698412698412698,
0.14285714285714285,
0.15873015873015872,
0.1746031746031746,
0.19047619047619047,
0.20634920634920634,
0.2222222222222222,
0.23809523809523808,
0.25396825396825395,
0.2698412698412698,
0.2857142857142857,
0.30158730158730157,
0.31746031746031744,
0.3333333333333333,
0.3492063492063492,
0.36507936507936506,
0.38095238095238093,
0.3968253968253968,
0.4126984126984127,
0.42857142857142855,
0.4444444444444444,
0.4603174603174603,
0.47619047619047616,
0.49206349206349204,
0.5079365079365079,
0.5238095238095237,
0.5396825396825397,
0.5555555555555556,
0.5714285714285714,
0.5873015873015872,
0.6031746031746031,
0.6190476190476191,
0.6349206349206349,
0.6507936507936507,
0.6666666666666666,
0.6825396825396826,
0.6984126984126984,
0.7142857142857142,
0.7301587301587301,
0.746031746031746,
0.7619047619047619,
0.7777777777777777,
0.7936507936507936,
0.8095238095238095,
0.8253968253968254,
0.8412698412698412,
0.8571428571428571,
0.873015873015873,
0.8888888888888888,
0.9047619047619047,
0.9206349206349206,
0.9365079365079365,
0.9523809523809523,
0.9682539682539681,
0.9841269841269841,
1.0 }
)
{
point CamPos = point("camera", 0, 0, 0);
float normalized_depth = 1-clamp(distance(CamPos,P)/dmax,0,1);
// Find the two stop colors to interpolate between
int i;
for (i = 0; i < arraylength(stop_depths) - 1; ++i) {
if (normalized_depth >= stop_depths[i] && normalized_depth <= stop_depths[i+1]) {
break; // Found the segment
}
}
// Interpolate between the two found colors
float t = (normalized_depth - stop_depths[i]) / (stop_depths[i+1] - stop_depths[i]);
ResultColor = mix(stop_colors[i], stop_colors[i+1], t);
}
Octane Cubemap
Using octane + houdini.
Wip this is just shit I stole from the octane forums to give me a start because OSL is a little confusing, and Houdini implementation even worse.
shader OslCamera(
float roomWidth = 1 [[ float min = 0.0, float max = 100.0 ]],
float roomHeight = 1.0 [[ float min = 0.0, float max = 100.0 ]],
float roomDepth = 1.0 [[ float min = 0.0, float max = 100.0 ]],
float ceilingOffset = 0,
float leftOffset = 0.5,
float frontOffset = 0.5,
float rightOffset = 0.5,
float floorOffset = 0,
output point pos = P,
output vector dir = 0,
output float tMax = 1.0/0.0)
{
float pa;
int res[2];
float r = 8.0;
float col = floor(u*3);
float row = floor(v*3);
float nu = (u*3) - floor(u*3)-0.5;
float nv = (v*3) - floor(v*3)-0.5;
vector forward = vector(0,0,1);
vector up = vector(0,0,0);
vector right = vector(0,0,0);
float width = 1;
float height = 1;
vector pN = vector(0,0,0);
if(col==1 && row==2) {
//ceiling
forward = vector(0,1,0);
right = vector(roomWidth,0,0);
up = vector(0,0,roomDepth);
pN = vector(0,roomHeight-ceilingOffset,0);
}
if(col==0 && row==1) {
//left
forward = vector(-1,0,0);
up = vector(0,roomHeight,0);
right = vector (0,0,-roomDepth);
pN = vector(leftOffset-roomWidth/2,roomHeight/2,0);
}
if(col==1 && row==1) {
//forward
forward = vector(0,0,-1);
up = vector(0,roomHeight,0);
right = vector(roomWidth,0,0);
pN = vector(0,roomHeight/2,-(frontOffset-(roomDepth/2.0)));
}
if(col==2 && row==1) {
//right
forward = vector(1,0,0);
up = vector(0,roomHeight,0);
right = vector(0,0,roomDepth);
pN = vector(roomWidth/2-rightOffset,roomHeight/2,0);
}
if(col==1 && row==0) {
//floor
forward = vector(0,-1,0);
up = vector(0,0,-roomDepth);
right = vector(roomWidth,0,0);
pN = vector(0,floorOffset,0);
}
if(col==0 && row==2) {
//curtains
forward = vector(0,0,-1);
up = vector(0,roomHeight,0);
right = vector(roomWidth,0,0);
pN = vector(roomWidth*2.0,0.5,roomDepth);
}
if(col==0 && row==0) {
//curtains
forward = vector(0,0,-1);
up = vector(0,roomHeight,0);
right = vector(roomWidth,0,0);
pN = vector(roomWidth,0.5,roomDepth);
}
//getattribute("camera:pixelaspect", pa);
//getattribute("camera:resolution", res);
//float aspect = pa * res[1] / res[0] * n;
dir = forward;
pos = pN+(nu*right)+(nv*up);
}