Skip to content

Commit d2cda2a

Browse files
authored
Merge pull request #8009 from lukeplowden/strands-refactor
[p5.strands] Significant refactor for p5.strands
2 parents f03d3b5 + ecc8061 commit d2cda2a

17 files changed

+2720
-2348
lines changed

preview/global/sketch.js

Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
p5.disableFriendlyErrors = true;
2-
3-
function windowResized() {
4-
resizeCanvas(windowWidth, windowHeight);
5-
}
6-
7-
let starShader;
8-
let starStrokeShader;
1+
let instancedShader;
2+
let instancedStrokeShader;
93
let stars;
10-
let originalFrameBuffer;
11-
let pixellizeShader;
4+
let originalImage;
5+
let pixelateShader;
126
let fresnelShader;
137
let bloomShader;
148

159
function fresnelShaderCallback() {
1610
const fresnelPower = uniformFloat(2);
1711
const fresnelBias = uniformFloat(-0.1);
1812
const fresnelScale = uniformFloat(2);
13+
1914
getCameraInputs((inputs) => {
2015
let n = normalize(inputs.normal);
2116
let v = normalize(-inputs.position);
@@ -29,18 +24,19 @@ function fresnelShaderCallback() {
2924

3025
function starShaderCallback() {
3126
const time = uniformFloat(() => millis());
32-
const skyRadius = uniformFloat(1000);
27+
const skyRadius = uniformFloat(250);
3328

3429
function rand2(st) {
3530
return fract(sin(dot(st, [12.9898, 78.233])) * 43758.5453123);
3631
}
3732

3833
function semiSphere() {
3934
let id = instanceID();
40-
let theta = rand2([id, 0.1234]) * TWO_PI;
41-
let phi = rand2([id, 3.321]) * PI+time/10000;
35+
let theta = rand2([id, 0.1234]) * TWO_PI + time / 100000;
36+
let phi = rand2([id, 3.321]) * PI + time / 50000;
37+
4238
let r = skyRadius;
43-
r *= 1.5 * sin(phi);
39+
r *= sin(phi);
4440
let x = r * sin(phi) * cos(theta);
4541
let y = r * 1.5 * cos(phi);
4642
let z = r * sin(phi) * sin(theta);
@@ -53,72 +49,80 @@ function starShaderCallback() {
5349
});
5450

5551
getObjectInputs((inputs) => {
56-
let scale = 1 + 0.1 * sin(time * 0.002 + instanceID());
57-
inputs.position *= scale;
52+
let size = 1 + 0.5 * sin(time * 0.002 + instanceID());
53+
inputs.position *= size;
5854
return inputs;
5955
});
6056
}
6157

62-
function pixellizeShaderCallback() {
63-
const pixelSize = uniformFloat(()=> width*.75);
64-
getColor((input, canvasContent) => {
65-
let coord = input.texCoord;
58+
function pixelateShaderCallback() {
59+
const pixelCountX = uniformFloat(()=> 280);
60+
61+
getColor((inputs, canvasContent) => {
62+
const aspectRatio = inputs.canvasSize.x / inputs.canvasSize.y;
63+
const pixelSize = [pixelCountX, pixelCountX / aspectRatio];
64+
65+
let coord = inputs.texCoord;
6666
coord = floor(coord * pixelSize) / pixelSize;
67-
let col = texture(canvasContent, coord);
68-
return col;
67+
68+
let col = getTexture(canvasContent, coord);
69+
return col//[coord, 0, 1];
6970
});
7071
}
7172

7273
function bloomShaderCallback() {
73-
const preBlur = uniformTexture(() => originalFrameBuffer);
74+
const preBlur = uniformTexture(() => originalImage);
75+
7476
getColor((input, canvasContent) => {
75-
const blurredCol = texture(canvasContent, input.texCoord);
76-
const originalCol = texture(preBlur, input.texCoord);
77-
const brightPass = max(originalCol, 0.3) * 1.5;
78-
const bloom = originalCol + blurredCol * brightPass;
79-
return bloom;
77+
const blurredCol = getTexture(canvasContent, input.texCoord);
78+
const originalCol = getTexture(preBlur, input.texCoord);
79+
80+
const intensity = max(originalCol, 0.1) * 12.2;
81+
const bloom = originalCol + blurredCol * intensity;
82+
return [bloom.rgb, 1];
8083
});
8184
}
8285

8386
async function setup(){
84-
createCanvas(windowWidth, windowHeight, WEBGL);
85-
stars = buildGeometry(() => sphere(30, 4, 2))
86-
originalFrameBuffer = createFramebuffer();
87+
createCanvas(800, 600, WEBGL);
88+
pixelDensity(1);
89+
stars = buildGeometry(() => sphere(8, 4, 2))
90+
originalImage = createFramebuffer();
8791

8892
starShader = baseMaterialShader().modify(starShaderCallback);
8993
starStrokeShader = baseStrokeShader().modify(starShaderCallback)
9094
fresnelShader = baseColorShader().modify(fresnelShaderCallback);
9195
bloomShader = baseFilterShader().modify(bloomShaderCallback);
92-
pixellizeShader = baseFilterShader().modify(pixellizeShaderCallback);
96+
pixelateShader = baseFilterShader().modify(pixelateShaderCallback);
9397
}
9498

9599
function draw(){
96-
originalFrameBuffer.begin();
100+
originalImage.begin();
97101
background(0);
98102
orbitControl();
99103

100104
push()
101-
strokeWeight(4)
105+
strokeWeight(2)
102106
stroke(255,0,0)
103107
rotateX(PI/2 + millis() * 0.0005);
104108
fill(255,100, 150)
105109
strokeShader(starStrokeShader)
106110
shader(starShader);
107-
model(stars, 2000);
111+
model(stars, 1000);
108112
pop()
109113

110114
push()
111115
shader(fresnelShader)
112116
noStroke()
113-
sphere(500);
117+
sphere(90);
118+
filter(pixelateShader);
114119
pop()
115-
filter(pixellizeShader);
116120

117-
originalFrameBuffer.end();
121+
originalImage.end();
118122

119123
imageMode(CENTER)
120-
image(originalFrameBuffer, 0, 0)
124+
image(originalImage, 0, 0)
121125

122-
filter(BLUR, 20)
126+
filter(BLUR, 15)
123127
filter(bloomShader);
124-
}
128+
}

0 commit comments

Comments
 (0)