43 static void asc_sprite_shader_init(AscShaderProgram *p, cx_attr_unused int flags) { |
43 static void asc_sprite_shader_init(AscShaderProgram *p, cx_attr_unused int flags) { |
44 asc_shader_init_uniform_loc_nice(p, AscSpriteShader, tex); |
44 asc_shader_init_uniform_loc_nice(p, AscSpriteShader, tex); |
45 } |
45 } |
46 |
46 |
47 static AscShaderProgram *asc_sprite_shader_create(int rect) { |
47 static AscShaderProgram *asc_sprite_shader_create(int rect) { |
48 return asc_shader_create((AscShaderCodeInfo){ |
48 return asc_shader_create((AscShaderCodes) { |
49 .files.vtx = "sprite_vtx.glsl", |
49 .vtx = {.source_file = "sprite_vtx.glsl"}, |
50 .files.frag = "sprite_frag.glsl", |
50 .frag = { |
51 .defines.frag = rect ? "#define USE_RECT" : NULL, |
51 .source_file = "sprite_frag.glsl", |
|
52 .preamble_code = (const char*[]){"#define USE_RECT"}, |
|
53 .preamble_code_flags = (uint64_t) rect |
|
54 }, |
52 }, sizeof(AscSpriteShader), asc_sprite_shader_init, 0); |
55 }, sizeof(AscSpriteShader), asc_sprite_shader_init, 0); |
53 } |
56 } |
54 |
57 |
55 static void asc_sprite_destroy(AscSceneNode *node) { |
58 static void asc_sprite_destroy(AscSceneNode *node) { |
56 asc_ptr_cast(AscSprite, sprite, node); |
59 asc_ptr_cast(AscSprite, sprite, node); |