diff --git a/assets-cg/Sprites/stars_examples.png b/assets-cg/Sprites/stars_examples.png new file mode 100644 index 0000000..353e69b Binary files /dev/null and b/assets-cg/Sprites/stars_examples.png differ diff --git a/src/MyAzurShaders.h b/src/MyAzurShaders.h index b872f9f..413295a 100644 --- a/src/MyAzurShaders.h +++ b/src/MyAzurShaders.h @@ -11,6 +11,7 @@ void azrp_pixellist(std::vector const &list, int fragnum ); void azrp_starfield( void ); -void azrp_starfield_init( void ); +void azrp_starfield_init( uint8_t nbstars ); +void azrp_starfield_close( void ); #endif //MYAZURSHADERS_H \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 6680971..3842d1f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -112,7 +112,11 @@ static void get_inputs( void ) if(keydown(KEY_F3)) {texttodraw=2;} if(keydown(KEY_F4)) {texttodraw=3;} - if(keydown(KEY_F6)) {azrp_starfield_init();} + if(keydown(KEY_F6)) + { + azrp_starfield_close( ); + azrp_starfield_init( 200 ); + } } @@ -135,7 +139,7 @@ int main(void) azrp_shader_image_p4_configure(); azrp_shader_triangle_configure(); - azrp_starfield_init(); + azrp_starfield_init( 200 ); usb_interface_t const *interfaces[] = { &usb_ff_bulk, NULL }; @@ -247,6 +251,8 @@ int main(void) MyParticles.clear(); + azrp_starfield_close( ); + prof_quit(); usb_close(); diff --git a/src/starfieldshader.cpp b/src/starfieldshader.cpp index 6f17810..7ad9811 100644 --- a/src/starfieldshader.cpp +++ b/src/starfieldshader.cpp @@ -7,6 +7,9 @@ #include #include +#include + + uint8_t AZRP_SHADER_STARFIELD = -1; @@ -15,10 +18,17 @@ uint8_t AZRP_SHADER_STARFIELD = -1; struct particle { - int x,y,s,c,frag,off; + int x, y, s, c, frag, off; }; -particle datastar[NBPARTS]; +struct star +{ + int x, y, s, n, t; +}; + +std::vector pixels; +std::vector starfield; + __attribute__((constructor)) @@ -38,23 +48,150 @@ void azrp_shader_starfield_configure(void) struct command { uint8_t shader_id; uint8_t current_frag; + uint8_t nbpixel; particle *data; }; +#define DARKSKY 0x2106 -void azrp_starfield_init( void ) +#define BLUE1 0x39EE +#define BLUE2 0x3310 +#define BLUE3 0x64DF + +#define PINK1 0x4147 +#define PINK2 0x7211 +#define PINK3 0xD3D7 + +#define GREEN1 0x31E7 +#define GREEN2 0x4245 +#define GREEN3 0x34AD + +#define ORANGE1 0x61C6 +#define ORANGE2 0x8AA7 +#define ORANGE3 0xDB83 + + +void azrp_starfield_init( uint8_t nbstars ) { srand(rtc_ticks()); - for(int i=0; idata; - for(int i=0; inbpixel; i++) if (cmd->current_frag == data[i].frag) { frag[azrp_width * data[i].off + data[i].x] = data[i].c;