diff --git a/drm/shadertoy_palette_fractal_loop_inner.fs.asm b/drm/shadertoy_palette_fractal_loop_inner.fs.asm index 8179024..9178dcc 100644 --- a/drm/shadertoy_palette_fractal_loop_inner.fs.asm +++ b/drm/shadertoy_palette_fractal_loop_inner.fs.asm @@ -48,6 +48,7 @@ srcp.rgb = add : -- (vec3(0.25, 0.40625, 0.5625) + 0.5) src0.rgb = temp[3] : -- v temp[3].rgb = FRC src0.rgb ; +-- v = v - 0.5 src0.rgb = temp[3] , -- v src1.rgb = float(48) : -- 0.5 temp[3].rgb = MAD src0.111 src0.rgb -src1.rgb ; diff --git a/drm/shadertoy_palette_fractal_loop_inner.fs.inc b/drm/shadertoy_palette_fractal_loop_inner.fs.inc new file mode 100644 index 0000000..8502ae3 --- /dev/null +++ b/drm/shadertoy_palette_fractal_loop_inner.fs.inc @@ -0,0 +1,224 @@ +0x00001800, +0x08020001, +0x080200bc, +0x00ed8720, +0x00000000, +0x00790010, + +0x00001800, +0x08020001, +0x08020080, +0x00000720, +0x00000000, +0x00000019, + +0x00001800, +0x08020001, +0x0802c080, +0x00fb0720, +0x00000000, +0x00f6d010, + +0x00004000, +0x08020000, +0x08020080, +0x00840420, +0x00000001, +0x00000001, + +0x00004000, +0x08020080, +0x08020000, +0x00000000, +0x0004c00b, +0x00000000, + +0x00004000, +0x08020080, +0x08020000, +0x00000000, +0x0000c00a, +0x00000000, + +0x00004000, +0x08020080, +0x00300100, +0x00000000, +0x0060e010, +0x1a000000, + +0x00004000, +0x08020100, +0x08000500, +0x00000000, +0x00600010, +0x1a000000, + +0x00003800, +0x8802c102, +0x08020001, +0x006d86d8, +0x00000000, +0x00223030, + +0x00003800, +0x08020003, +0x08020080, +0x00000220, +0x00000000, +0x00000039, + +0x00003800, +0x0802c003, +0x08020080, +0x004406d8, +0x00000000, +0x00a21030, + +0x00000800, +0x08020003, +0x08020080, +0x00000000, +0x0000000d, +0x0000003a, + +0x00001000, +0x08020003, +0x08020080, +0x00000000, +0x0000400d, +0x0000003a, + +0x00002000, +0x08020003, +0x08020080, +0x00000000, +0x0000800d, +0x0000003a, + +0x00003800, +0x0802c003, +0x08020080, +0x00440221, +0x00000000, +0x00221030, + +0x00004000, +0x08020080, +0x08020000, +0x00000000, +0x0002c018, +0x00000000, + +0x00004000, +0x08020001, +0x08020080, +0x00840420, +0x00000001, +0x00000001, + +0x00004000, +0x08020080, +0x08020000, +0x00000000, +0x0004c00b, +0x00000000, + +0x00004000, +0x08020080, +0x08020000, +0x00000000, +0x0000c00a, +0x00000000, + +0x00004000, +0x08020080, +0x08000400, +0x00000000, +0x0068c010, +0x20000000, + +0x00004000, +0x10020080, +0x08034001, +0x00000000, +0x0068c010, +0x04000000, + +0x00004000, +0x08040480, +0x0b020001, +0x00000000, +0x0028c010, +0x1c000000, + +0x00004000, +0x08020080, +0x08020001, +0x00000000, +0x0000c017, +0x00000000, + +0x00004000, +0x08020080, +0x0802c001, +0x00000000, +0x00618010, +0x5a000000, + +0x00004000, +0x08020080, +0x08020001, +0x00000000, +0x1800c01c, +0x00000000, + +0x00004000, +0x08020080, +0x08020001, +0x00000000, +0x0004c01a, +0x00000000, + +0x00004000, +0x08040080, +0x08020001, +0x00000000, +0x0048c010, +0x20000000, + +0x00004000, +0x08020080, +0x08020001, +0x00000000, +0x0000c019, +0x00000000, + +0x00004000, +0x08040080, +0x08020001, +0x00000000, +0x0028c010, +0x20000000, + +0x00004000, +0x08020080, +0x08020001, +0x00000000, +0x0000c018, +0x00000000, + +0x00003800, +0x00220003, +0x08000480, +0x006da220, +0x00000000, +0x00222020, + +0x00004000, +0x08020080, +0x08020003, +0x00000000, +0x00618030, +0x30000000, + diff --git a/src/particle_oriented_animated.cpp b/src/particle_oriented_animated.cpp index a8741b1..9fa7703 100644 --- a/src/particle_oriented_animated.cpp +++ b/src/particle_oriented_animated.cpp @@ -430,7 +430,7 @@ void _3d_particle(const shaders& shaders, mat4x4 local_to_view = world_to_view * local_to_world; - mat4x4 trans = world_to_clip * local_to_world; + mat4x4 local_to_clip = world_to_clip * local_to_world; ////////////////////////////////////////////////////////////////////////////// // consts @@ -446,27 +446,27 @@ void _3d_particle(const shaders& shaders, //const float position_consts[] = { position.x, position.y, position.z, scale }; //ib_vap_pvs_const_offset(position_consts, (sizeof (position_consts)), 6); - const float consts[] = { - // 0 - trans[0][0], trans[0][1], trans[0][2], trans[0][3], - trans[1][0], trans[1][1], trans[1][2], trans[1][3], - trans[2][0], trans[2][1], trans[2][2], trans[2][3], - trans[3][0], trans[3][1], trans[3][2], trans[3][3], + const float consts[] = { + // 0: local space to clip space transformation matrix + local_to_clip[0][0], local_to_clip[0][1], local_to_clip[0][2], local_to_clip[0][3], + local_to_clip[1][0], local_to_clip[1][1], local_to_clip[1][2], local_to_clip[1][3], + local_to_clip[2][0], local_to_clip[2][1], local_to_clip[2][2], local_to_clip[2][3], + local_to_clip[3][0], local_to_clip[3][1], local_to_clip[3][2], local_to_clip[3][3], - // 4: dx (right) - local_to_view[0][0], local_to_view[0][1], local_to_view[0][2], 0, + // 4: dx ("right" change of basis vector) + local_to_view[0][0], local_to_view[0][1], local_to_view[0][2], 0, - // 5: dy (up) - local_to_view[1][0], local_to_view[1][1], local_to_view[1][2], 0, + // 5: dy ("up" change of basis vector) + local_to_view[1][0], local_to_view[1][1], local_to_view[1][2], 0, - // 6: xyz:position w:scale - position.x, position.y, position.z, scale - }; - ib_vap_pvs_const_cntl(consts, (sizeof (consts))); + // 6: particle position, scale + position.x, position.y, position.z, scale + }; + ib_vap_pvs_const_cntl(consts, (sizeof (consts))); // plane_inner - _3d_plane_inner(trans); + _3d_plane_inner(local_to_clip); } }