mirror of
https://github.com/italicsjenga/slang-shaders.git
synced 2024-11-26 01:11:32 +11:00
fix divide by zero error with JINC; hat-tip to NAVras-Z
This commit is contained in:
parent
3d694820d1
commit
7ee4fe8de0
|
@ -112,7 +112,10 @@ float3 max4(float3 a, float3 b, float3 c, float3 d)
|
||||||
{
|
{
|
||||||
float4 res;
|
float4 res;
|
||||||
|
|
||||||
res = (x==float4(0.0, 0.0, 0.0, 0.0)) ? float4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,12 @@ float max4(float a, float b, float c, float d)
|
||||||
vec4 resampler(vec4 x)
|
vec4 resampler(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
|
||||||
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,12 @@ vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d)
|
||||||
vec4 resampler(vec4 x)
|
vec4 resampler(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
|
||||||
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,12 @@ vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d)
|
||||||
vec4 resampler(vec4 x)
|
vec4 resampler(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
|
||||||
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,12 @@ vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d)
|
||||||
vec4 resampler(vec4 x)
|
vec4 resampler(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
|
||||||
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,10 @@ vec4 l(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
|
|
||||||
res = (x==vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(pi*floatpi) : sin(x*floatpi)*sin(x*pi)/(x*x);
|
res.x = (x.x==0.0) ? (pi*floatpi) : sin(x.x*floatpi)*sin(x.x*pi)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (pi*floatpi) : sin(x.y*floatpi)*sin(x.y*pi)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (pi*floatpi) : sin(x.z*floatpi)*sin(x.z*pi)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (pi*floatpi) : sin(x.w*floatpi)*sin(x.w*pi)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,12 @@ vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d)
|
||||||
vec4 resampler(vec4 x)
|
vec4 resampler(vec4 x)
|
||||||
{
|
{
|
||||||
vec4 res;
|
vec4 res;
|
||||||
res = (x == vec4(0.0, 0.0, 0.0, 0.0)) ? vec4(wa*wb) : sin(x*wa)*sin(x*wb)/(x*x);
|
|
||||||
|
res.x = (x.x==0.0) ? (wa*wb) : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x);
|
||||||
|
res.y = (x.y==0.0) ? (wa*wb) : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y);
|
||||||
|
res.z = (x.z==0.0) ? (wa*wb) : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z);
|
||||||
|
res.w = (x.w==0.0) ? (wa*wb) : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue