Difference between revisions of "OSL"
Jump to navigation
Jump to search
(Created page with "===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. <pre> 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...") |
m (→Octane Cubemap) |
||
| Line 6: | Line 6: | ||
shader OslCamera( | shader OslCamera( | ||
float roomWidth = 1 [[ float min = 0.0, float max = 100.0 ]], | 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 point pos = P, | ||
output vector dir = 0, | output vector dir = 0, | ||
| Line 19: | Line 19: | ||
float pa; | float pa; | ||
int res[2]; | int res[2]; | ||
float r = 8.0; | 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); | forward = vector(0,1,0); | ||
right = vector(roomWidth,0,0); | |||
up = vector(0,0,roomDepth); | up = vector(0,0,roomDepth); | ||
pN = vector(0,roomHeight-ceilingOffset,0); | pN = vector(0,roomHeight-ceilingOffset,0); | ||
} | } | ||
if(col==0 && row==1) { | |||
//left | |||
forward = vector(-1,0,0); | forward = vector(-1,0,0); | ||
up = vector(0,roomHeight,0); | up = vector(0,roomHeight,0); | ||
| Line 51: | Line 45: | ||
pN = vector(leftOffset-roomWidth/2,roomHeight/2,0); | pN = vector(leftOffset-roomWidth/2,roomHeight/2,0); | ||
} | } | ||
if(col==1 && row==1) { | |||
//forward | |||
forward = vector(0,0,-1); | forward = vector(0,0,-1); | ||
up = vector(0,roomHeight,0); | up = vector(0,roomHeight,0); | ||
right = vector(roomWidth,0,0); | right = vector(roomWidth,0,0); | ||
pN = vector(0,roomHeight/2,-(frontOffset-(roomDepth/2.0))); | pN = vector(0,roomHeight/2,-(frontOffset-(roomDepth/2.0))); | ||
} | |||
if(col==2 && row==1) { | |||
//right | |||
forward = vector(1,0,0); | forward = vector(1,0,0); | ||
up = vector(0,roomHeight,0); | up = vector(0,roomHeight,0); | ||
right = vector(0,0,roomDepth); | right = vector(0,0,roomDepth); | ||
pN = vector(roomWidth/2-rightOffset,roomHeight/2,0); | pN = vector(roomWidth/2-rightOffset,roomHeight/2,0); | ||
} | |||
if(col==1 && row==0) { | |||
//floor | |||
forward = vector(0,-1,0); | forward = vector(0,-1,0); | ||
up = vector(0,0,-roomDepth); | up = vector(0,0,-roomDepth); | ||
right = vector(roomWidth,0,0); | right = vector(roomWidth,0,0); | ||
pN = vector(0,floorOffset,0); | pN = vector(0,floorOffset,0); | ||
} | |||
if(col==0 && row==2) { | |||
//curtains | |||
forward = vector(0,0,-1); | forward = vector(0,0,-1); | ||
up = vector(0,roomHeight,0); | up = vector(0,roomHeight,0); | ||
right = vector(roomWidth,0,0); | right = vector(roomWidth,0,0); | ||
pN = vector(roomWidth*2.0,0.5,roomDepth); | pN = vector(roomWidth*2.0,0.5,roomDepth); | ||
} | |||
if(col==0 && row==0) { | |||
//curtains | |||
forward = vector(0,0,-1); | forward = vector(0,0,-1); | ||
up = vector(0,roomHeight,0); | up = vector(0,roomHeight,0); | ||
right = vector(roomWidth,0,0); | right = vector(roomWidth,0,0); | ||
pN = vector(roomWidth,0.5,roomDepth); | pN = vector(roomWidth,0.5,roomDepth); | ||
} | |||
| Line 94: | Line 88: | ||
dir = forward; | dir = forward; | ||
pos = pN+(nu*right)+(nv*up); | |||
} | } | ||
</pre> | </pre> | ||
Revision as of 17:50, 28 March 2024
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);
}