good progress today
This commit is contained in:
@@ -6,19 +6,10 @@ $input v_wpos
|
||||
#include "common.sh"
|
||||
|
||||
SAMPLER2D(s_texColor, 0);
|
||||
SAMPLER3D(s_ditherSampler, 1);
|
||||
uniform vec4 u_time;
|
||||
uniform vec4 u_testColor;
|
||||
|
||||
float circle(vec2 uv, float radius)
|
||||
{
|
||||
float distSq = uv.x * uv.x + uv.y * uv.y;
|
||||
// float result = sqrt(distSq) / radius * 0.8;
|
||||
float result = sqrt(distSq) / radius;
|
||||
// float clamped = clamp(1.0 - result, 0.0, 1.0);
|
||||
float clamped = clamp(1.5 - result, 0.0, 1.0);
|
||||
return clamped;
|
||||
}
|
||||
|
||||
float calcBrightness(vec3 lightPos, vec3 vertPos, vec3 normal)
|
||||
{
|
||||
vec3 lightDir = normalize(lightPos - vertPos);
|
||||
@@ -31,28 +22,6 @@ float calcBrightnessDirectional(vec3 sunDir, vec3 normal)
|
||||
return max(0.0, dot(sunDir, normal));
|
||||
}
|
||||
|
||||
float circles(vec2 uv, float level, float subLevel, float brightness)
|
||||
{
|
||||
vec2 offsetUv = uv + 0.5;
|
||||
vec2 baseUv = (offsetUv % 1.0) - 0.5;
|
||||
vec2 step1Uv = ((offsetUv + vec2(0.5, 0.5)) % 1.0) - 0.5;
|
||||
vec2 step2Uv = ((offsetUv + vec2(0.5, 0.0)) % 1.0) - 0.5;
|
||||
vec2 step3Uv = ((offsetUv + vec2(0.0, 0.5)) % 1.0) - 0.5;
|
||||
|
||||
float step = subLevel * 3.0;
|
||||
float step1 = clamp(step, 0.0, 1.0);
|
||||
float step2 = clamp(step - 1, 0.0, 1.0);
|
||||
float step3 = clamp(step - 2, 0.0, 1.0);
|
||||
|
||||
float sum = 0.0;
|
||||
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);
|
||||
}
|
||||
|
||||
vec3 desaturate(vec3 color)
|
||||
{
|
||||
return vec3_splat(dot(color, vec3(0.33, 0.34, 0.33)));
|
||||
@@ -66,11 +35,11 @@ void main()
|
||||
float3 lightPos = vec3(sin(u_time.x * testSpeed) * testRadius, 5.0, cos(u_time.x * testSpeed) * testRadius);
|
||||
// float brightness = calcBrightness(lightPos, v_wpos, v_normal);
|
||||
float brightness = calcBrightnessDirectional(vec3(0.5, 0.3, 1.0), v_normal);
|
||||
// brightness = 1.0;
|
||||
brightness = 1.0;
|
||||
// brightness = sin(u_time.x) * 0.5 + 0.5;
|
||||
|
||||
// Magic dot frequency calculation
|
||||
float baseScale = 2.0;
|
||||
float baseScale = 8.0;
|
||||
float2 dx = ddx(v_uv0 * baseScale);
|
||||
float2 dy = ddy(v_uv0 * baseScale);
|
||||
float2x2 mat = float2x2(dx, dy);
|
||||
@@ -89,20 +58,16 @@ void main()
|
||||
int patternScaleLevel = floor(spacingLog);
|
||||
float patternFractional = spacingLog - patternScaleLevel;
|
||||
vec2 uv = v_uv0 * exp2(patternScaleLevel);
|
||||
|
||||
float dotsTotal = 4;
|
||||
float subLayer = lerp(0.25 * dotsTotal, dotsTotal, patternFractional);
|
||||
subLayer = (subLayer - 0.5) / dotsTotal;
|
||||
|
||||
vec4 circleSample = texture3D(s_ditherSampler, vec3(uv, subLayer));
|
||||
float circleVal = circleSample.x < 0.75 ? 0.1 : 0.9;
|
||||
|
||||
// Coloring
|
||||
vec3 texColor = u_testColor.x > 0.1 ? u_testColor.xyz : texture2D(s_texColor, v_uv0).xyz;
|
||||
vec3 color;
|
||||
color.r = circles(uv, patternScaleLevel, patternFractional, brightness * texColor.r);
|
||||
color.g = circles(uv, patternScaleLevel, patternFractional, brightness * texColor.g);
|
||||
color.b = circles(uv, patternScaleLevel, patternFractional, brightness * texColor.b);
|
||||
// color = circles(uv, patternScaleLevel, patternFractional, brightness) * texColor;
|
||||
gl_FragColor = vec4(color, 1.0);
|
||||
// vec3 smoothColor = brightness * u_testColor.xyz;
|
||||
// gl_FragColor = brightness;
|
||||
// gl_FragColor = dither;
|
||||
// gl_FragColor = u_testColor;
|
||||
// gl_FragColor = vec4(texColor, 1.0);
|
||||
// gl_FragColor = vec4(v_normal, 1.0);
|
||||
// gl_FragColor = vec4(uv, 0.0, 1.0);
|
||||
vec3 finalColor = texColor * vec3(circleVal, circleVal, circleVal);
|
||||
gl_FragColor = vec4(finalColor, 1.0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user