diff --git a/forge-steel b/forge-steel index dcd35af..01cba36 160000 --- a/forge-steel +++ b/forge-steel @@ -1 +1 @@ -Subproject commit dcd35af4f169879235870cae0ddafbbbc50160b1 +Subproject commit 01cba36eaafb5b422bfabc233161ccf4661d03d5 diff --git a/project/inc_fx.glsl b/project/inc_fx.glsl index 1b27c02..ba04496 100644 --- a/project/inc_fx.glsl +++ b/project/inc_fx.glsl @@ -277,7 +277,7 @@ vec4 fx_9(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v + reframe(previous, uv2 + vec2(1., 1.) * inv_k * .125).xyz * .2 + reframe(previous, uv2 + vec2(0., 1.) * inv_k * .125).xyz * .2 + reframe(previous, uv2 + vec2(.5, .5) * inv_k * .125).xyz * .2; - c = char(mod(uv1 * k1, 1.), code) ? c : vec3(0.); + c = chr(mod(uv1 * k1, 1.), code) ? c : vec3(0.); return fx_master(c0, c, seed, m0); } diff --git a/project/inc_src.glsl b/project/inc_src.glsl index 2ce1a1b..236110e 100644 --- a/project/inc_src.glsl +++ b/project/inc_src.glsl @@ -317,7 +317,7 @@ vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 ivec2 uv2i = ivec2(uv2); int code = ((charset_ctrl.y < 1. || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span); uv2 = mod(uv2, 1.); - float f = char(uv2, code) ? 1. : 0.; + float f = chr(uv2, code) ? 1. : 0.; return vec4(f); } diff --git a/src/forge_invar/tools/sentences.py b/src/forge_invar/tools/sentences.py index 6f66817..01d9d0b 100644 --- a/src/forge_invar/tools/sentences.py +++ b/src/forge_invar/tools/sentences.py @@ -10,6 +10,23 @@ CP437_FILE = PROJECT_PATH / "project" / "inc_cp437.glsl" SENTENCES_FILE = PROJECT_PATH / "sentences.txt" BACKUP_SENTENCES_FILE = PROJECT_PATH / "sentences.example.txt" +FILE_CONTENT = """ +#ifndef INC_SENTENCES +#define INC_SENTENCES + +#define SENTENCE_COUNT {0} +#define SENTENCE_MAX_LENGTH {1} + +const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH]( +{2} +); + +const int lengths[] = int[SENTENCE_COUNT]( +{3} +); +#endif +""" + log = logging.getLogger(__name__) def read_mapping() -> dict[str, str]: @@ -44,25 +61,18 @@ def main(): max_len = max(len(sentence) for sentence in sentences) - with TARGET_FILE.open("w") as file: - file.write("#ifndef INC_SENTENCES\n") - file.write("#define INC_SENTENCES\n\n") - file.write(f"#define SENTENCE_COUNT {len(sentences)}\n") - file.write(f"#define SENTENCE_MAX_LENGTH {max_len}\n\n") - file.write( - "const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH](\n" - ) - file.writelines( - " " + convert(sentence, mapping, max_len) + ("," if i < len(sentences) - 1 else " ") + f" // {sentence}\n" - for i, sentence in enumerate(sentences) - ) - file.write(");\n\n") - file.write("const int lengths[] = int[SENTENCE_COUNT](\n") - file.write( + TARGET_FILE.write_text( + FILE_CONTENT.format( + len(sentences), + max_len, + "".join( + " " + convert(sentence, mapping, max_len) + ("," if i < len(sentences) - 1 else " ") + f" // {sentence}\n" + for i, sentence in enumerate(sentences) + ), " " + ", ".join(str(len(sentence)) for sentence in sentences) + "\n" ) - file.write(");\n") - file.write("#endif") + ) + log.info(f"Wrote {len(sentences)} sentences to {TARGET_FILE}")