@@ -709,6 +709,56 @@ visualSuite('WebGL', function() {
709709 } ) ;
710710 } ) ;
711711
712+ visualSuite ( 'instanced randering' , async ( ) => {
713+ visualTest ( 'can draw in a grid with floor()' , ( p5 , screenshot ) => {
714+ p5 . createCanvas ( 50 , 50 , p5 . WEBGL ) ;
715+ const shader = p5 . baseMaterialShader ( ) . modify ( ( ) => {
716+ p5 . getWorldInputs ( ( inputs ) => {
717+ const id = p5 . instanceID ( ) ;
718+ const gridSize = 5 ;
719+ const row = p5 . floor ( id / gridSize ) ;
720+ const col = id - row * gridSize ;
721+ const blockInnerSize = 10 ;
722+ const x = ( col - gridSize / 2.0 ) * blockInnerSize + blockInnerSize / 2 ;
723+ const y = ( gridSize / 2.0 - row ) * blockInnerSize - blockInnerSize / 2 ;
724+ inputs . position += [ x , y , 0 ] ;
725+ return inputs ;
726+ } ) ;
727+ } , { p5 } ) ;
728+ p5 . shader ( shader ) ;
729+ const obj = p5 . buildGeometry ( ( ) => p5 . circle ( 0 , 0 , 6 ) )
730+ p5 . noStroke ( ) ;
731+ p5 . fill ( 0 ) ;
732+ p5 . shader ( shader ) ;
733+ p5 . model ( obj , 25 ) ;
734+ screenshot ( ) ;
735+ } ) ;
736+
737+ visualTest ( 'can draw in a grid with int()' , ( p5 , screenshot ) => {
738+ p5 . createCanvas ( 50 , 50 , p5 . WEBGL ) ;
739+ const shader = p5 . baseMaterialShader ( ) . modify ( ( ) => {
740+ p5 . getWorldInputs ( ( inputs ) => {
741+ const id = p5 . instanceID ( ) ;
742+ const gridSize = 5 ;
743+ const row = p5 . int ( id / gridSize ) ;
744+ const col = id - row * gridSize ;
745+ const blockInnerSize = 10 ;
746+ const x = ( col - gridSize / 2.0 ) * blockInnerSize + blockInnerSize / 2 ;
747+ const y = ( gridSize / 2.0 - row ) * blockInnerSize - blockInnerSize / 2 ;
748+ inputs . position += [ x , y , 0 ] ;
749+ return inputs ;
750+ } ) ;
751+ } , { p5 } ) ;
752+ p5 . shader ( shader ) ;
753+ const obj = p5 . buildGeometry ( ( ) => p5 . circle ( 0 , 0 , 6 ) )
754+ p5 . noStroke ( ) ;
755+ p5 . fill ( 0 ) ;
756+ p5 . shader ( shader ) ;
757+ p5 . model ( obj , 25 ) ;
758+ screenshot ( ) ;
759+ } ) ;
760+ } ) ;
761+
712762 visualSuite ( 'p5.strands' , ( ) => {
713763 visualTest ( 'it recovers from p5.strands errors' , ( p5 , screenshot ) => {
714764 p5 . createCanvas ( 50 , 50 , p5 . WEBGL ) ;
0 commit comments