File tree Expand file tree Collapse file tree 6 files changed +37
-31
lines changed
playground/src/pages/gpgpu Expand file tree Collapse file tree 6 files changed +37
-31
lines changed Original file line number Diff line number Diff line change @@ -76,15 +76,19 @@ import Layout from "../../layouts/Layout.astro";
76
76
positions.render();
77
77
renderPass.render();
78
78
79
- velocities.uniforms.uDeltaTime = 0.8;
80
- velocities.render();
81
- positions.uniforms.uDeltaTime = 0.8;
82
- positions.render();
83
- renderPass.render();
79
+ requestAnimationFrame(() => {
80
+ velocities.uniforms.uDeltaTime = 0.8;
81
+ velocities.render();
82
+ positions.uniforms.uDeltaTime = 0.8;
83
+ positions.render();
84
+ renderPass.render();
84
85
85
- velocities.render();
86
- positions.render();
87
- renderPass.render();
86
+ requestAnimationFrame(() => {
87
+ velocities.render();
88
+ positions.render();
89
+ renderPass.render();
90
+ });
91
+ });
88
92
});
89
93
</script >
90
94
Original file line number Diff line number Diff line change @@ -72,16 +72,14 @@ import Layout from "../../layouts/Layout.astro";
72
72
73
73
renderPass.onAfterRender(incrementRenderCount);
74
74
75
- renderPass.onCanvasReady(() => {
76
- useLoop(({ deltaTime }) => {
77
- velocities.uniforms.uDeltaTime = deltaTime / 500;
78
- velocities.render();
75
+ useLoop(({ deltaTime }) => {
76
+ velocities.uniforms.uDeltaTime = deltaTime / 500;
77
+ velocities.render();
79
78
80
- positions.uniforms.uDeltaTime = deltaTime / 500;
81
- positions.render();
79
+ positions.uniforms.uDeltaTime = deltaTime / 500;
80
+ positions.render();
82
81
83
- renderPass.render();
84
- });
82
+ renderPass.render();
85
83
});
86
84
</script >
87
85
Original file line number Diff line number Diff line change @@ -90,9 +90,11 @@ import Layout from "../../layouts/Layout.astro";
90
90
positions.render();
91
91
renderPass.render();
92
92
93
- positions.uniforms.uDeltaTime = 1;
94
- positions.render();
95
- renderPass.render();
93
+ requestAnimationFrame(() => {
94
+ positions.uniforms.uDeltaTime = 1;
95
+ positions.render();
96
+ renderPass.render();
97
+ });
96
98
});
97
99
</script >
98
100
Original file line number Diff line number Diff line change @@ -93,12 +93,10 @@ import Layout from "../../layouts/Layout.astro";
93
93
94
94
renderPass.onAfterRender(incrementRenderCount);
95
95
96
- renderPass.onCanvasReady(() => {
97
- useLoop(({ deltaTime }) => {
98
- positions.uniforms.uDeltaTime = deltaTime / 500;
99
- positions.render();
100
- renderPass.render();
101
- });
96
+ useLoop(({ deltaTime }) => {
97
+ positions.uniforms.uDeltaTime = deltaTime / 500;
98
+ positions.render();
99
+ renderPass.render();
102
100
});
103
101
</script >
104
102
Original file line number Diff line number Diff line change @@ -41,8 +41,13 @@ export const useWebGLCanvas = <U extends Uniforms>(props: Props<U>) => {
41
41
const renderPass = useQuadRenderPass ( gl , props ) ;
42
42
const compositor = useCompositor ( gl , renderPass , postEffects ) ;
43
43
44
+ // don't render before the first resize of the canvas to avoid a glitch
45
+ let isCanvasResized = false ;
46
+
44
47
function render ( ) {
45
- compositor . render ( ) ;
48
+ if ( isCanvasResized ) {
49
+ compositor . render ( ) ;
50
+ }
46
51
}
47
52
48
53
let requestedRender = false ;
@@ -107,13 +112,12 @@ export const useWebGLCanvas = <U extends Uniforms>(props: Props<U>) => {
107
112
let resizeObserver : ReturnType < typeof useResizeObserver > | null = null ;
108
113
109
114
const [ canvasReadyCallbacks , onCanvasReady ] = useLifeCycleCallback ( ) ;
110
- let isFirstResize = true ;
111
115
112
116
function resizeCanvas ( width : number , height : number ) {
113
117
setSize ( { width : width * dpr , height : height * dpr } ) ;
114
- if ( isFirstResize ) {
118
+ if ( ! isCanvasResized ) {
115
119
for ( const callback of canvasReadyCallbacks ) callback ( ) ;
116
- isFirstResize = false ;
120
+ isCanvasResized = true ;
117
121
}
118
122
}
119
123
Original file line number Diff line number Diff line change @@ -9,8 +9,8 @@ const routesToTest = routes.filter(({ route }) => !ignoreRoutes.has(route));
9
9
const expectedRendersByDemo = {
10
10
scissor : "2" ,
11
11
video : "2" ,
12
- "particles - FBO (static)" : "3 " ,
13
- "boids (static)" : "4 " ,
12
+ "particles - FBO (static)" : "2 " ,
13
+ "boids (static)" : "3 " ,
14
14
mipmap : / [ 1 - 3 ] / ,
15
15
texture : / 1 | 2 / ,
16
16
sepia : / 1 | 2 / ,
You can’t perform that action at this time.
0 commit comments