shader:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
shader:start [2025/05/21 17:28] – [Circle] mhshader:start [2025/06/02 21:23] (current) – external edit 127.0.0.1
Line 9: Line 9:
 ==== Normalized input Coordinates ==== ==== Normalized input Coordinates ====
  
-Generally the ''vec2 uv'' is used to describe a normalized input coordinates by dividing the coordinate by the current resolution :+Generally the **''vec2 uv''** is used to describe a normalized input coordinates by dividing the coordinate by the current resolution :
  
 Different compilers use different syntax to describe the resolution. Here we'll use Shadertoy's standard. Different compilers use different syntax to describe the resolution. Here we'll use Shadertoy's standard.
Line 57: Line 57:
     float d = length(uv);     float d = length(uv);
     float r = .3     float r = .3
-    float c = 1.-smoothstep(r, r-.02, d);+    float c = smoothstep(r, r-.02, d);
  
     // Output to screen     // Output to screen
Line 94: Line 94:
  
 This behavior can lead to unexpected behaviors and colors in certain regions where multiple subtractions/additions have been applied.</WRAP> This behavior can lead to unexpected behaviors and colors in certain regions where multiple subtractions/additions have been applied.</WRAP>
 +
 +==== Rectangle ====
 +
 +To draw a rectangle we can use a function that draws bands using **''smoothstep''** and then multiply it twice to draw a band horizontally and another band vertically.
 +
 +The band function would look like this
 +
 +<code glsl>
 +float drawBand(float t, float start, float end, float blur){
 +    float step1 = smoothstep(start-blur, start+blur, t);
 +    float step2 = smoothstep(end+blur, end-blur, t); //This one is inverted because it's on the other side, going from 1 to 0.
 +    
 +    return step1*step2;
 +}
 +</code>
 +
 +Then get a rectangle by calling this function twice on the x and y :
 +
 +<code glsl>
 +    float mask = 0.;
 +    float b = .01;
 +    
 +    mask = drawBand(uv.x, -.2, .2, b);
 +    mask *= drawBand(uv.y, -.2, .2, b);
 +</code>
 ==== Adding Color ==== ==== Adding Color ====
  
  • shader/start.1747841291.txt.gz
  • Last modified: 2025/06/02 21:18
  • (external edit)