it works??
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
$input v_color0
|
||||
$input v_uv0
|
||||
$input v_wpos
|
||||
|
||||
uniform vec4 u_time;
|
||||
|
||||
#include "common.sh"
|
||||
|
||||
@@ -13,7 +16,12 @@ float circle(vec2 uv, float radius)
|
||||
return clamp(1.0 - result, 0.0, 1.0);
|
||||
}
|
||||
|
||||
float circles(vec2 uv, float level, float subLevel)
|
||||
float calcBrightness(vec3 lightPos, vec3 vertPos)
|
||||
{
|
||||
return clamp(1.0 - distance(lightPos, vertPos) * 0.01, 0.0, 1.0);
|
||||
}
|
||||
|
||||
float circles(vec2 uv, float level, float subLevel, float brightness)
|
||||
{
|
||||
vec2 offsetUv = uv + 0.5;
|
||||
vec2 baseUv = (offsetUv % 1.0) - 0.5;
|
||||
@@ -27,20 +35,22 @@ float circles(vec2 uv, float level, float subLevel)
|
||||
float step3 = clamp(step - 2, 0.0, 1.0);
|
||||
|
||||
float sum = 0.0;
|
||||
// sum += circle(baseUv, lerp(0.5, 0.25, subLevel));
|
||||
// sum += circle(step1Uv, 0.25 * step1);
|
||||
// sum += circle(step2Uv, 0.25 * step2);
|
||||
// sum += circle(step3Uv, 0.25 * step3);
|
||||
sum = circle(baseUv, lerp(0.5, 0.25, subLevel));
|
||||
sum = max(sum, circle(step1Uv, 0.25 * step1));
|
||||
sum = max(sum, circle(step2Uv, 0.25 * step2));
|
||||
sum = max(sum, circle(step3Uv, 0.25 * step3));
|
||||
sum = circle(baseUv, lerp(0.5, 0.25, subLevel) * brightness);
|
||||
sum = max(sum, circle(step1Uv, 0.25 * step1 * brightness));
|
||||
sum = max(sum, circle(step2Uv, 0.25 * step2 * brightness));
|
||||
sum = max(sum, circle(step3Uv, 0.25 * step3 * brightness));
|
||||
|
||||
return min(sum, 1.0);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
float testRadius = 50.0;
|
||||
float testSpeed = 1.0;
|
||||
vec3 testOffset = vec3(0.0, 0.0, 50.0);
|
||||
float brightness = calcBrightness(testOffset + vec3(sin(u_time.x * testSpeed) * testRadius, 0.0, cos(u_time.x * testSpeed) * testRadius), v_wpos);
|
||||
brightness = 0.2 + brightness * 0.8;
|
||||
|
||||
float baseScale = 10.0;
|
||||
float2 dx = ddx(v_uv0 * baseScale);
|
||||
float2 dy = ddy(v_uv0 * baseScale);
|
||||
@@ -53,12 +63,12 @@ void main()
|
||||
float2 freq = sqrt(float2(qq + discriminant, qq - discriminant) / 2.0);
|
||||
|
||||
float spacing = freq.y * exp2(2.0);
|
||||
spacing = 1.0 / spacing;
|
||||
spacing *= 1.0; // TODO: check reference to see how to calculate this!
|
||||
spacing = 4.0 / spacing;
|
||||
spacing *= brightness; // TODO: check reference to see how to calculate this!
|
||||
float spacingLog = max(log2(spacing), 1.0);
|
||||
int patternScaleLevel = floor(spacingLog);
|
||||
float patternFractional = spacingLog - patternScaleLevel;
|
||||
|
||||
vec2 uv = v_uv0 * exp2(patternScaleLevel);
|
||||
gl_FragColor = circles(uv, patternScaleLevel, patternFractional);
|
||||
gl_FragColor = circles(uv, patternScaleLevel, patternFractional, brightness);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user