@@ -10,7 +10,8 @@ import { stepProgress } from "./logic/progress";
1010import { deriveSprites } from "./logic/sprites" ;
1111import { createState } from "./logic/state" ;
1212import { attachUserEvent } from "./logic/userEvent" ;
13- import { createSpriteRenderer } from "./renderer/spriteRenderer" ;
13+ import { createBlurPassRenderer } from "./renderer/blurPass/renderer" ;
14+ import { createSpriteRenderer } from "./renderer/sprite/spriteRenderer" ;
1415import { createSpriteAtlas } from "./sprites" ;
1516
1617const spritePromise = createSpriteAtlas ( ) ;
@@ -30,27 +31,51 @@ gl.depthFunc(gl.LESS);
3031gl . enable ( gl . BLEND ) ;
3132gl . blendFunc ( gl . SRC_ALPHA , gl . ONE_MINUS_SRC_ALPHA ) ;
3233
33- const renderer = createSpriteRenderer ( gl ) ;
34+ const rendererSprite = createSpriteRenderer ( gl ) ;
3435
35- const set = renderer . createSet ( ) ;
36+ const set = rendererSprite . createSet ( ) ;
3637
3738//
3839//
3940
4041const state = createState ( runnerCount ) ;
41- attachUserEvent ( state , canvas , gl ) ;
42- window . dispatchEvent ( new Event ( "resize" ) ) ;
43-
42+ attachUserEvent ( state ) ;
4443computeFinalPlacement ( state , message ) ;
45-
4644const stepPhysic = createPhysicStepper ( runnerCount ) ;
4745
46+ //
47+ //
48+
49+ const resize = ( ) => {
50+ const dpr = window . devicePixelRatio ?? 1 ;
51+
52+ canvas . width = canvas . clientWidth * dpr ;
53+ canvas . height = canvas . clientHeight * dpr ;
54+
55+ gl . viewport ( 0 , 0 , canvas . width , canvas . height ) ;
56+
57+ const aspect = canvas . width / canvas . height ;
58+ mat4 . perspective (
59+ state . projectionMatrix ,
60+ Math . PI / 4 / aspect ,
61+ aspect ,
62+ 0.1 ,
63+ 2000 ,
64+ ) ;
65+ } ;
66+
67+ window . addEventListener ( "resize" , resize ) ;
68+ resize ( ) ;
69+
70+ //
71+ //
72+
4873spritePromise . then ( ( res ) => {
49- renderer . updateSet ( set , { colorTexture : res . texture } ) ;
74+ rendererSprite . updateSet ( set , { colorTexture : res . texture } ) ;
5075
51- gl . useProgram ( renderer . _internal . program ) ;
76+ gl . useProgram ( rendererSprite . _internal . program ) ;
5277
53- gl . uniform1i ( renderer . _internal . u_colorTexture , 0 ) ;
78+ gl . uniform1i ( rendererSprite . _internal . u_colorTexture , 0 ) ;
5479 gl . bindVertexArray ( set . vao ) ;
5580
5681 gl . activeTexture ( gl . TEXTURE0 ) ;
@@ -71,27 +96,13 @@ spritePromise.then((res) => {
7196
7297 //
7398
74- renderer . updateSet ( set , state ) ;
99+ rendererSprite . updateSet ( set , state ) ;
75100
76101 //
77102
78103 gl . clear ( gl . COLOR_BUFFER_BIT | gl . DEPTH_BUFFER_BIT ) ;
79104
80- //
81- // usually the API is meant to call renderer.draw(state.projectionMatrix,state.viewMatrix,[set])
82- // but since there is only oone program let's save some gl instructions
83- gl . uniformMatrix4fv (
84- renderer . _internal . u_viewMatrix ,
85- false ,
86- state . viewMatrix ,
87- ) ;
88- gl . uniformMatrix4fv (
89- renderer . _internal . u_projectionMatrix ,
90- false ,
91- state . projectionMatrix ,
92- ) ;
93-
94- gl . drawArraysInstanced ( gl . TRIANGLE_STRIP , 0 , 4 , set . numInstances ) ;
105+ rendererSprite . draw ( state . projectionMatrix , state . viewMatrix , [ set ] ) ;
95106
96107 //
97108
0 commit comments