Fix T58600: update OSL scripts to work with OSL 1.10.x.

This commit is contained in:
Shane Ambler
2018-12-03 12:16:30 +01:00
committed by Brecht Van Lommel
parent 6bb825e083
commit 5a6f1fa563
5 changed files with 24 additions and 16 deletions

View File

@@ -19,10 +19,10 @@
/* Brick */ /* Brick */
float brick_noise(int n) /* fast integer noise */ float brick_noise(int ns) /* fast integer noise */
{ {
int nn; int nn;
n = (n + 1013) & 2147483647; int n = (ns + 1013) & 2147483647;
n = (n >> 13) ^ n; n = (n >> 13) ^ n;
nn = (n * (n * n * 60493 + 19990303) + 1376312589) & 2147483647; nn = (n * (n * n * 60493 + 19990303) + 1376312589) & 2147483647;
return 0.5 * ((float)nn / 1073741824.0); return 0.5 * ((float)nn / 1073741824.0);
@@ -30,7 +30,7 @@ float brick_noise(int n) /* fast integer noise */
float brick(point p, float mortar_size, float mortar_smooth, float bias, float brick(point p, float mortar_size, float mortar_smooth, float bias,
float BrickWidth, float row_height, float offset_amount, int offset_frequency, float BrickWidth, float row_height, float offset_amount, int offset_frequency,
float squash_amount, int squash_frequency, float tint) float squash_amount, int squash_frequency, output float tint)
{ {
int bricknum, rownum; int bricknum, rownum;
float offset = 0.0; float offset = 0.0;

View File

@@ -19,11 +19,12 @@
/* Checker */ /* Checker */
float checker(point p) float checker(point ip)
{ {
p[0] = (p[0] + 0.000001) * 0.999999; point p;
p[1] = (p[1] + 0.000001) * 0.999999; p[0] = (ip[0] + 0.000001) * 0.999999;
p[2] = (p[2] + 0.000001) * 0.999999; p[1] = (ip[1] + 0.000001) * 0.999999;
p[2] = (ip[2] + 0.000001) * 0.999999;
int xi = (int)fabs(floor(p[0])); int xi = (int)fabs(floor(p[0]));
int yi = (int)fabs(floor(p[1])); int yi = (int)fabs(floor(p[1]));

View File

@@ -25,8 +25,9 @@ vector environment_texture_direction_to_equirectangular(vector dir)
return vector(u, v, 0.0); return vector(u, v, 0.0);
} }
vector environment_texture_direction_to_mirrorball(vector dir) vector environment_texture_direction_to_mirrorball(vector idir)
{ {
vector dir = idir;
dir[1] -= 1.0; dir[1] -= 1.0;
float div = 2.0 * sqrt(max(-0.5 * dir[1], 0.0)); float div = 2.0 * sqrt(max(-0.5 * dir[1], 0.0));

View File

@@ -26,13 +26,14 @@
* from "Texturing and Modelling: A procedural approach" * from "Texturing and Modelling: A procedural approach"
*/ */
float noise_musgrave_fBm(point p, float H, float lacunarity, float octaves) float noise_musgrave_fBm(point ip, float H, float lacunarity, float octaves)
{ {
float rmd; float rmd;
float value = 0.0; float value = 0.0;
float pwr = 1.0; float pwr = 1.0;
float pwHL = pow(lacunarity, -H); float pwHL = pow(lacunarity, -H);
int i; int i;
point p = ip;
for (i = 0; i < (int)octaves; i++) { for (i = 0; i < (int)octaves; i++) {
value += safe_noise(p, "signed") * pwr; value += safe_noise(p, "signed") * pwr;
@@ -54,13 +55,14 @@ float noise_musgrave_fBm(point p, float H, float lacunarity, float octaves)
* octaves: number of frequencies in the fBm * octaves: number of frequencies in the fBm
*/ */
float noise_musgrave_multi_fractal(point p, float H, float lacunarity, float octaves) float noise_musgrave_multi_fractal(point ip, float H, float lacunarity, float octaves)
{ {
float rmd; float rmd;
float value = 1.0; float value = 1.0;
float pwr = 1.0; float pwr = 1.0;
float pwHL = pow(lacunarity, -H); float pwHL = pow(lacunarity, -H);
int i; int i;
point p = ip;
for (i = 0; i < (int)octaves; i++) { for (i = 0; i < (int)octaves; i++) {
value *= (pwr * safe_noise(p, "signed") + 1.0); value *= (pwr * safe_noise(p, "signed") + 1.0);
@@ -83,12 +85,13 @@ float noise_musgrave_multi_fractal(point p, float H, float lacunarity, float oct
* offset: raises the terrain from `sea level' * offset: raises the terrain from `sea level'
*/ */
float noise_musgrave_hetero_terrain(point p, float H, float lacunarity, float octaves, float offset) float noise_musgrave_hetero_terrain(point ip, float H, float lacunarity, float octaves, float offset)
{ {
float value, increment, rmd; float value, increment, rmd;
float pwHL = pow(lacunarity, -H); float pwHL = pow(lacunarity, -H);
float pwr = pwHL; float pwr = pwHL;
int i; int i;
point p = ip;
/* first unscaled octave of function; later octaves are scaled */ /* first unscaled octave of function; later octaves are scaled */
value = offset + safe_noise(p, "signed"); value = offset + safe_noise(p, "signed");
@@ -118,13 +121,14 @@ float noise_musgrave_hetero_terrain(point p, float H, float lacunarity, float oc
* offset: raises the terrain from `sea level' * offset: raises the terrain from `sea level'
*/ */
float noise_musgrave_hybrid_multi_fractal(point p, float H, float lacunarity, float noise_musgrave_hybrid_multi_fractal(point ip, float H, float lacunarity,
float octaves, float offset, float gain) float octaves, float offset, float gain)
{ {
float result, signal, weight, rmd; float result, signal, weight, rmd;
float pwHL = pow(lacunarity, -H); float pwHL = pow(lacunarity, -H);
float pwr = pwHL; float pwr = pwHL;
int i; int i;
point p = ip;
result = safe_noise(p, "signed") + offset; result = safe_noise(p, "signed") + offset;
weight = gain * result; weight = gain * result;
@@ -156,13 +160,14 @@ float noise_musgrave_hybrid_multi_fractal(point p, float H, float lacunarity,
* offset: raises the terrain from `sea level' * offset: raises the terrain from `sea level'
*/ */
float noise_musgrave_ridged_multi_fractal(point p, float H, float lacunarity, float noise_musgrave_ridged_multi_fractal(point ip, float H, float lacunarity,
float octaves, float offset, float gain) float octaves, float offset, float gain)
{ {
float result, signal, weight; float result, signal, weight;
float pwHL = pow(lacunarity, -H); float pwHL = pow(lacunarity, -H);
float pwr = pwHL; float pwr = pwHL;
int i; int i;
point p = ip;
signal = offset - fabs(safe_noise(p, "signed")); signal = offset - fabs(safe_noise(p, "signed"));
signal *= signal; signal *= signal;

View File

@@ -19,9 +19,10 @@
/* Noise */ /* Noise */
float noise(point p, float distortion, float detail, float fac, color Color) float noise(point ip, float distortion, float detail, output color Color)
{ {
point r; point r;
point p = ip;
int hard = 0; int hard = 0;
if (distortion != 0.0) { if (distortion != 0.0) {
@@ -32,7 +33,7 @@ float noise(point p, float distortion, float detail, float fac, color Color)
p += r; p += r;
} }
fac = noise_turbulence(p, detail, hard); float fac = noise_turbulence(p, detail, hard);
Color = color(fac, noise_turbulence(point(p[1], p[0], p[2]), detail, hard), Color = color(fac, noise_turbulence(point(p[1], p[0], p[2]), detail, hard),
noise_turbulence(point(p[1], p[2], p[0]), detail, hard)); noise_turbulence(point(p[1], p[2], p[0]), detail, hard));
@@ -55,6 +56,6 @@ shader node_noise_texture(
if (use_mapping) if (use_mapping)
p = transform(mapping, p); p = transform(mapping, p);
Fac = noise(p * Scale, Distortion, Detail, Fac, Color); Fac = noise(p * Scale, Distortion, Detail, Color);
} }