OSL

From bernie's
Jump to navigation Jump to search

https://oiolli.gumroad.com/

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.

X9M2drk.png

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);
}