Title: How do I get anti-aliasing?
Post by: SCORPION on March 22, 2014, 12:23:48 AM
Hi everyone! Faced with the problem. In fragmentarium anti aliasing does not work in the script of this type: #include "Progressive2D.frag"
uniform float time;
vec2 CircleInversion(vec2 vPos, vec2 vOrigin, float fRadius) { vec2 vOP = vPos - vOrigin;
vOrigin = vOrigin - vOP * fRadius * fRadius / dot(vOP, vOP);
vOrigin.x += sin(vOrigin.x * 0.001) / cos(vOrigin.y * 0.001); vOrigin.y += sin(vOrigin.x * 0.001) * cos(vOrigin.y * 0.001);
return vOrigin; }
float Parabola( float x, float n ) { return pow( 3.0*x*(1.0-x), n ); }
vec3 color(vec2 v) { vec2 vPos = coord.xy / pixelSize.xy; vPos = vPos - 0.5;
vPos.x *= pixelSize.x / pixelSize.y;
vec2 vScale = vec2(1.2); vec2 vOffset = vec2( sin(time * 0.123), atan(time * 0.0567));
float l = 0.0; float minl = 10000.0;
for(int i=0; i<48; i++) { vPos.x = abs(vPos.x); vPos = vPos * vScale + vOffset;
vPos = CircleInversion(vPos, vec2(0.5, 0.5), 0.9);
l = length(vPos*vPos); minl = min(l, minl); }
float t = 2.1 + time * 0.025; vec3 vBaseColour = normalize(vec3(sin(t * 1.790), sin(t * 1.345), sin(t * 1.123)) * 0.5 + 0.5);
//vBaseColour = vec3(1.0, 0.15, 0.05);
float fBrightness = 11.0;
vec3 vColour = vBaseColour * l * l * fBrightness;
minl = Parabola(minl, 5.0);
vColour *= minl + 0.14;
vColour = 1.0 - exp(-vColour); return vColour; }
#preset default Center = 0.000708697,0.00168299 Zoom = 178.52 Gamma = 2.2 ToneMapping = 1 Exposure = 4.2858 Brightness = 0.6338 Contrast = 1 Saturation = 1 AARange = 2 AAExp = 1 GaussianAA = true #endpreset Guess it's because of the line vec2 vPos = coord.xy / pixelSize.xy;function vec3 color(vec2 v)How can I fix that and make it work anti aliasing?
Title: Re: How do I get anti-aliasing?
Post by: knighty on March 22, 2014, 02:46:24 PM
Just use v instead of defining and using vPos. "Progressive2D.frag" already do all the work needed for antialiasing. ("Reneder mode" have to be set to "progressive". The amount of antialiasing can be modified in the "subframe xx. max" control. There are also the three last controls in "post" tab) #include "Progressive2D.frag"
uniform float time; #group fractal uniform vec2 vScale; slider[(1.1,1.1),(1.5,1.5),(3.,3.)] uniform int Iterations; slider[0,50,100]
vec2 CircleInversion(vec2 vPos, vec2 vOrigin, float fRadius) { vec2 vOP = vPos - vOrigin;
vOrigin = vOrigin - vOP * fRadius * fRadius / dot(vOP, vOP);
vOrigin.x += sin(vOrigin.x * 0.001) / cos(vOrigin.y * 0.001); vOrigin.y += sin(vOrigin.x * 0.001) * cos(vOrigin.y * 0.001);
return vOrigin; }
float Parabola( float x, float n ) { return pow( 3.0*x*(1.0-x), n ); }
vec3 color(vec2 v) { //vec2 vScale = vec2(1.5); vec2 vOffset = vec2( sin(time * 0.123), atan(time * 0.0567));
float l = 0.0; float minl = 10000.0;
for(int i=0; i<Iterations; i++) { v.x = abs(v.x); v = v * vScale + vOffset;
v = CircleInversion(v, vec2(0.5, 0.5), 0.9);
l = length(v*v); minl = min(l, minl); }
float t = 2.1 + time * 0.025; vec3 vBaseColour = normalize(vec3(sin(t * 1.790), sin(t * 1.345), sin(t * 1.123)) * 0.5 + 0.5);
//vBaseColour = vec3(1.0, 0.15, 0.05);
float fBrightness = 11.0;
vec3 vColour = vBaseColour * l * l * fBrightness;
minl = Parabola(minl, 5.0);
vColour *= minl + 0.14;
vColour = 1.0 - exp(-vColour); return vColour; } NIce shader BTW.
Title: Re: How do I get anti-aliasing?
Post by: SCORPION on March 23, 2014, 03:50:22 AM
Thank you very much for your help, knighty! If you do not alter the script, you can do so:
vec3 color(vec2 v) { vec2 vPos = v.xy / pixelSize.xy;
And it works too!
|