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 ;
93let stars ;
10- let originalFrameBuffer ;
11- let pixellizeShader ;
4+ let originalImage ;
5+ let pixelateShader ;
126let fresnelShader ;
137let bloomShader ;
148
159function 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
3025function 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
7273function 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
8386async 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
9599function 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