Skip to content

Commit 42a6bc4

Browse files
-added number symbol modifier
1 parent 7dce828 commit 42a6bc4

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

src/main.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ const controls = {
3434
'HighTriRange': 1.0,
3535
'HeightT': 'Off',
3636
'SymbolScaleT': 'Off',
37-
'SymbolPositionT': 'Off'
37+
'SymbolPositionT': 'Off',
38+
'NumSymbolsPerTri': 1.0,
3839

3940
};
4041

@@ -92,6 +93,7 @@ function main() {
9293
f1.add(controls, 'HeightT', [ 'On', 'Off' ]);
9394
f1.add(controls, 'SymbolScaleT', [ 'On', 'Off' ]);
9495
f1.add(controls, 'SymbolPositionT', [ 'On', 'Off' ]);
96+
f1.add(controls, 'NumSymbolsPerTri', 0.0, 10.0).step(1.0);
9597

9698
var f2 = gui.addFolder('Animation');
9799

@@ -174,6 +176,7 @@ function main() {
174176
sdf.setHightT(controls['HeightT'] == 'On' ? 1.0 : 0.0);
175177
sdf.setSymbolScaleT(controls['SymbolScaleT'] == 'On' ? 1.0 : 0.0);
176178
sdf.setSymbolPositionT(controls['SymbolPositionT'] == 'On' ? 1.0 : 0.0);
179+
sdf.setNumSymbolsPerTri(controls['NumSymbolsPerTri']);
177180

178181
renderer.render(camera, time, height, color, noiseColor, sdf, [
179182
square,

src/rendering/gl/ShaderProgram.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class ShaderProgram {
8888
unifHightT: WebGLUniformLocation;
8989
unifSymbolScaleT: WebGLUniformLocation;
9090
unifSymbolPositionT: WebGLUniformLocation;
91+
unifNumSymbolsPerTri: WebGLUniformLocation;
9192

9293
constructor(shaders: Array<Shader>) {
9394
this.prog = gl.createProgram();
@@ -125,6 +126,8 @@ class ShaderProgram {
125126
this.unifHightT = gl.getUniformLocation(this.prog, "u_HeightT");
126127
this.unifSymbolScaleT = gl.getUniformLocation(this.prog, "u_SymbolScaleT");
127128
this.unifSymbolPositionT = gl.getUniformLocation(this.prog, "u_SymbolPositionT");
129+
this.unifNumSymbolsPerTri = gl.getUniformLocation(this.prog, "u_NumSymbolsPerTri");
130+
128131

129132

130133

@@ -153,6 +156,7 @@ class ShaderProgram {
153156
setHightT(t: number){this.use();gl.uniform1f(this.unifHightT, t)}
154157
setSymbolScaleT(t: number){this.use();gl.uniform1f(this.unifSymbolScaleT, t)}
155158
setSymbolPositionT(t: number){this.use();gl.uniform1f(this.unifSymbolPositionT, t)}
159+
setNumSymbolsPerTri(t: number){this.use();gl.uniform1f(this.unifNumSymbolsPerTri, t)}
156160

157161
use() {
158162
if (activeProgram !== this.prog) {

src/shaders/sdf-objects.glsl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,9 +271,13 @@ float pyramidNormalSDF(vec3 p, float h, float depth, float depth_scale, float nu
271271
prisim_transform = transform(prisim_transform, vec3(0, 0, 0), vec3(0, 0, zshift));
272272
float prisim = triprism(prisim_transform, greeble_width, greeble_height, abs(noiseTransform));
273273

274-
float scale = 0.02 + 0.04 * random(vec2(_x+i, _z+g_rot));
275-
shape_transform = transform(shape_transform, vec3(0, 0, 0), vec3(-0.01+0.02*random(vec2(_x+i+_y, _z+g_rot)), -0.01+0.02*random(vec2(_x+i, _z+g_rot)), 0.0), vec3(1.0 * scale, 1000.0 * scale, 1.0 * scale));
276-
prisim = flatSubtraction(prisim, randomSymbol(shape_transform, random(vec2(_x+j+i, _z+g_rot))));
274+
275+
for(float k=0.0; k<u_NumSymbolsPerTri; k++){
276+
float scale = 0.02 + 0.04 * random(vec2(_x+i, _z+g_rot+k));
277+
vec3 shape_transform2 = transform(shape_transform, vec3(0, 0, 0), vec3(-0.1+0.2*random(vec2(_x+i+_y, _z+g_rot+k)), -0.1+0.2*random(vec2(_x+i+k, _z+g_rot)), -0.02+0.04*random(vec2(k, k))), vec3(1.0 * scale, 1000.0 * scale, 1.0 * scale));
278+
prisim = flatSubtraction(prisim, randomSymbol(shape_transform2, random(vec2(_x+j+i, _z+g_rot+k))));
279+
}
280+
277281

278282
if(noiseHeight > 0.0){
279283
final = flatUnion(final, prisim);

src/shaders/toolbox.glsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ uniform float u_Rows;
44
uniform float u_TriScale;
55
uniform float u_LowTriRange;
66
uniform float u_HighTriRange;
7+
uniform float u_NumSymbolsPerTri;
78
uniform float u_HeightT;
89
uniform float u_SymbolScaleT;
910
uniform float u_SymbolPositionT;

0 commit comments

Comments
 (0)