diff options
| author | tech kaczynski <tk@techkaczynski.dev> | 2026-11-02 03:23:17 +1000 |
|---|---|---|
| committer | tech kaczynski <tk@techkaczynski.dev> | 2026-11-02 03:23:17 +1000 |
| commit | b47b2e022bfa74cd94d3296aae6bd34ca4afff02 (patch) | |
| tree | 5fa05b743289e1ab877a85c1bf1874be2736f04f | |
| parent | 040a896cb98963c74916c0b833efa9df2ef965e3 (diff) | |
new shaders for foliage, new material settings, added lots of assets.
310 files changed, 556 insertions, 93 deletions
@@ -76,12 +76,14 @@ static struct { } command_menu; static const cstr material_shader_keys[] = { - "model", - "model_cutoff" + "default", + "alpha_cutoff", + "alpha_cutoff_nocull", + "foliage", }; static const char material_shader_labels[] = - "Model;Model (cutoff)"; + "default;alpha_cutoff;alpha_cutoff_nocull;foliage"; /* forward decl */ static bool selection_root(Entity *ent); @@ -613,13 +615,19 @@ action_commit(EditorAction *action) { changed |= strcmp(a->tex_key ? a->tex_key : "", b->tex_key ? - b->tex_key : "") != 0; + b->tex_key : + "") != 0; changed |= strcmp(a->shader_key ? a->shader_key : "", b->shader_key ? b->shader_key : "") != 0; + + changed |= a->uv_scale.x != b->uv_scale.x || + a->uv_scale.y != b->uv_scale.y || + a->uv_offset.x != b->uv_offset.x || + a->uv_offset.y != b->uv_offset.y; } } break; @@ -875,7 +883,9 @@ editor_update(void) { /* sorry about the indentation :^) */ switch (ed.interact) { case ED_INTERACT_NONE: - if (!ed.focus_captured && IsKeyPressed(KEY_SPACE)) { + if (!ed.focus_captured && + ed.mode == ED_MODE_SCENE && + IsKeyPressed(KEY_SPACE)) { ed.panel[ED_PNL_CENTER].type = ED_PNL_TYPE_SPACE; ed.panel[ED_PNL_CENTER].enabled = true; } @@ -2909,7 +2919,7 @@ panel_properties(EditorPanelContainer container, bool input) { } group.y = next_y; - group.height = material_count ? 170 : 80; + group.height = material_count ? 230 : 80; GuiGroupBox(group, "Model"); row = (Rect){ @@ -3035,7 +3045,7 @@ panel_properties(EditorPanelContainer container, bool input) { row.x, row.y, 64, row.height }, "Shader"); - cstr shader_key = "model"; + cstr shader_key = "default"; if ((u32)mat_idx < model->mat_cnt) { cstr key = model->materials[mat_idx].shader_key; @@ -3057,6 +3067,90 @@ panel_properties(EditorPanelContainer container, bool input) { shader_bounds = control; shader_visible = true; + Vec2 uv[2] = { + {1, 1}, + {0, 0}, + }; + + if ((u32)mat_idx < model->mat_cnt) { + uv[0] = model->materials[mat_idx].uv_scale; + uv[1] = model->materials[mat_idx].uv_offset; + } + + cstr uv_labels[2] = {"Tiling", "Offset"}; + + for (int i = 0; i < 2; ++i) { + row.y += 30; + + GuiLabel((Rect){ + row.x, row.y, 64, row.height + }, uv_labels[i]); + + f32 width = control.width / 2; + f32 *values[2] = {&uv[i].x, &uv[i].y}; + + for (int axis = 0; axis < 2; ++axis) { + Rect box = { + control.x + axis * width, + row.y, + width - 4, + row.height, + }; + + f32 value = *values[axis]; + + if (!panel_float(&edit, box, &value, false)) { + continue; + } + + if (!isfinite(value) || value == *values[axis]) { + continue; + } + + EditorAction action = + action_begin(ED_ACTION_MODEL, false); + + if ((u32)mat_idx >= model->mat_cnt) { + u32 count = material_count; + MaterialOverride *materials; + + materials = realloc(model->materials, + count * sizeof(*materials)); + + if (!materials) { + perror("material UV: alloc failed."); + exit(1); + } + + memset(materials + model->mat_cnt, 0, + (count - model->mat_cnt) * + sizeof(*materials)); + + for (u32 j = model->mat_cnt; j < count; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + + model->materials = materials; + model->mat_cnt = count; + } + + MaterialOverride *material; + material = &model->materials[mat_idx]; + + Vec2 *target = i == 0 ? + &material->uv_scale : &material->uv_offset; + + if (axis == 0) { + target->x = value; + } else { + target->y = value; + } + + *values[axis] = value; + action_commit(&action); + } + } + model_end: next_y = group.y + group.height + pad + 20 + 16; @@ -3378,10 +3472,15 @@ editor_set_material(cstr key, u32 mat_idx, MaterialProperty prop) { (count - model->mat_cnt) * sizeof(*materials)); + for (u32 i = model->mat_cnt; i < count; ++i) { + materials[i].uv_scale = (Vec2){1, 1}; + } + model->materials = materials; model->mat_cnt = count; } + MaterialOverride *material; material = &model->materials[mat_idx]; @@ -260,60 +260,170 @@ entity_draw_mdl(u64 id) { model->mdl = &asset->mdl; } - Model mdl = *model->mdl; - mdl.transform = entity_world_matrix(id); + Model *mdl = model->mdl; + Matrix transform = entity_world_matrix(id); Color tint = ent->ed.selected && ed.mode == ED_MODE_SCENE ? - (Color){100, 100, 100, 255} : BLACK; + (Color){100, 100, 100, 255} : BLACK; - u32 count = MIN(model->mat_cnt, (u32)mdl.materialCount); + for (int i = 0; i < mdl->meshCount; ++i) { + u32 mat_idx = mdl->meshMaterial[i]; + Material material = mdl->materials[mat_idx]; - if (!count) { - DrawModel(mdl, (Vec3){0}, 1, tint); - return; - } + MaterialMap *albedo = &material.maps[MATERIAL_MAP_ALBEDO]; + MaterialMap saved_albedo = *albedo; - struct { - MaterialMap albedo; - Shader shader; - } saved[count]; + Vec2 uv_scale = {1, 1}; + Vec2 uv_offset = {0, 0}; + cstr shader_key = "default"; - for (u32 i = 0; i < count; ++i) { - Material *material = &mdl.materials[i]; - MaterialMap *albedo; - albedo = &material->maps[MATERIAL_MAP_ALBEDO]; + if (mat_idx < model->mat_cnt) { + const MaterialOverride *override; + override = &model->materials[mat_idx]; - saved[i].albedo = *albedo; - saved[i].shader = material->shader; + uv_scale = override->uv_scale; + uv_offset = override->uv_offset; - MaterialOverride *override = &model->materials[i]; + if (override->tex_key) { + Asset *asset = asset_get(override->tex_key); + if (asset) { + albedo->texture = asset->tex; + } + } - if (override->tex_key) { - Asset *asset = asset_get(override->tex_key); - if (asset) { - albedo->texture = asset->tex; + if (override->shader_key) { + shader_key = override->shader_key; } } - if (override->shader_key) { - FunShader *shader; - shader = shader_get(override->shader_key); + FunShader *shader = shader_get(shader_key); + if (!shader) { + *albedo = saved_albedo; + continue; + } + material.shader = shader->sdr; + + SetShaderValue( + material.shader, + fun_shader_uniform(shader_key, "uv_tiling"), + &uv_scale, + SHADER_UNIFORM_VEC2 + ); + + SetShaderValue( + material.shader, + fun_shader_uniform(shader_key, "uv_offset"), + &uv_offset, + SHADER_UNIFORM_VEC2 + ); + + /* Match DrawModel's material tint multiplication. */ + Color colour = albedo->color; + albedo->color = (Color){ + (u8)((int)colour.r * tint.r / 255), + (u8)((int)colour.g * tint.g / 255), + (u8)((int)colour.b * tint.b / 255), + (u8)((int)colour.a * tint.a / 255), + }; - if (shader) { - material->shader = shader->sdr; - } + /* Preserve DrawModel's GPU skinning support. */ + int loc = SHADER_LOC_MATRIX_BONETRANSFORMS; + if (material.shader.locs != NULL && + material.shader.locs[loc] != -1 && + mdl->boneMatrices != NULL) { + rlEnableShader(material.shader.id); + rlSetUniformMatrices( + material.shader.locs[loc], + mdl->boneMatrices, + mdl->skeleton.boneCount + ); } - } - DrawModel(mdl, (Vec3){0}, 1, tint); + bool nocull = + strcmp(shader_key, "alpha_cutoff_nocull") == 0 || + strcmp(shader_key, "foliage") == 0; - for (u32 i = 0; i < count; ++i) { - Material *material = &mdl.materials[i]; - material->maps[MATERIAL_MAP_ALBEDO] = saved[i].albedo; - material->shader = saved[i].shader; + if (nocull) { + rlDisableBackfaceCulling(); + } + + DrawMesh(mdl->meshes[i], material, transform); + + if (nocull) { + rlEnableBackfaceCulling(); + } + + *albedo = saved_albedo; } } +// static void +// entity_draw_mdl(u64 id) { +// Entity *ent = entity_get(id); +// ModelCmp *model = &ent->mdl; + +// if (!model->mdl) { +// Asset *asset = asset_get(model->key); +// if (!asset) { +// return; +// } +// model->mdl = &asset->mdl; +// } + +// Model mdl = *model->mdl; +// mdl.transform = entity_world_matrix(id); + +// Color tint = ent->ed.selected && ed.mode == ED_MODE_SCENE ? +// (Color){100, 100, 100, 255} : BLACK; + +// u32 count = MIN(model->mat_cnt, (u32)mdl.materialCount); + +// if (!count) { +// DrawModel(mdl, (Vec3){0}, 1, tint); +// return; +// } + +// struct { +// MaterialMap albedo; +// Shader shader; +// } saved[count]; + +// for (u32 i = 0; i < count; ++i) { +// Material *material = &mdl.materials[i]; +// MaterialMap *albedo; +// albedo = &material->maps[MATERIAL_MAP_ALBEDO]; + +// saved[i].albedo = *albedo; +// saved[i].shader = material->shader; + +// MaterialOverride *override = &model->materials[i]; + +// if (override->tex_key) { +// Asset *asset = asset_get(override->tex_key); +// if (asset) { +// albedo->texture = asset->tex; +// } +// } + +// if (override->shader_key) { +// FunShader *shader; +// shader = shader_get(override->shader_key); + +// if (shader) { +// material->shader = shader->sdr; +// } +// } +// } + +// DrawModel(mdl, (Vec3){0}, 1, tint); + +// for (u32 i = 0; i < count; ++i) { +// Material *material = &mdl.materials[i]; +// material->maps[MATERIAL_MAP_ALBEDO] = saved[i].albedo; +// material->shader = saved[i].shader; +// } +// } + void entity_system_update(void) { entity_process_delete_queue(); @@ -453,9 +563,15 @@ entity_model_copy(const ModelCmp *src) { MaterialOverride *to = ©.materials[i]; to->tex_key = from->tex_key ? - strdup(from->tex_key) : NULL; + strdup(from->tex_key) : + NULL; + to->shader_key = from->shader_key ? - strdup(from->shader_key) : NULL; + strdup(from->shader_key) : + NULL; + + to->uv_scale = from->uv_scale; + to->uv_offset = from->uv_offset; } } @@ -23,6 +23,7 @@ typedef enum { typedef struct { char *tex_key; char *shader_key; + Vec2 uv_scale, uv_offset; } MaterialOverride; typedef struct { @@ -10,26 +10,22 @@ static const Color SKY_DAY_ZENITH = { 20, 71, 158, 255 }; static f32 sky_smoothstep(f32 edge_0, f32 edge_1, f32 value) { f32 amount = (value - edge_0) / (edge_1 - edge_0); - if (amount < 0.0f) { amount = 0.0f; } else if (amount > 1.0f) { amount = 1.0f; } - return amount * amount * (3.0f - 2.0f * amount); } static Vec3 sky_get_sun_direction(f32 cycle) { f32 angle = cycle * 2.0f * PI - PI * 0.5f; - Vec3 dir = (Vec3) { cosf(angle), sinf(angle), 0.0f }; - return Vector3Normalize(dir); } @@ -45,9 +41,8 @@ sky_draw_symbol(Texture tex, Vec3 dir, Camera3D cam, f32 angular_diameter, return; } - Vec3 cam_fwd = Vector3Normalize( - Vector3Subtract(cam.target, cam.position)); - + Vec3 cam_fwd = + Vector3Normalize(Vector3Subtract(cam.target, cam.position)); f32 fwd_facing = Vector3DotProduct(cam_fwd, dir); // don't draw if behind the camera @@ -184,7 +179,7 @@ env_update_shader(cstr key) { return; } - Shader sdr = shader_get(key)->sdr; + Shader sdr = res->sdr; SetTraceLogLevel(LOG_DEBUG); SetShaderValue( sdr, @@ -271,8 +266,10 @@ env_exit(void) { void env_update(void) { sky_update_lighting(); - env_update_shader("model"); - env_update_shader("model_cutoff"); + env_update_shader("default"); + env_update_shader("alpha_cutoff"); + env_update_shader("alpha_cutoff_nocull"); + env_update_shader("foliage"); } void @@ -38,7 +38,7 @@ asset_load_data(cstr key) { } for (int i = 0; i < mdl.materialCount; ++i) { - mdl.materials[i].shader = shader_get("model")->sdr; + mdl.materials[i].shader = shader_get("default")->sdr; } asset->tag = ASSET_TAG_MODEL; @@ -55,6 +55,7 @@ asset_load_data(cstr key) { } GenTextureMipmaps(&tex); + SetTextureWrap(tex, TEXTURE_WRAP_REPEAT); // SetTextureFilter(tex, TEXTURE_FILTER_ANISOTROPIC_16X); SetTextureFilter(tex, TEXTURE_FILTER_TRILINEAR); // SetTextureFilter(tex, TEXTURE_FILTER_BILINEAR); @@ -143,14 +144,22 @@ res_init(void) { map_init(&res.sdr); map_init(&res.assets); - fun_shader_create("model", + fun_shader_create("default", "res/sdr/mdl_vtx_lit.vs", "res/sdr/mdl_vtx_lit.fs"); - fun_shader_create("model_cutoff", + fun_shader_create("alpha_cutoff", "res/sdr/mdl_vtx_lit.vs", "res/sdr/mdl_vtx_lit_cutoff.fs"); + fun_shader_create("alpha_cutoff_nocull", + "res/sdr/mdl_vtx_lit.vs", + "res/sdr/mdl_two_sided_cutoff.fs"); + + fun_shader_create("foliage", + "res/sdr/mdl_foliage.vs", + "res/sdr/mdl_vtx_lit_cutoff.fs"); + fun_shader_create("sky", NULL, "res/sdr/sky.fs"); cstr filter = ".glb;.png;.ttf;.otf;.ogg"; @@ -278,14 +287,14 @@ fun_shader_uniform(cstr skey, cstr ukey) { return *ret; } - BeginShaderMode(sdr->sdr); + // BeginShaderMode(sdr->sdr); int loc = rlGetLocationUniform(sdr->sdr.id, ukey); if (loc < 0) { TraceLog(LOG_ERROR, "shader '%s' uniform '%s' not found.\n", skey, ukey); exit(1); } - EndShaderMode(); + // EndShaderMode(); map_set(&sdr->uniforms, ukey, loc); ret = map_get(&sdr->uniforms, ukey); diff --git a/res/mdl/fun_game_nimbin_buildings.glb b/res/mdl/fun_game_nimbin_buildings.glb Binary files differnew file mode 100644 index 0000000..fba1be0 --- /dev/null +++ b/res/mdl/fun_game_nimbin_buildings.glb diff --git a/res/mdl/fun_game_nimbin_roads.glb b/res/mdl/fun_game_nimbin_roads.glb Binary files differnew file mode 100644 index 0000000..3bd9c55 --- /dev/null +++ b/res/mdl/fun_game_nimbin_roads.glb diff --git a/res/mdl/fun_game_nimbin_terrain.glb b/res/mdl/fun_game_nimbin_terrain.glb Binary files differnew file mode 100644 index 0000000..f3c226e --- /dev/null +++ b/res/mdl/fun_game_nimbin_terrain.glb diff --git a/res/mdl/psx-houses/House_10_1.glb b/res/mdl/psx-houses/House_10_1.glb Binary files differnew file mode 100644 index 0000000..4923936 --- /dev/null +++ b/res/mdl/psx-houses/House_10_1.glb diff --git a/res/mdl/psx-houses/House_10_10.glb b/res/mdl/psx-houses/House_10_10.glb Binary files differnew file mode 100644 index 0000000..115dcca --- /dev/null +++ b/res/mdl/psx-houses/House_10_10.glb diff --git a/res/mdl/psx-houses/House_10_2.glb b/res/mdl/psx-houses/House_10_2.glb Binary files differnew file mode 100644 index 0000000..e6d8eb6 --- /dev/null +++ b/res/mdl/psx-houses/House_10_2.glb diff --git a/res/mdl/psx-houses/House_10_3.glb b/res/mdl/psx-houses/House_10_3.glb Binary files differnew file mode 100644 index 0000000..bcccdf4 --- /dev/null +++ b/res/mdl/psx-houses/House_10_3.glb diff --git a/res/mdl/psx-houses/House_10_4.glb b/res/mdl/psx-houses/House_10_4.glb Binary files differnew file mode 100644 index 0000000..4c05500 --- /dev/null +++ b/res/mdl/psx-houses/House_10_4.glb diff --git a/res/mdl/psx-houses/House_10_5.glb b/res/mdl/psx-houses/House_10_5.glb Binary files differnew file mode 100644 index 0000000..9397dfa --- /dev/null +++ b/res/mdl/psx-houses/House_10_5.glb diff --git a/res/mdl/psx-houses/House_10_6.glb b/res/mdl/psx-houses/House_10_6.glb Binary files differnew file mode 100644 index 0000000..0c71a80 --- /dev/null +++ b/res/mdl/psx-houses/House_10_6.glb diff --git a/res/mdl/psx-houses/House_10_7.glb b/res/mdl/psx-houses/House_10_7.glb Binary files differnew file mode 100644 index 0000000..f5e14bd --- /dev/null +++ b/res/mdl/psx-houses/House_10_7.glb diff --git a/res/mdl/psx-houses/House_10_8.glb b/res/mdl/psx-houses/House_10_8.glb Binary files differnew file mode 100644 index 0000000..4d965ae --- /dev/null +++ b/res/mdl/psx-houses/House_10_8.glb diff --git a/res/mdl/psx-houses/House_10_9.glb b/res/mdl/psx-houses/House_10_9.glb Binary files differnew file mode 100644 index 0000000..9e49655 --- /dev/null +++ b/res/mdl/psx-houses/House_10_9.glb diff --git a/res/mdl/psx-houses/House_1_1.glb b/res/mdl/psx-houses/House_1_1.glb Binary files differnew file mode 100644 index 0000000..b46282f --- /dev/null +++ b/res/mdl/psx-houses/House_1_1.glb diff --git a/res/mdl/psx-houses/House_1_10.glb b/res/mdl/psx-houses/House_1_10.glb Binary files differnew file mode 100644 index 0000000..7518197 --- /dev/null +++ b/res/mdl/psx-houses/House_1_10.glb diff --git a/res/mdl/psx-houses/House_1_2.glb b/res/mdl/psx-houses/House_1_2.glb Binary files differnew file mode 100644 index 0000000..d75c4f7 --- /dev/null +++ b/res/mdl/psx-houses/House_1_2.glb diff --git a/res/mdl/psx-houses/House_1_3.glb b/res/mdl/psx-houses/House_1_3.glb Binary files differnew file mode 100644 index 0000000..aeb75d8 --- /dev/null +++ b/res/mdl/psx-houses/House_1_3.glb diff --git a/res/mdl/psx-houses/House_1_4.glb b/res/mdl/psx-houses/House_1_4.glb Binary files differnew file mode 100644 index 0000000..00ffd96 --- /dev/null +++ b/res/mdl/psx-houses/House_1_4.glb diff --git a/res/mdl/psx-houses/House_1_5.glb b/res/mdl/psx-houses/House_1_5.glb Binary files differnew file mode 100644 index 0000000..1190205 --- /dev/null +++ b/res/mdl/psx-houses/House_1_5.glb diff --git a/res/mdl/psx-houses/House_1_6.glb b/res/mdl/psx-houses/House_1_6.glb Binary files differnew file mode 100644 index 0000000..af88915 --- /dev/null +++ b/res/mdl/psx-houses/House_1_6.glb diff --git a/res/mdl/psx-houses/House_1_7.glb b/res/mdl/psx-houses/House_1_7.glb Binary files differnew file mode 100644 index 0000000..27f90b7 --- /dev/null +++ b/res/mdl/psx-houses/House_1_7.glb diff --git a/res/mdl/psx-houses/House_1_8.glb b/res/mdl/psx-houses/House_1_8.glb Binary files differnew file mode 100644 index 0000000..de169cb --- /dev/null +++ b/res/mdl/psx-houses/House_1_8.glb diff --git a/res/mdl/psx-houses/House_1_9.glb b/res/mdl/psx-houses/House_1_9.glb Binary files differnew file mode 100644 index 0000000..a8e5372 --- /dev/null +++ b/res/mdl/psx-houses/House_1_9.glb diff --git a/res/mdl/psx-houses/House_2_1.glb b/res/mdl/psx-houses/House_2_1.glb Binary files differnew file mode 100644 index 0000000..9d37cbc --- /dev/null +++ b/res/mdl/psx-houses/House_2_1.glb diff --git a/res/mdl/psx-houses/House_2_10.glb b/res/mdl/psx-houses/House_2_10.glb Binary files differnew file mode 100644 index 0000000..6ded621 --- /dev/null +++ b/res/mdl/psx-houses/House_2_10.glb diff --git a/res/mdl/psx-houses/House_2_2.glb b/res/mdl/psx-houses/House_2_2.glb Binary files differnew file mode 100644 index 0000000..96e4e0f --- /dev/null +++ b/res/mdl/psx-houses/House_2_2.glb diff --git a/res/mdl/psx-houses/House_2_3.glb b/res/mdl/psx-houses/House_2_3.glb Binary files differnew file mode 100644 index 0000000..3dcdb6f --- /dev/null +++ b/res/mdl/psx-houses/House_2_3.glb diff --git a/res/mdl/psx-houses/House_2_4.glb b/res/mdl/psx-houses/House_2_4.glb Binary files differnew file mode 100644 index 0000000..c729a33 --- /dev/null +++ b/res/mdl/psx-houses/House_2_4.glb diff --git a/res/mdl/psx-houses/House_2_5.glb b/res/mdl/psx-houses/House_2_5.glb Binary files differnew file mode 100644 index 0000000..ff0e087 --- /dev/null +++ b/res/mdl/psx-houses/House_2_5.glb diff --git a/res/mdl/psx-houses/House_2_6.glb b/res/mdl/psx-houses/House_2_6.glb Binary files differnew file mode 100644 index 0000000..41d8a7b --- /dev/null +++ b/res/mdl/psx-houses/House_2_6.glb diff --git a/res/mdl/psx-houses/House_2_7.glb b/res/mdl/psx-houses/House_2_7.glb Binary files differnew file mode 100644 index 0000000..9b0102c --- /dev/null +++ b/res/mdl/psx-houses/House_2_7.glb diff --git a/res/mdl/psx-houses/House_2_8.glb b/res/mdl/psx-houses/House_2_8.glb Binary files differnew file mode 100644 index 0000000..976ad5e --- /dev/null +++ b/res/mdl/psx-houses/House_2_8.glb diff --git a/res/mdl/psx-houses/House_2_9.glb b/res/mdl/psx-houses/House_2_9.glb Binary files differnew file mode 100644 index 0000000..7612e6e --- /dev/null +++ b/res/mdl/psx-houses/House_2_9.glb diff --git a/res/mdl/psx-houses/House_3_1.glb b/res/mdl/psx-houses/House_3_1.glb Binary files differnew file mode 100644 index 0000000..a5c0030 --- /dev/null +++ b/res/mdl/psx-houses/House_3_1.glb diff --git a/res/mdl/psx-houses/House_3_10.glb b/res/mdl/psx-houses/House_3_10.glb Binary files differnew file mode 100644 index 0000000..ef774c9 --- /dev/null +++ b/res/mdl/psx-houses/House_3_10.glb diff --git a/res/mdl/psx-houses/House_3_2.glb b/res/mdl/psx-houses/House_3_2.glb Binary files differnew file mode 100644 index 0000000..751c69b --- /dev/null +++ b/res/mdl/psx-houses/House_3_2.glb diff --git a/res/mdl/psx-houses/House_3_3.glb b/res/mdl/psx-houses/House_3_3.glb Binary files differnew file mode 100644 index 0000000..5120ec2 --- /dev/null +++ b/res/mdl/psx-houses/House_3_3.glb diff --git a/res/mdl/psx-houses/House_3_4.glb b/res/mdl/psx-houses/House_3_4.glb Binary files differnew file mode 100644 index 0000000..bc2f54e --- /dev/null +++ b/res/mdl/psx-houses/House_3_4.glb diff --git a/res/mdl/psx-houses/House_3_5.glb b/res/mdl/psx-houses/House_3_5.glb Binary files differnew file mode 100644 index 0000000..a663bc3 --- /dev/null +++ b/res/mdl/psx-houses/House_3_5.glb diff --git a/res/mdl/psx-houses/House_3_6.glb b/res/mdl/psx-houses/House_3_6.glb Binary files differnew file mode 100644 index 0000000..f2d330c --- /dev/null +++ b/res/mdl/psx-houses/House_3_6.glb diff --git a/res/mdl/psx-houses/House_3_7.glb b/res/mdl/psx-houses/House_3_7.glb Binary files differnew file mode 100644 index 0000000..4082efb --- /dev/null +++ b/res/mdl/psx-houses/House_3_7.glb diff --git a/res/mdl/psx-houses/House_3_8.glb b/res/mdl/psx-houses/House_3_8.glb Binary files differnew file mode 100644 index 0000000..4246a4c --- /dev/null +++ b/res/mdl/psx-houses/House_3_8.glb diff --git a/res/mdl/psx-houses/House_3_9.glb b/res/mdl/psx-houses/House_3_9.glb Binary files differnew file mode 100644 index 0000000..dd8c4ff --- /dev/null +++ b/res/mdl/psx-houses/House_3_9.glb diff --git a/res/mdl/psx-houses/House_4_1.glb b/res/mdl/psx-houses/House_4_1.glb Binary files differnew file mode 100644 index 0000000..b93e9af --- /dev/null +++ b/res/mdl/psx-houses/House_4_1.glb diff --git a/res/mdl/psx-houses/House_4_10.glb b/res/mdl/psx-houses/House_4_10.glb Binary files differnew file mode 100644 index 0000000..2b633a4 --- /dev/null +++ b/res/mdl/psx-houses/House_4_10.glb diff --git a/res/mdl/psx-houses/House_4_2.glb b/res/mdl/psx-houses/House_4_2.glb Binary files differnew file mode 100644 index 0000000..38dd4b4 --- /dev/null +++ b/res/mdl/psx-houses/House_4_2.glb diff --git a/res/mdl/psx-houses/House_4_3.glb b/res/mdl/psx-houses/House_4_3.glb Binary files differnew file mode 100644 index 0000000..0633dbe --- /dev/null +++ b/res/mdl/psx-houses/House_4_3.glb diff --git a/res/mdl/psx-houses/House_4_4.glb b/res/mdl/psx-houses/House_4_4.glb Binary files differnew file mode 100644 index 0000000..8cb8a99 --- /dev/null +++ b/res/mdl/psx-houses/House_4_4.glb diff --git a/res/mdl/psx-houses/House_4_5.glb b/res/mdl/psx-houses/House_4_5.glb Binary files differnew file mode 100644 index 0000000..9398a84 --- /dev/null +++ b/res/mdl/psx-houses/House_4_5.glb diff --git a/res/mdl/psx-houses/House_4_6.glb b/res/mdl/psx-houses/House_4_6.glb Binary files differnew file mode 100644 index 0000000..6eed569 --- /dev/null +++ b/res/mdl/psx-houses/House_4_6.glb diff --git a/res/mdl/psx-houses/House_4_7.glb b/res/mdl/psx-houses/House_4_7.glb Binary files differnew file mode 100644 index 0000000..0e9128f --- /dev/null +++ b/res/mdl/psx-houses/House_4_7.glb diff --git a/res/mdl/psx-houses/House_4_8.glb b/res/mdl/psx-houses/House_4_8.glb Binary files differnew file mode 100644 index 0000000..a693082 --- /dev/null +++ b/res/mdl/psx-houses/House_4_8.glb diff --git a/res/mdl/psx-houses/House_4_9.glb b/res/mdl/psx-houses/House_4_9.glb Binary files differnew file mode 100644 index 0000000..b2fbf4d --- /dev/null +++ b/res/mdl/psx-houses/House_4_9.glb diff --git a/res/mdl/psx-houses/House_5_1.glb b/res/mdl/psx-houses/House_5_1.glb Binary files differnew file mode 100644 index 0000000..fabd441 --- /dev/null +++ b/res/mdl/psx-houses/House_5_1.glb diff --git a/res/mdl/psx-houses/House_5_10.glb b/res/mdl/psx-houses/House_5_10.glb Binary files differnew file mode 100644 index 0000000..a2ccf18 --- /dev/null +++ b/res/mdl/psx-houses/House_5_10.glb diff --git a/res/mdl/psx-houses/House_5_2.glb b/res/mdl/psx-houses/House_5_2.glb Binary files differnew file mode 100644 index 0000000..1b0f1a8 --- /dev/null +++ b/res/mdl/psx-houses/House_5_2.glb diff --git a/res/mdl/psx-houses/House_5_3.glb b/res/mdl/psx-houses/House_5_3.glb Binary files differnew file mode 100644 index 0000000..f6f5d4f --- /dev/null +++ b/res/mdl/psx-houses/House_5_3.glb diff --git a/res/mdl/psx-houses/House_5_4.glb b/res/mdl/psx-houses/House_5_4.glb Binary files differnew file mode 100644 index 0000000..c672e70 --- /dev/null +++ b/res/mdl/psx-houses/House_5_4.glb diff --git a/res/mdl/psx-houses/House_5_5.glb b/res/mdl/psx-houses/House_5_5.glb Binary files differnew file mode 100644 index 0000000..950662b --- /dev/null +++ b/res/mdl/psx-houses/House_5_5.glb diff --git a/res/mdl/psx-houses/House_5_6.glb b/res/mdl/psx-houses/House_5_6.glb Binary files differnew file mode 100644 index 0000000..d059536 --- /dev/null +++ b/res/mdl/psx-houses/House_5_6.glb diff --git a/res/mdl/psx-houses/House_5_7.glb b/res/mdl/psx-houses/House_5_7.glb Binary files differnew file mode 100644 index 0000000..c58039a --- /dev/null +++ b/res/mdl/psx-houses/House_5_7.glb diff --git a/res/mdl/psx-houses/House_5_8.glb b/res/mdl/psx-houses/House_5_8.glb Binary files differnew file mode 100644 index 0000000..ecf2737 --- /dev/null +++ b/res/mdl/psx-houses/House_5_8.glb diff --git a/res/mdl/psx-houses/House_5_9.glb b/res/mdl/psx-houses/House_5_9.glb Binary files differnew file mode 100644 index 0000000..d81c955 --- /dev/null +++ b/res/mdl/psx-houses/House_5_9.glb diff --git a/res/mdl/psx-houses/House_6_1.glb b/res/mdl/psx-houses/House_6_1.glb Binary files differnew file mode 100644 index 0000000..295b2c8 --- /dev/null +++ b/res/mdl/psx-houses/House_6_1.glb diff --git a/res/mdl/psx-houses/House_6_10.glb b/res/mdl/psx-houses/House_6_10.glb Binary files differnew file mode 100644 index 0000000..ef8ba78 --- /dev/null +++ b/res/mdl/psx-houses/House_6_10.glb diff --git a/res/mdl/psx-houses/House_6_2.glb b/res/mdl/psx-houses/House_6_2.glb Binary files differnew file mode 100644 index 0000000..65cb86f --- /dev/null +++ b/res/mdl/psx-houses/House_6_2.glb diff --git a/res/mdl/psx-houses/House_6_3.glb b/res/mdl/psx-houses/House_6_3.glb Binary files differnew file mode 100644 index 0000000..1b11a30 --- /dev/null +++ b/res/mdl/psx-houses/House_6_3.glb diff --git a/res/mdl/psx-houses/House_6_4.glb b/res/mdl/psx-houses/House_6_4.glb Binary files differnew file mode 100644 index 0000000..8db9ea8 --- /dev/null +++ b/res/mdl/psx-houses/House_6_4.glb diff --git a/res/mdl/psx-houses/House_6_5.glb b/res/mdl/psx-houses/House_6_5.glb Binary files differnew file mode 100644 index 0000000..5b8bcaf --- /dev/null +++ b/res/mdl/psx-houses/House_6_5.glb diff --git a/res/mdl/psx-houses/House_6_6.glb b/res/mdl/psx-houses/House_6_6.glb Binary files differnew file mode 100644 index 0000000..d1ce847 --- /dev/null +++ b/res/mdl/psx-houses/House_6_6.glb diff --git a/res/mdl/psx-houses/House_6_7.glb b/res/mdl/psx-houses/House_6_7.glb Binary files differnew file mode 100644 index 0000000..bbcf4f9 --- /dev/null +++ b/res/mdl/psx-houses/House_6_7.glb diff --git a/res/mdl/psx-houses/House_6_8.glb b/res/mdl/psx-houses/House_6_8.glb Binary files differnew file mode 100644 index 0000000..4f1ff29 --- /dev/null +++ b/res/mdl/psx-houses/House_6_8.glb diff --git a/res/mdl/psx-houses/House_6_9.glb b/res/mdl/psx-houses/House_6_9.glb Binary files differnew file mode 100644 index 0000000..4fb5c90 --- /dev/null +++ b/res/mdl/psx-houses/House_6_9.glb diff --git a/res/mdl/psx-houses/House_7_1.glb b/res/mdl/psx-houses/House_7_1.glb Binary files differnew file mode 100644 index 0000000..6fe8577 --- /dev/null +++ b/res/mdl/psx-houses/House_7_1.glb diff --git a/res/mdl/psx-houses/House_7_10.glb b/res/mdl/psx-houses/House_7_10.glb Binary files differnew file mode 100644 index 0000000..0dc2ce9 --- /dev/null +++ b/res/mdl/psx-houses/House_7_10.glb diff --git a/res/mdl/psx-houses/House_7_2.glb b/res/mdl/psx-houses/House_7_2.glb Binary files differnew file mode 100644 index 0000000..ee6be9d --- /dev/null +++ b/res/mdl/psx-houses/House_7_2.glb diff --git a/res/mdl/psx-houses/House_7_3.glb b/res/mdl/psx-houses/House_7_3.glb Binary files differnew file mode 100644 index 0000000..f4faab9 --- /dev/null +++ b/res/mdl/psx-houses/House_7_3.glb diff --git a/res/mdl/psx-houses/House_7_4.glb b/res/mdl/psx-houses/House_7_4.glb Binary files differnew file mode 100644 index 0000000..9b1ee14 --- /dev/null +++ b/res/mdl/psx-houses/House_7_4.glb diff --git a/res/mdl/psx-houses/House_7_5.glb b/res/mdl/psx-houses/House_7_5.glb Binary files differnew file mode 100644 index 0000000..24c189c --- /dev/null +++ b/res/mdl/psx-houses/House_7_5.glb diff --git a/res/mdl/psx-houses/House_7_6.glb b/res/mdl/psx-houses/House_7_6.glb Binary files differnew file mode 100644 index 0000000..255d1ee --- /dev/null +++ b/res/mdl/psx-houses/House_7_6.glb diff --git a/res/mdl/psx-houses/House_7_7.glb b/res/mdl/psx-houses/House_7_7.glb Binary files differnew file mode 100644 index 0000000..57b3f30 --- /dev/null +++ b/res/mdl/psx-houses/House_7_7.glb diff --git a/res/mdl/psx-houses/House_7_8.glb b/res/mdl/psx-houses/House_7_8.glb Binary files differnew file mode 100644 index 0000000..e6cb504 --- /dev/null +++ b/res/mdl/psx-houses/House_7_8.glb diff --git a/res/mdl/psx-houses/House_7_9.glb b/res/mdl/psx-houses/House_7_9.glb Binary files differnew file mode 100644 index 0000000..d8b5d40 --- /dev/null +++ b/res/mdl/psx-houses/House_7_9.glb diff --git a/res/mdl/psx-houses/House_8_1.glb b/res/mdl/psx-houses/House_8_1.glb Binary files differnew file mode 100644 index 0000000..6a74627 --- /dev/null +++ b/res/mdl/psx-houses/House_8_1.glb diff --git a/res/mdl/psx-houses/House_8_10.glb b/res/mdl/psx-houses/House_8_10.glb Binary files differnew file mode 100644 index 0000000..e94b674 --- /dev/null +++ b/res/mdl/psx-houses/House_8_10.glb diff --git a/res/mdl/psx-houses/House_8_2.glb b/res/mdl/psx-houses/House_8_2.glb Binary files differnew file mode 100644 index 0000000..54e481c --- /dev/null +++ b/res/mdl/psx-houses/House_8_2.glb diff --git a/res/mdl/psx-houses/House_8_3.glb b/res/mdl/psx-houses/House_8_3.glb Binary files differnew file mode 100644 index 0000000..39f95f0 --- /dev/null +++ b/res/mdl/psx-houses/House_8_3.glb diff --git a/res/mdl/psx-houses/House_8_4.glb b/res/mdl/psx-houses/House_8_4.glb Binary files differnew file mode 100644 index 0000000..93ce6c2 --- /dev/null +++ b/res/mdl/psx-houses/House_8_4.glb diff --git a/res/mdl/psx-houses/House_8_5.glb b/res/mdl/psx-houses/House_8_5.glb Binary files differnew file mode 100644 index 0000000..3ca2dd3 --- /dev/null +++ b/res/mdl/psx-houses/House_8_5.glb diff --git a/res/mdl/psx-houses/House_8_6.glb b/res/mdl/psx-houses/House_8_6.glb Binary files differnew file mode 100644 index 0000000..79f83c0 --- /dev/null +++ b/res/mdl/psx-houses/House_8_6.glb diff --git a/res/mdl/psx-houses/House_8_7.glb b/res/mdl/psx-houses/House_8_7.glb Binary files differnew file mode 100644 index 0000000..6222dc8 --- /dev/null +++ b/res/mdl/psx-houses/House_8_7.glb diff --git a/res/mdl/psx-houses/House_8_8.glb b/res/mdl/psx-houses/House_8_8.glb Binary files differnew file mode 100644 index 0000000..3a75efc --- /dev/null +++ b/res/mdl/psx-houses/House_8_8.glb diff --git a/res/mdl/psx-houses/House_8_9.glb b/res/mdl/psx-houses/House_8_9.glb Binary files differnew file mode 100644 index 0000000..29ce0be --- /dev/null +++ b/res/mdl/psx-houses/House_8_9.glb diff --git a/res/mdl/psx-houses/House_9_1.glb b/res/mdl/psx-houses/House_9_1.glb Binary files differnew file mode 100644 index 0000000..f36d294 --- /dev/null +++ b/res/mdl/psx-houses/House_9_1.glb diff --git a/res/mdl/psx-houses/House_9_10.glb b/res/mdl/psx-houses/House_9_10.glb Binary files differnew file mode 100644 index 0000000..766b2fc --- /dev/null +++ b/res/mdl/psx-houses/House_9_10.glb diff --git a/res/mdl/psx-houses/House_9_2.glb b/res/mdl/psx-houses/House_9_2.glb Binary files differnew file mode 100644 index 0000000..1c8cebc --- /dev/null +++ b/res/mdl/psx-houses/House_9_2.glb diff --git a/res/mdl/psx-houses/House_9_3.glb b/res/mdl/psx-houses/House_9_3.glb Binary files differnew file mode 100644 index 0000000..c417127 --- /dev/null +++ b/res/mdl/psx-houses/House_9_3.glb diff --git a/res/mdl/psx-houses/House_9_4.glb b/res/mdl/psx-houses/House_9_4.glb Binary files differnew file mode 100644 index 0000000..90adca1 --- /dev/null +++ b/res/mdl/psx-houses/House_9_4.glb diff --git a/res/mdl/psx-houses/House_9_5.glb b/res/mdl/psx-houses/House_9_5.glb Binary files differnew file mode 100644 index 0000000..9f6132c --- /dev/null +++ b/res/mdl/psx-houses/House_9_5.glb diff --git a/res/mdl/psx-houses/House_9_6.glb b/res/mdl/psx-houses/House_9_6.glb Binary files differnew file mode 100644 index 0000000..174cf36 --- /dev/null +++ b/res/mdl/psx-houses/House_9_6.glb diff --git a/res/mdl/psx-houses/House_9_7.glb b/res/mdl/psx-houses/House_9_7.glb Binary files differnew file mode 100644 index 0000000..cefa147 --- /dev/null +++ b/res/mdl/psx-houses/House_9_7.glb diff --git a/res/mdl/psx-houses/House_9_8.glb b/res/mdl/psx-houses/House_9_8.glb Binary files differnew file mode 100644 index 0000000..5b10186 --- /dev/null +++ b/res/mdl/psx-houses/House_9_8.glb diff --git a/res/mdl/psx-houses/House_9_9.glb b/res/mdl/psx-houses/House_9_9.glb Binary files differnew file mode 100644 index 0000000..6f26503 --- /dev/null +++ b/res/mdl/psx-houses/House_9_9.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb Binary files differnew file mode 100644 index 0000000..cb1abcf --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_10_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb Binary files differnew file mode 100644 index 0000000..cc30da2 --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_1_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb Binary files differnew file mode 100644 index 0000000..9808648 --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_2_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb Binary files differnew file mode 100644 index 0000000..a9c59ca --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_3_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb Binary files differnew file mode 100644 index 0000000..feafc2c --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_4_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb Binary files differnew file mode 100644 index 0000000..f85213d --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_5_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb Binary files differnew file mode 100644 index 0000000..2e562fe --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_6_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb Binary files differnew file mode 100644 index 0000000..9afe303 --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_7_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb Binary files differnew file mode 100644 index 0000000..d1837f9 --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_8_Billboard.glb diff --git a/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb b/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb Binary files differnew file mode 100644 index 0000000..5b7784b --- /dev/null +++ b/res/mdl/psx-trees/Billboard/Tree_9_Billboard.glb diff --git a/res/mdl/psx-trees/Tree_1.glb b/res/mdl/psx-trees/Tree_1.glb Binary files differnew file mode 100644 index 0000000..2295697 --- /dev/null +++ b/res/mdl/psx-trees/Tree_1.glb diff --git a/res/mdl/psx-trees/Tree_10.glb b/res/mdl/psx-trees/Tree_10.glb Binary files differnew file mode 100644 index 0000000..cca9372 --- /dev/null +++ b/res/mdl/psx-trees/Tree_10.glb diff --git a/res/mdl/psx-trees/Tree_2.glb b/res/mdl/psx-trees/Tree_2.glb Binary files differnew file mode 100644 index 0000000..a0dd0c5 --- /dev/null +++ b/res/mdl/psx-trees/Tree_2.glb diff --git a/res/mdl/psx-trees/Tree_3.glb b/res/mdl/psx-trees/Tree_3.glb Binary files differnew file mode 100644 index 0000000..409ec19 --- /dev/null +++ b/res/mdl/psx-trees/Tree_3.glb diff --git a/res/mdl/psx-trees/Tree_4.glb b/res/mdl/psx-trees/Tree_4.glb Binary files differnew file mode 100644 index 0000000..eaed0a3 --- /dev/null +++ b/res/mdl/psx-trees/Tree_4.glb diff --git a/res/mdl/psx-trees/Tree_5.glb b/res/mdl/psx-trees/Tree_5.glb Binary files differnew file mode 100644 index 0000000..933952b --- /dev/null +++ b/res/mdl/psx-trees/Tree_5.glb diff --git a/res/mdl/psx-trees/Tree_6.glb b/res/mdl/psx-trees/Tree_6.glb Binary files differnew file mode 100644 index 0000000..442c973 --- /dev/null +++ b/res/mdl/psx-trees/Tree_6.glb diff --git a/res/mdl/psx-trees/Tree_7.glb b/res/mdl/psx-trees/Tree_7.glb Binary files differnew file mode 100644 index 0000000..800f1bb --- /dev/null +++ b/res/mdl/psx-trees/Tree_7.glb diff --git a/res/mdl/psx-trees/Tree_8.glb b/res/mdl/psx-trees/Tree_8.glb Binary files differnew file mode 100644 index 0000000..37aeb71 --- /dev/null +++ b/res/mdl/psx-trees/Tree_8.glb diff --git a/res/mdl/psx-trees/Tree_9.glb b/res/mdl/psx-trees/Tree_9.glb Binary files differnew file mode 100644 index 0000000..3035c6b --- /dev/null +++ b/res/mdl/psx-trees/Tree_9.glb diff --git a/res/save/scene.fgs b/res/save/scene.fgs Binary files differindex 23f4927..cd1e8dc 100644 --- a/res/save/scene.fgs +++ b/res/save/scene.fgs diff --git a/res/sdr/mdl_foliage.vs b/res/sdr/mdl_foliage.vs new file mode 100644 index 0000000..db9d7b6 --- /dev/null +++ b/res/sdr/mdl_foliage.vs @@ -0,0 +1,43 @@ +#version 330 + +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec3 vertexNormal; +in vec4 vertexColor; + +uniform mat4 mvp; +uniform mat4 matNormal; + +uniform vec3 sun_direction; +uniform vec3 sun_colour; +uniform float sun_intensity; + +uniform vec3 moon_direction; +uniform vec3 moon_colour; +uniform float moon_intensity; + +uniform vec3 ambient_colour; +uniform float ambient_intensity; + +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + +out vec2 frag_texcoord; +out vec4 frag_colour; +out vec3 frag_lighting; + +void main() { + vec3 world_normal = normalize((matNormal * vec4(vertexNormal, 0.0)).xyz); + float sun_diffuse = abs(dot(world_normal, sun_direction)); + float moon_diffuse = abs(dot(world_normal, moon_direction)); + + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; + + frag_lighting = ambient_light + sun_light + moon_light; + frag_texcoord = vertexTexCoord * uv_tiling + uv_offset; + frag_colour = vertexColor; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/res/sdr/mdl_two_sided_cutoff.fs b/res/sdr/mdl_two_sided_cutoff.fs new file mode 100644 index 0000000..c4ac07e --- /dev/null +++ b/res/sdr/mdl_two_sided_cutoff.fs @@ -0,0 +1,51 @@ +#version 330 + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +uniform vec3 sun_direction; +uniform vec3 sun_colour; +uniform float sun_intensity; + +uniform vec3 moon_direction; +uniform vec3 moon_colour; +uniform float moon_intensity; + +uniform vec3 ambient_colour; +uniform float ambient_intensity; + +in vec2 frag_texcoord; +in vec4 frag_colour; +in vec3 frag_normal; + +out vec4 finalColor; + +void main() { + vec4 texel = texture(texture0, frag_texcoord) * frag_colour; + + if (texel.a < 0.5) { + discard; + } + + texel.rgb += colDiffuse.rgb; + + vec3 normal = normalize(frag_normal); + + if (!gl_FrontFacing) { + normal = -normal; + } + + float sun_diffuse = max(dot(normal, sun_direction), 0.0); + float moon_diffuse = max(dot(normal, moon_direction), 0.0); + + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; + + vec3 lighting = max( + ambient_light + sun_light + moon_light, + vec3(0.0) + ); + + finalColor = vec4(texel.rgb * lighting, 1.0); +} diff --git a/res/sdr/mdl_vtx_lit.vs b/res/sdr/mdl_vtx_lit.vs index c69cb3d..d9b2bce 100644 --- a/res/sdr/mdl_vtx_lit.vs +++ b/res/sdr/mdl_vtx_lit.vs @@ -19,46 +19,27 @@ uniform float moon_intensity; uniform vec3 ambient_colour; uniform float ambient_intensity; +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + out vec2 frag_texcoord; out vec4 frag_colour; out vec3 frag_lighting; +out vec3 frag_normal; -void -main() { - vec3 world_normal = normalize( - (matNormal * vec4(vertexNormal, 0.0)).xyz - ); - - float sun_diffuse = max( - dot(world_normal, sun_direction), - 0.0 - ); - - float moon_diffuse = max( - dot(world_normal, moon_direction), - 0.0 - ); - - vec3 ambient_light = - ambient_colour * ambient_intensity; - - vec3 sun_light = - sun_colour * - sun_intensity * - sun_diffuse; - - vec3 moon_light = - moon_colour * - moon_intensity * - moon_diffuse; +void main() { + vec3 world_normal = normalize((matNormal * vec4(vertexNormal, 0.0)).xyz); + float sun_diffuse = max(dot(world_normal, sun_direction), 0.0); + float moon_diffuse = max(dot(world_normal, moon_direction), 0.0); - frag_lighting = - ambient_light + - sun_light + - moon_light; + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; - frag_texcoord = vertexTexCoord; + frag_lighting = ambient_light + sun_light + moon_light; + frag_texcoord = vertexTexCoord * uv_tiling + uv_offset; frag_colour = vertexColor; + frag_normal = world_normal; gl_Position = mvp * vec4(vertexPosition, 1.0); } diff --git a/res/sdr/mdl_vtx_lit_cutoff.fs b/res/sdr/mdl_vtx_lit_cutoff.fs new file mode 100644 index 0000000..79b3ce2 --- /dev/null +++ b/res/sdr/mdl_vtx_lit_cutoff.fs @@ -0,0 +1,25 @@ +#version 330 + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +in vec2 frag_texcoord; +in vec4 frag_colour; +in vec3 frag_lighting; + +out vec4 finalColor; + +void +main() { + vec4 texel = texture(texture0, frag_texcoord) * frag_colour; + + if (texel.a < 0.5) { + discard; + } + + texel.rgb += colDiffuse.rgb; + + vec3 lighting = max(frag_lighting, vec3(0.0)); + + finalColor = vec4(texel.rgb * lighting, 1.0); +} diff --git a/res/tex/Aquilarius-TEXTURES/texture1.png b/res/tex/Aquilarius-TEXTURES/texture1.png Binary files differnew file mode 100644 index 0000000..0d023cd --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture1.png diff --git a/res/tex/Aquilarius-TEXTURES/texture10.png b/res/tex/Aquilarius-TEXTURES/texture10.png Binary files differnew file mode 100644 index 0000000..3abed86 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture10.png diff --git a/res/tex/Aquilarius-TEXTURES/texture100.png b/res/tex/Aquilarius-TEXTURES/texture100.png Binary files differnew file mode 100644 index 0000000..90f434b --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture100.png diff --git a/res/tex/Aquilarius-TEXTURES/texture101.png b/res/tex/Aquilarius-TEXTURES/texture101.png Binary files differnew file mode 100644 index 0000000..f9a5db3 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture101.png diff --git a/res/tex/Aquilarius-TEXTURES/texture102.png b/res/tex/Aquilarius-TEXTURES/texture102.png Binary files differnew file mode 100644 index 0000000..12287b2 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture102.png diff --git a/res/tex/Aquilarius-TEXTURES/texture103.png b/res/tex/Aquilarius-TEXTURES/texture103.png Binary files differnew file mode 100644 index 0000000..492af83 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture103.png diff --git a/res/tex/Aquilarius-TEXTURES/texture104.png b/res/tex/Aquilarius-TEXTURES/texture104.png Binary files differnew file mode 100644 index 0000000..712a1fb --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture104.png diff --git a/res/tex/Aquilarius-TEXTURES/texture105.png b/res/tex/Aquilarius-TEXTURES/texture105.png Binary files differnew file mode 100644 index 0000000..c461b9c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture105.png diff --git a/res/tex/Aquilarius-TEXTURES/texture106.png b/res/tex/Aquilarius-TEXTURES/texture106.png Binary files differnew file mode 100644 index 0000000..e7f944c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture106.png diff --git a/res/tex/Aquilarius-TEXTURES/texture107.png b/res/tex/Aquilarius-TEXTURES/texture107.png Binary files differnew file mode 100644 index 0000000..f6b66a1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture107.png diff --git a/res/tex/Aquilarius-TEXTURES/texture108.png b/res/tex/Aquilarius-TEXTURES/texture108.png Binary files differnew file mode 100644 index 0000000..075b45c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture108.png diff --git a/res/tex/Aquilarius-TEXTURES/texture109.png b/res/tex/Aquilarius-TEXTURES/texture109.png Binary files differnew file mode 100644 index 0000000..5392cc9 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture109.png diff --git a/res/tex/Aquilarius-TEXTURES/texture11.png b/res/tex/Aquilarius-TEXTURES/texture11.png Binary files differnew file mode 100644 index 0000000..655d2b8 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture11.png diff --git a/res/tex/Aquilarius-TEXTURES/texture110.png b/res/tex/Aquilarius-TEXTURES/texture110.png Binary files differnew file mode 100644 index 0000000..e3075f4 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture110.png diff --git a/res/tex/Aquilarius-TEXTURES/texture111.png b/res/tex/Aquilarius-TEXTURES/texture111.png Binary files differnew file mode 100644 index 0000000..d9fcdef --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture111.png diff --git a/res/tex/Aquilarius-TEXTURES/texture112.png b/res/tex/Aquilarius-TEXTURES/texture112.png Binary files differnew file mode 100644 index 0000000..f5af861 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture112.png diff --git a/res/tex/Aquilarius-TEXTURES/texture113.png b/res/tex/Aquilarius-TEXTURES/texture113.png Binary files differnew file mode 100644 index 0000000..ff4a217 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture113.png diff --git a/res/tex/Aquilarius-TEXTURES/texture114.png b/res/tex/Aquilarius-TEXTURES/texture114.png Binary files differnew file mode 100644 index 0000000..944dc82 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture114.png diff --git a/res/tex/Aquilarius-TEXTURES/texture115.png b/res/tex/Aquilarius-TEXTURES/texture115.png Binary files differnew file mode 100644 index 0000000..efe5a75 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture115.png diff --git a/res/tex/Aquilarius-TEXTURES/texture116.png b/res/tex/Aquilarius-TEXTURES/texture116.png Binary files differnew file mode 100644 index 0000000..56adac2 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture116.png diff --git a/res/tex/Aquilarius-TEXTURES/texture117.png b/res/tex/Aquilarius-TEXTURES/texture117.png Binary files differnew file mode 100644 index 0000000..c5837a8 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture117.png diff --git a/res/tex/Aquilarius-TEXTURES/texture118.png b/res/tex/Aquilarius-TEXTURES/texture118.png Binary files differnew file mode 100644 index 0000000..b1f5bbc --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture118.png diff --git a/res/tex/Aquilarius-TEXTURES/texture119.png b/res/tex/Aquilarius-TEXTURES/texture119.png Binary files differnew file mode 100644 index 0000000..a627a50 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture119.png diff --git a/res/tex/Aquilarius-TEXTURES/texture12.png b/res/tex/Aquilarius-TEXTURES/texture12.png Binary files differnew file mode 100644 index 0000000..67fc2a0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture12.png diff --git a/res/tex/Aquilarius-TEXTURES/texture121.png b/res/tex/Aquilarius-TEXTURES/texture121.png Binary files differnew file mode 100644 index 0000000..631a570 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture121.png diff --git a/res/tex/Aquilarius-TEXTURES/texture122.png b/res/tex/Aquilarius-TEXTURES/texture122.png Binary files differnew file mode 100644 index 0000000..84d8059 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture122.png diff --git a/res/tex/Aquilarius-TEXTURES/texture123.png b/res/tex/Aquilarius-TEXTURES/texture123.png Binary files differnew file mode 100644 index 0000000..cf3e6fb --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture123.png diff --git a/res/tex/Aquilarius-TEXTURES/texture124.png b/res/tex/Aquilarius-TEXTURES/texture124.png Binary files differnew file mode 100644 index 0000000..75294c5 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture124.png diff --git a/res/tex/Aquilarius-TEXTURES/texture125.png b/res/tex/Aquilarius-TEXTURES/texture125.png Binary files differnew file mode 100644 index 0000000..900f863 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture125.png diff --git a/res/tex/Aquilarius-TEXTURES/texture126.png b/res/tex/Aquilarius-TEXTURES/texture126.png Binary files differnew file mode 100644 index 0000000..c89a5f4 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture126.png diff --git a/res/tex/Aquilarius-TEXTURES/texture127.png b/res/tex/Aquilarius-TEXTURES/texture127.png Binary files differnew file mode 100644 index 0000000..ed9dca7 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture127.png diff --git a/res/tex/Aquilarius-TEXTURES/texture128.png b/res/tex/Aquilarius-TEXTURES/texture128.png Binary files differnew file mode 100644 index 0000000..7de1d1c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture128.png diff --git a/res/tex/Aquilarius-TEXTURES/texture129.png b/res/tex/Aquilarius-TEXTURES/texture129.png Binary files differnew file mode 100644 index 0000000..1e90003 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture129.png diff --git a/res/tex/Aquilarius-TEXTURES/texture13.png b/res/tex/Aquilarius-TEXTURES/texture13.png Binary files differnew file mode 100644 index 0000000..b9be89d --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture13.png diff --git a/res/tex/Aquilarius-TEXTURES/texture130.png b/res/tex/Aquilarius-TEXTURES/texture130.png Binary files differnew file mode 100644 index 0000000..85684d1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture130.png diff --git a/res/tex/Aquilarius-TEXTURES/texture131.png b/res/tex/Aquilarius-TEXTURES/texture131.png Binary files differnew file mode 100644 index 0000000..c51b830 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture131.png diff --git a/res/tex/Aquilarius-TEXTURES/texture132.png b/res/tex/Aquilarius-TEXTURES/texture132.png Binary files differnew file mode 100644 index 0000000..5f0cfa4 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture132.png diff --git a/res/tex/Aquilarius-TEXTURES/texture133.png b/res/tex/Aquilarius-TEXTURES/texture133.png Binary files differnew file mode 100644 index 0000000..41a83f0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture133.png diff --git a/res/tex/Aquilarius-TEXTURES/texture134.png b/res/tex/Aquilarius-TEXTURES/texture134.png Binary files differnew file mode 100644 index 0000000..97ca751 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture134.png diff --git a/res/tex/Aquilarius-TEXTURES/texture135.png b/res/tex/Aquilarius-TEXTURES/texture135.png Binary files differnew file mode 100644 index 0000000..fd6b1a0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture135.png diff --git a/res/tex/Aquilarius-TEXTURES/texture136.png b/res/tex/Aquilarius-TEXTURES/texture136.png Binary files differnew file mode 100644 index 0000000..03d6b12 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture136.png diff --git a/res/tex/Aquilarius-TEXTURES/texture137.png b/res/tex/Aquilarius-TEXTURES/texture137.png Binary files differnew file mode 100644 index 0000000..b6b0e9a --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture137.png diff --git a/res/tex/Aquilarius-TEXTURES/texture138.png b/res/tex/Aquilarius-TEXTURES/texture138.png Binary files differnew file mode 100644 index 0000000..b3437a4 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture138.png diff --git a/res/tex/Aquilarius-TEXTURES/texture139.png b/res/tex/Aquilarius-TEXTURES/texture139.png Binary files differnew file mode 100644 index 0000000..8658732 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture139.png diff --git a/res/tex/Aquilarius-TEXTURES/texture14.png b/res/tex/Aquilarius-TEXTURES/texture14.png Binary files differnew file mode 100644 index 0000000..2648dd1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture14.png diff --git a/res/tex/Aquilarius-TEXTURES/texture140.png b/res/tex/Aquilarius-TEXTURES/texture140.png Binary files differnew file mode 100644 index 0000000..516a246 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture140.png diff --git a/res/tex/Aquilarius-TEXTURES/texture141.png b/res/tex/Aquilarius-TEXTURES/texture141.png Binary files differnew file mode 100644 index 0000000..db0a72c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture141.png diff --git a/res/tex/Aquilarius-TEXTURES/texture142.png b/res/tex/Aquilarius-TEXTURES/texture142.png Binary files differnew file mode 100644 index 0000000..7f2e638 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture142.png diff --git a/res/tex/Aquilarius-TEXTURES/texture143.png b/res/tex/Aquilarius-TEXTURES/texture143.png Binary files differnew file mode 100644 index 0000000..bcd2eb0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture143.png diff --git a/res/tex/Aquilarius-TEXTURES/texture144.png b/res/tex/Aquilarius-TEXTURES/texture144.png Binary files differnew file mode 100644 index 0000000..14794a6 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture144.png diff --git a/res/tex/Aquilarius-TEXTURES/texture145.png b/res/tex/Aquilarius-TEXTURES/texture145.png Binary files differnew file mode 100644 index 0000000..98bcf83 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture145.png diff --git a/res/tex/Aquilarius-TEXTURES/texture146.png b/res/tex/Aquilarius-TEXTURES/texture146.png Binary files differnew file mode 100644 index 0000000..fec6a29 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture146.png diff --git a/res/tex/Aquilarius-TEXTURES/texture147.png b/res/tex/Aquilarius-TEXTURES/texture147.png Binary files differnew file mode 100644 index 0000000..d1706d2 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture147.png diff --git a/res/tex/Aquilarius-TEXTURES/texture148.png b/res/tex/Aquilarius-TEXTURES/texture148.png Binary files differnew file mode 100644 index 0000000..6406494 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture148.png diff --git a/res/tex/Aquilarius-TEXTURES/texture149.png b/res/tex/Aquilarius-TEXTURES/texture149.png Binary files differnew file mode 100644 index 0000000..adfe2ba --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture149.png diff --git a/res/tex/Aquilarius-TEXTURES/texture15.png b/res/tex/Aquilarius-TEXTURES/texture15.png Binary files differnew file mode 100644 index 0000000..c67da24 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture15.png diff --git a/res/tex/Aquilarius-TEXTURES/texture150.png b/res/tex/Aquilarius-TEXTURES/texture150.png Binary files differnew file mode 100644 index 0000000..484753b --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture150.png diff --git a/res/tex/Aquilarius-TEXTURES/texture151.png b/res/tex/Aquilarius-TEXTURES/texture151.png Binary files differnew file mode 100644 index 0000000..8de2f79 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture151.png diff --git a/res/tex/Aquilarius-TEXTURES/texture16.png b/res/tex/Aquilarius-TEXTURES/texture16.png Binary files differnew file mode 100644 index 0000000..3c1bba0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture16.png diff --git a/res/tex/Aquilarius-TEXTURES/texture17.png b/res/tex/Aquilarius-TEXTURES/texture17.png Binary files differnew file mode 100644 index 0000000..a62f45d --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture17.png diff --git a/res/tex/Aquilarius-TEXTURES/texture18.png b/res/tex/Aquilarius-TEXTURES/texture18.png Binary files differnew file mode 100644 index 0000000..d7705e6 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture18.png diff --git a/res/tex/Aquilarius-TEXTURES/texture19.png b/res/tex/Aquilarius-TEXTURES/texture19.png Binary files differnew file mode 100644 index 0000000..e4abbaf --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture19.png diff --git a/res/tex/Aquilarius-TEXTURES/texture2.png b/res/tex/Aquilarius-TEXTURES/texture2.png Binary files differnew file mode 100644 index 0000000..edc56ef --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture2.png diff --git a/res/tex/Aquilarius-TEXTURES/texture20.png b/res/tex/Aquilarius-TEXTURES/texture20.png Binary files differnew file mode 100644 index 0000000..9ff2ef7 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture20.png diff --git a/res/tex/Aquilarius-TEXTURES/texture21.png b/res/tex/Aquilarius-TEXTURES/texture21.png Binary files differnew file mode 100644 index 0000000..874c4d6 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture21.png diff --git a/res/tex/Aquilarius-TEXTURES/texture22.png b/res/tex/Aquilarius-TEXTURES/texture22.png Binary files differnew file mode 100644 index 0000000..b5b19d1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture22.png diff --git a/res/tex/Aquilarius-TEXTURES/texture23.png b/res/tex/Aquilarius-TEXTURES/texture23.png Binary files differnew file mode 100644 index 0000000..9b8e421 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture23.png diff --git a/res/tex/Aquilarius-TEXTURES/texture24.png b/res/tex/Aquilarius-TEXTURES/texture24.png Binary files differnew file mode 100644 index 0000000..9831fce --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture24.png diff --git a/res/tex/Aquilarius-TEXTURES/texture25.png b/res/tex/Aquilarius-TEXTURES/texture25.png Binary files differnew file mode 100644 index 0000000..c249625 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture25.png diff --git a/res/tex/Aquilarius-TEXTURES/texture26.png b/res/tex/Aquilarius-TEXTURES/texture26.png Binary files differnew file mode 100644 index 0000000..cac0461 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture26.png diff --git a/res/tex/Aquilarius-TEXTURES/texture27.png b/res/tex/Aquilarius-TEXTURES/texture27.png Binary files differnew file mode 100644 index 0000000..3ad4df5 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture27.png diff --git a/res/tex/Aquilarius-TEXTURES/texture28.png b/res/tex/Aquilarius-TEXTURES/texture28.png Binary files differnew file mode 100644 index 0000000..04e6bef --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture28.png diff --git a/res/tex/Aquilarius-TEXTURES/texture29.png b/res/tex/Aquilarius-TEXTURES/texture29.png Binary files differnew file mode 100644 index 0000000..b1c6820 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture29.png diff --git a/res/tex/Aquilarius-TEXTURES/texture3.png b/res/tex/Aquilarius-TEXTURES/texture3.png Binary files differnew file mode 100644 index 0000000..03e7661 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture3.png diff --git a/res/tex/Aquilarius-TEXTURES/texture30.png b/res/tex/Aquilarius-TEXTURES/texture30.png Binary files differnew file mode 100644 index 0000000..cff1761 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture30.png diff --git a/res/tex/Aquilarius-TEXTURES/texture31.png b/res/tex/Aquilarius-TEXTURES/texture31.png Binary files differnew file mode 100644 index 0000000..bc35ea5 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture31.png diff --git a/res/tex/Aquilarius-TEXTURES/texture32.png b/res/tex/Aquilarius-TEXTURES/texture32.png Binary files differnew file mode 100644 index 0000000..b5cdccc --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture32.png diff --git a/res/tex/Aquilarius-TEXTURES/texture33.png b/res/tex/Aquilarius-TEXTURES/texture33.png Binary files differnew file mode 100644 index 0000000..87ba5d1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture33.png diff --git a/res/tex/Aquilarius-TEXTURES/texture34.png b/res/tex/Aquilarius-TEXTURES/texture34.png Binary files differnew file mode 100644 index 0000000..4e12590 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture34.png diff --git a/res/tex/Aquilarius-TEXTURES/texture35.png b/res/tex/Aquilarius-TEXTURES/texture35.png Binary files differnew file mode 100644 index 0000000..7d69adb --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture35.png diff --git a/res/tex/Aquilarius-TEXTURES/texture36.png b/res/tex/Aquilarius-TEXTURES/texture36.png Binary files differnew file mode 100644 index 0000000..f83d577 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture36.png diff --git a/res/tex/Aquilarius-TEXTURES/texture37.png b/res/tex/Aquilarius-TEXTURES/texture37.png Binary files differnew file mode 100644 index 0000000..d707e6e --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture37.png diff --git a/res/tex/Aquilarius-TEXTURES/texture38.png b/res/tex/Aquilarius-TEXTURES/texture38.png Binary files differnew file mode 100644 index 0000000..fd68a3c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture38.png diff --git a/res/tex/Aquilarius-TEXTURES/texture39.png b/res/tex/Aquilarius-TEXTURES/texture39.png Binary files differnew file mode 100644 index 0000000..21d8c17 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture39.png diff --git a/res/tex/Aquilarius-TEXTURES/texture4.png b/res/tex/Aquilarius-TEXTURES/texture4.png Binary files differnew file mode 100644 index 0000000..b74ad17 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture4.png diff --git a/res/tex/Aquilarius-TEXTURES/texture40.png b/res/tex/Aquilarius-TEXTURES/texture40.png Binary files differnew file mode 100644 index 0000000..3d0e975 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture40.png diff --git a/res/tex/Aquilarius-TEXTURES/texture41.png b/res/tex/Aquilarius-TEXTURES/texture41.png Binary files differnew file mode 100644 index 0000000..c8fc94e --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture41.png diff --git a/res/tex/Aquilarius-TEXTURES/texture42.png b/res/tex/Aquilarius-TEXTURES/texture42.png Binary files differnew file mode 100644 index 0000000..9d28a33 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture42.png diff --git a/res/tex/Aquilarius-TEXTURES/texture43.png b/res/tex/Aquilarius-TEXTURES/texture43.png Binary files differnew file mode 100644 index 0000000..b181cf8 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture43.png diff --git a/res/tex/Aquilarius-TEXTURES/texture44.png b/res/tex/Aquilarius-TEXTURES/texture44.png Binary files differnew file mode 100644 index 0000000..e9ed177 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture44.png diff --git a/res/tex/Aquilarius-TEXTURES/texture45.png b/res/tex/Aquilarius-TEXTURES/texture45.png Binary files differnew file mode 100644 index 0000000..eaee880 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture45.png diff --git a/res/tex/Aquilarius-TEXTURES/texture46.png b/res/tex/Aquilarius-TEXTURES/texture46.png Binary files differnew file mode 100644 index 0000000..ffa8700 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture46.png diff --git a/res/tex/Aquilarius-TEXTURES/texture47.png b/res/tex/Aquilarius-TEXTURES/texture47.png Binary files differnew file mode 100644 index 0000000..a25b01b --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture47.png diff --git a/res/tex/Aquilarius-TEXTURES/texture48.png b/res/tex/Aquilarius-TEXTURES/texture48.png Binary files differnew file mode 100644 index 0000000..dbdcd1f --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture48.png diff --git a/res/tex/Aquilarius-TEXTURES/texture49.png b/res/tex/Aquilarius-TEXTURES/texture49.png Binary files differnew file mode 100644 index 0000000..a32b66e --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture49.png diff --git a/res/tex/Aquilarius-TEXTURES/texture5.png b/res/tex/Aquilarius-TEXTURES/texture5.png Binary files differnew file mode 100644 index 0000000..f9908ac --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture5.png diff --git a/res/tex/Aquilarius-TEXTURES/texture50.png b/res/tex/Aquilarius-TEXTURES/texture50.png Binary files differnew file mode 100644 index 0000000..801460a --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture50.png diff --git a/res/tex/Aquilarius-TEXTURES/texture51.png b/res/tex/Aquilarius-TEXTURES/texture51.png Binary files differnew file mode 100644 index 0000000..c458b7a --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture51.png diff --git a/res/tex/Aquilarius-TEXTURES/texture52.png b/res/tex/Aquilarius-TEXTURES/texture52.png Binary files differnew file mode 100644 index 0000000..f653e3d --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture52.png diff --git a/res/tex/Aquilarius-TEXTURES/texture53.png b/res/tex/Aquilarius-TEXTURES/texture53.png Binary files differnew file mode 100644 index 0000000..968dbc6 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture53.png diff --git a/res/tex/Aquilarius-TEXTURES/texture54.png b/res/tex/Aquilarius-TEXTURES/texture54.png Binary files differnew file mode 100644 index 0000000..d2c49a0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture54.png diff --git a/res/tex/Aquilarius-TEXTURES/texture55.png b/res/tex/Aquilarius-TEXTURES/texture55.png Binary files differnew file mode 100644 index 0000000..1658ed4 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture55.png diff --git a/res/tex/Aquilarius-TEXTURES/texture56.png b/res/tex/Aquilarius-TEXTURES/texture56.png Binary files differnew file mode 100644 index 0000000..ddff4bf --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture56.png diff --git a/res/tex/Aquilarius-TEXTURES/texture57.png b/res/tex/Aquilarius-TEXTURES/texture57.png Binary files differnew file mode 100644 index 0000000..5295e1a --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture57.png diff --git a/res/tex/Aquilarius-TEXTURES/texture58.png b/res/tex/Aquilarius-TEXTURES/texture58.png Binary files differnew file mode 100644 index 0000000..7529ccb --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture58.png diff --git a/res/tex/Aquilarius-TEXTURES/texture59.png b/res/tex/Aquilarius-TEXTURES/texture59.png Binary files differnew file mode 100644 index 0000000..13d26da --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture59.png diff --git a/res/tex/Aquilarius-TEXTURES/texture6.png b/res/tex/Aquilarius-TEXTURES/texture6.png Binary files differnew file mode 100644 index 0000000..8a3be00 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture6.png diff --git a/res/tex/Aquilarius-TEXTURES/texture60.png b/res/tex/Aquilarius-TEXTURES/texture60.png Binary files differnew file mode 100644 index 0000000..0fe0f2a --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture60.png diff --git a/res/tex/Aquilarius-TEXTURES/texture61.png b/res/tex/Aquilarius-TEXTURES/texture61.png Binary files differnew file mode 100644 index 0000000..1790d99 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture61.png diff --git a/res/tex/Aquilarius-TEXTURES/texture62.png b/res/tex/Aquilarius-TEXTURES/texture62.png Binary files differnew file mode 100644 index 0000000..5bfd80d --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture62.png diff --git a/res/tex/Aquilarius-TEXTURES/texture63.png b/res/tex/Aquilarius-TEXTURES/texture63.png Binary files differnew file mode 100644 index 0000000..c607d15 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture63.png diff --git a/res/tex/Aquilarius-TEXTURES/texture64.png b/res/tex/Aquilarius-TEXTURES/texture64.png Binary files differnew file mode 100644 index 0000000..0b51541 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture64.png diff --git a/res/tex/Aquilarius-TEXTURES/texture65.png b/res/tex/Aquilarius-TEXTURES/texture65.png Binary files differnew file mode 100644 index 0000000..0b67e11 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture65.png diff --git a/res/tex/Aquilarius-TEXTURES/texture66.png b/res/tex/Aquilarius-TEXTURES/texture66.png Binary files differnew file mode 100644 index 0000000..62c309c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture66.png diff --git a/res/tex/Aquilarius-TEXTURES/texture67.png b/res/tex/Aquilarius-TEXTURES/texture67.png Binary files differnew file mode 100644 index 0000000..c535440 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture67.png diff --git a/res/tex/Aquilarius-TEXTURES/texture68.png b/res/tex/Aquilarius-TEXTURES/texture68.png Binary files differnew file mode 100644 index 0000000..d2a4901 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture68.png diff --git a/res/tex/Aquilarius-TEXTURES/texture69.png b/res/tex/Aquilarius-TEXTURES/texture69.png Binary files differnew file mode 100644 index 0000000..5da78ee --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture69.png diff --git a/res/tex/Aquilarius-TEXTURES/texture7.png b/res/tex/Aquilarius-TEXTURES/texture7.png Binary files differnew file mode 100644 index 0000000..5f77dfc --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture7.png diff --git a/res/tex/Aquilarius-TEXTURES/texture70.png b/res/tex/Aquilarius-TEXTURES/texture70.png Binary files differnew file mode 100644 index 0000000..d8c59f6 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture70.png diff --git a/res/tex/Aquilarius-TEXTURES/texture71.png b/res/tex/Aquilarius-TEXTURES/texture71.png Binary files differnew file mode 100644 index 0000000..81a29fb --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture71.png diff --git a/res/tex/Aquilarius-TEXTURES/texture72.png b/res/tex/Aquilarius-TEXTURES/texture72.png Binary files differnew file mode 100644 index 0000000..614cfde --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture72.png diff --git a/res/tex/Aquilarius-TEXTURES/texture73.png b/res/tex/Aquilarius-TEXTURES/texture73.png Binary files differnew file mode 100644 index 0000000..ab7a561 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture73.png diff --git a/res/tex/Aquilarius-TEXTURES/texture74.png b/res/tex/Aquilarius-TEXTURES/texture74.png Binary files differnew file mode 100644 index 0000000..c68c368 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture74.png diff --git a/res/tex/Aquilarius-TEXTURES/texture75.png b/res/tex/Aquilarius-TEXTURES/texture75.png Binary files differnew file mode 100644 index 0000000..fac10db --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture75.png diff --git a/res/tex/Aquilarius-TEXTURES/texture76.png b/res/tex/Aquilarius-TEXTURES/texture76.png Binary files differnew file mode 100644 index 0000000..c05aa1e --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture76.png diff --git a/res/tex/Aquilarius-TEXTURES/texture77.png b/res/tex/Aquilarius-TEXTURES/texture77.png Binary files differnew file mode 100644 index 0000000..200e3d7 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture77.png diff --git a/res/tex/Aquilarius-TEXTURES/texture78.png b/res/tex/Aquilarius-TEXTURES/texture78.png Binary files differnew file mode 100644 index 0000000..1d992a7 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture78.png diff --git a/res/tex/Aquilarius-TEXTURES/texture79.png b/res/tex/Aquilarius-TEXTURES/texture79.png Binary files differnew file mode 100644 index 0000000..01f3032 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture79.png diff --git a/res/tex/Aquilarius-TEXTURES/texture8.png b/res/tex/Aquilarius-TEXTURES/texture8.png Binary files differnew file mode 100644 index 0000000..29aa67b --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture8.png diff --git a/res/tex/Aquilarius-TEXTURES/texture80.png b/res/tex/Aquilarius-TEXTURES/texture80.png Binary files differnew file mode 100644 index 0000000..6342352 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture80.png diff --git a/res/tex/Aquilarius-TEXTURES/texture81.png b/res/tex/Aquilarius-TEXTURES/texture81.png Binary files differnew file mode 100644 index 0000000..70718d8 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture81.png diff --git a/res/tex/Aquilarius-TEXTURES/texture82.png b/res/tex/Aquilarius-TEXTURES/texture82.png Binary files differnew file mode 100644 index 0000000..6220c7e --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture82.png diff --git a/res/tex/Aquilarius-TEXTURES/texture83.png b/res/tex/Aquilarius-TEXTURES/texture83.png Binary files differnew file mode 100644 index 0000000..ca66da0 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture83.png diff --git a/res/tex/Aquilarius-TEXTURES/texture84.png b/res/tex/Aquilarius-TEXTURES/texture84.png Binary files differnew file mode 100644 index 0000000..f219f59 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture84.png diff --git a/res/tex/Aquilarius-TEXTURES/texture85.png b/res/tex/Aquilarius-TEXTURES/texture85.png Binary files differnew file mode 100644 index 0000000..162abfa --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture85.png diff --git a/res/tex/Aquilarius-TEXTURES/texture86.png b/res/tex/Aquilarius-TEXTURES/texture86.png Binary files differnew file mode 100644 index 0000000..06d4afe --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture86.png diff --git a/res/tex/Aquilarius-TEXTURES/texture87.png b/res/tex/Aquilarius-TEXTURES/texture87.png Binary files differnew file mode 100644 index 0000000..ced81ac --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture87.png diff --git a/res/tex/Aquilarius-TEXTURES/texture88.png b/res/tex/Aquilarius-TEXTURES/texture88.png Binary files differnew file mode 100644 index 0000000..98133b1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture88.png diff --git a/res/tex/Aquilarius-TEXTURES/texture89.png b/res/tex/Aquilarius-TEXTURES/texture89.png Binary files differnew file mode 100644 index 0000000..1c27096 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture89.png diff --git a/res/tex/Aquilarius-TEXTURES/texture9.png b/res/tex/Aquilarius-TEXTURES/texture9.png Binary files differnew file mode 100644 index 0000000..fd1fe9d --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture9.png diff --git a/res/tex/Aquilarius-TEXTURES/texture90.png b/res/tex/Aquilarius-TEXTURES/texture90.png Binary files differnew file mode 100644 index 0000000..7701390 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture90.png diff --git a/res/tex/Aquilarius-TEXTURES/texture91.png b/res/tex/Aquilarius-TEXTURES/texture91.png Binary files differnew file mode 100644 index 0000000..1b5283c --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture91.png diff --git a/res/tex/Aquilarius-TEXTURES/texture92.png b/res/tex/Aquilarius-TEXTURES/texture92.png Binary files differnew file mode 100644 index 0000000..6386815 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture92.png diff --git a/res/tex/Aquilarius-TEXTURES/texture93.png b/res/tex/Aquilarius-TEXTURES/texture93.png Binary files differnew file mode 100644 index 0000000..83dcabd --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture93.png diff --git a/res/tex/Aquilarius-TEXTURES/texture94.png b/res/tex/Aquilarius-TEXTURES/texture94.png Binary files differnew file mode 100644 index 0000000..1a27d66 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture94.png diff --git a/res/tex/Aquilarius-TEXTURES/texture95.png b/res/tex/Aquilarius-TEXTURES/texture95.png Binary files differnew file mode 100644 index 0000000..66129df --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture95.png diff --git a/res/tex/Aquilarius-TEXTURES/texture96.png b/res/tex/Aquilarius-TEXTURES/texture96.png Binary files differnew file mode 100644 index 0000000..d994873 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture96.png diff --git a/res/tex/Aquilarius-TEXTURES/texture97.png b/res/tex/Aquilarius-TEXTURES/texture97.png Binary files differnew file mode 100644 index 0000000..08acc17 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture97.png diff --git a/res/tex/Aquilarius-TEXTURES/texture98.png b/res/tex/Aquilarius-TEXTURES/texture98.png Binary files differnew file mode 100644 index 0000000..4026be1 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture98.png diff --git a/res/tex/Aquilarius-TEXTURES/texture99.png b/res/tex/Aquilarius-TEXTURES/texture99.png Binary files differnew file mode 100644 index 0000000..ae7ff96 --- /dev/null +++ b/res/tex/Aquilarius-TEXTURES/texture99.png diff --git a/res/tex/Road_Empty.png b/res/tex/Road_Empty.png Binary files differnew file mode 100644 index 0000000..42c6e67 --- /dev/null +++ b/res/tex/Road_Empty.png diff --git a/res/tex/psx_tex/Grass 1/Grass 1.spp b/res/tex/psx_tex/Grass 1/Grass 1.spp Binary files differnew file mode 100644 index 0000000..4f4aab6 --- /dev/null +++ b/res/tex/psx_tex/Grass 1/Grass 1.spp diff --git a/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg b/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg Binary files differnew file mode 100644 index 0000000..da59715 --- /dev/null +++ b/res/tex/psx_tex/Grass 1/Grass1_PSX.jpg diff --git a/res/tex/psx_tex/Grass 1/Grass1_PSX.png b/res/tex/psx_tex/Grass 1/Grass1_PSX.png Binary files differnew file mode 100644 index 0000000..750247c --- /dev/null +++ b/res/tex/psx_tex/Grass 1/Grass1_PSX.png diff --git a/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg b/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg Binary files differnew file mode 100644 index 0000000..7950ce7 --- /dev/null +++ b/res/tex/psx_tex/Grass 1/Grass1_Texture.jpg diff --git a/res/tex/psx_tex/Grass 1/Grass1_Texture.png b/res/tex/psx_tex/Grass 1/Grass1_Texture.png Binary files differnew file mode 100644 index 0000000..f56b691 --- /dev/null +++ b/res/tex/psx_tex/Grass 1/Grass1_Texture.png diff --git a/res/tex/psx_tex/Grass 2/Grass 2.spp b/res/tex/psx_tex/Grass 2/Grass 2.spp Binary files differnew file mode 100644 index 0000000..654d4e2 --- /dev/null +++ b/res/tex/psx_tex/Grass 2/Grass 2.spp diff --git a/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg b/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg Binary files differnew file mode 100644 index 0000000..379cf02 --- /dev/null +++ b/res/tex/psx_tex/Grass 2/Grass2_PSX.jpg diff --git a/res/tex/psx_tex/Grass 2/Grass2_PSX.png b/res/tex/psx_tex/Grass 2/Grass2_PSX.png Binary files differnew file mode 100644 index 0000000..5c9ecc6 --- /dev/null +++ b/res/tex/psx_tex/Grass 2/Grass2_PSX.png diff --git a/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg b/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg Binary files differnew file mode 100644 index 0000000..5de2ee7 --- /dev/null +++ b/res/tex/psx_tex/Grass 2/Grass2_Texture.jpg diff --git a/res/tex/psx_tex/Grass 2/Grass2_Texture.png b/res/tex/psx_tex/Grass 2/Grass2_Texture.png Binary files differnew file mode 100644 index 0000000..9634f4e --- /dev/null +++ b/res/tex/psx_tex/Grass 2/Grass2_Texture.png diff --git a/res/tex/psx_tex/Grass 3/Grass 3.spp b/res/tex/psx_tex/Grass 3/Grass 3.spp Binary files differnew file mode 100644 index 0000000..fe005ad --- /dev/null +++ b/res/tex/psx_tex/Grass 3/Grass 3.spp diff --git a/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg b/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg Binary files differnew file mode 100644 index 0000000..83f4f49 --- /dev/null +++ b/res/tex/psx_tex/Grass 3/Grass3_PSX.jpg diff --git a/res/tex/psx_tex/Grass 3/Grass3_PSX.png b/res/tex/psx_tex/Grass 3/Grass3_PSX.png Binary files differnew file mode 100644 index 0000000..95f6319 --- /dev/null +++ b/res/tex/psx_tex/Grass 3/Grass3_PSX.png diff --git a/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg b/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg Binary files differnew file mode 100644 index 0000000..c0de3ba --- /dev/null +++ b/res/tex/psx_tex/Grass 3/Grass3_Texture.jpg diff --git a/res/tex/psx_tex/Grass 3/Grass3_Texture.png b/res/tex/psx_tex/Grass 3/Grass3_Texture.png Binary files differnew file mode 100644 index 0000000..f159256 --- /dev/null +++ b/res/tex/psx_tex/Grass 3/Grass3_Texture.png diff --git a/res/tex/psx_tex/Grass 4/Grass 4.spp b/res/tex/psx_tex/Grass 4/Grass 4.spp Binary files differnew file mode 100644 index 0000000..f51d0b2 --- /dev/null +++ b/res/tex/psx_tex/Grass 4/Grass 4.spp diff --git a/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg b/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg Binary files differnew file mode 100644 index 0000000..c13851e --- /dev/null +++ b/res/tex/psx_tex/Grass 4/Grass4_PSX.jpg diff --git a/res/tex/psx_tex/Grass 4/Grass4_PSX.png b/res/tex/psx_tex/Grass 4/Grass4_PSX.png Binary files differnew file mode 100644 index 0000000..6b31070 --- /dev/null +++ b/res/tex/psx_tex/Grass 4/Grass4_PSX.png diff --git a/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg b/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg Binary files differnew file mode 100644 index 0000000..cb318af --- /dev/null +++ b/res/tex/psx_tex/Grass 4/Grass4_Texture.jpg diff --git a/res/tex/psx_tex/Grass 4/Grass4_Texture.png b/res/tex/psx_tex/Grass 4/Grass4_Texture.png Binary files differnew file mode 100644 index 0000000..ba9cac1 --- /dev/null +++ b/res/tex/psx_tex/Grass 4/Grass4_Texture.png diff --git a/res/tex/psx_tex/Grass 5/Grass 5.spp b/res/tex/psx_tex/Grass 5/Grass 5.spp Binary files differnew file mode 100644 index 0000000..447b52b --- /dev/null +++ b/res/tex/psx_tex/Grass 5/Grass 5.spp diff --git a/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg b/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg Binary files differnew file mode 100644 index 0000000..13c70da --- /dev/null +++ b/res/tex/psx_tex/Grass 5/Grass5_PSX.jpg diff --git a/res/tex/psx_tex/Grass 5/Grass5_PSX.png b/res/tex/psx_tex/Grass 5/Grass5_PSX.png Binary files differnew file mode 100644 index 0000000..6214c42 --- /dev/null +++ b/res/tex/psx_tex/Grass 5/Grass5_PSX.png diff --git a/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg b/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg Binary files differnew file mode 100644 index 0000000..81021d6 --- /dev/null +++ b/res/tex/psx_tex/Grass 5/Grass5_Texture.jpg diff --git a/res/tex/psx_tex/Grass 5/Grass5_Texture.png b/res/tex/psx_tex/Grass 5/Grass5_Texture.png Binary files differnew file mode 100644 index 0000000..6302bbb --- /dev/null +++ b/res/tex/psx_tex/Grass 5/Grass5_Texture.png @@ -564,6 +564,10 @@ read_material_chunk(FILE *fp, SaveLoadContext *ctx, MaterialProperty prop) { (slots - model->mat_cnt) * sizeof(*materials)); + for (size_t j = model->mat_cnt; j < slots; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + model->materials = materials; model->mat_cnt = slots; } @@ -589,6 +593,24 @@ read_material_chunk(FILE *fp, SaveLoadContext *ctx, MaterialProperty prop) { } key[key_len] = '\0'; + + if (prop == MAT_PROP_SHADER) { + cstr replacement = NULL; + + if (strcmp(key, "model") == 0) { + replacement = "default"; + } else if (strcmp(key, "model_cutoff") == 0) { + replacement = "alpha_cutoff"; + } else if (strcmp(key, "vegetation") == 0) { + replacement = "alpha_cutoff_nocull"; + } + + if (replacement) { + free(key); + key = strdup(replacement); + } + } + *field = key; } @@ -657,6 +679,118 @@ write_material_chunk(FILE *fp, MaterialProperty prop) { } static bool +read_material_uv_chunk(FILE *fp, SaveLoadContext *ctx) { + u32 count; + if (!read_u32_le(fp, &count)) { + return false; + } + + for (u32 i = 0; i < count; ++i) { + u64 pid; + u32 mat_idx; + Vec2 scale, offset; + + if (!read_u64_le(fp, &pid) || + !read_u32_le(fp, &mat_idx) || + !read_f32_le(fp, &scale.x) || + !read_f32_le(fp, &scale.y) || + !read_f32_le(fp, &offset.x) || + !read_f32_le(fp, &offset.y)) { + return false; + } + + if (!pid || pid >= ctx->next_pid || + mat_idx == UINT32_MAX) { + return false; + } + + Entity *ent = entity_get(entity_id_from_pid(pid)); + if (!ent || !ent->mdl.has) { + return false; + } + + ModelCmp *model = &ent->mdl; + + if (mat_idx >= model->mat_cnt) { + size_t slots = (size_t)mat_idx + 1; + if (slots > SIZE_MAX / sizeof(MaterialOverride)) { + return false; + } + + MaterialOverride *materials; + materials = realloc(model->materials, + slots * sizeof(*materials)); + + if (!materials) { + return false; + } + + memset(materials + model->mat_cnt, 0, + (slots - model->mat_cnt) * + sizeof(*materials)); + + for (size_t j = model->mat_cnt; j < slots; ++j) { + materials[j].uv_scale = (Vec2){1, 1}; + } + + model->materials = materials; + model->mat_cnt = slots; + } + + MaterialOverride *material; + material = &model->materials[mat_idx]; + material->uv_scale = scale; + material->uv_offset = offset; + } + + return true; +} + +static bool +write_material_uv_chunk(FILE *fp) { + SaveChunk chunk = {0}; + u32 count = 0; + + for (u32 i = 0; i < entity_count(); ++i) { + const Entity *ent = &entity_data()[i]; + + if (!ent->pid || !ent->mdl.has) { + continue; + } + + count += ent->mdl.mat_cnt; + } + + if (!chunk_begin(fp, "MUVS", &chunk) || !write_u32_le(fp, count)) { + return false; + } + + for (u32 i = 0; i < entity_count(); ++i) { + const Entity *ent = &entity_data()[i]; + + if (!ent->pid || !ent->mdl.has) { + continue; + } + + for (u32 j = 0; j < ent->mdl.mat_cnt; ++j) { + const MaterialOverride *material; + material = &ent->mdl.materials[j]; + + if (!write_u64_le(fp, ent->pid) || + !write_u32_le(fp, j) || + !write_f32_le(fp, material->uv_scale.x) || + !write_f32_le(fp, material->uv_scale.y) || + !write_f32_le(fp, material->uv_offset.x) || + !write_f32_le(fp, material->uv_offset.y)) { + return false; + } + } + } + + return chunk_end(fp, &chunk); +} + +static bool read_physics_shape(FILE *fp, PhysicsShape *shape) { *shape = (PhysicsShape){0}; @@ -1192,9 +1326,15 @@ save_file_read(cstr path) { MaterialProperty prop; prop = memcmp(label, "MTEX", 4) == 0 ? - MAT_PROP_TEXTURE : MAT_PROP_SHADER; + MAT_PROP_TEXTURE : MAT_PROP_SHADER; success = read_material_chunk(fp, &ctx, prop); + } else if (memcmp(label, "MUVS", 4) == 0) { + if (!read_entt) { + success = false; + break; + } + success = read_material_uv_chunk(fp, &ctx); } else if (memcmp(label, "PHYS", 4) == 0) { if (!read_entt) { TraceLog(LOG_ERROR, "PHYS found before ENTT."); @@ -1257,6 +1397,7 @@ save_file_write(cstr path) { write_model_chunk(fp) && write_material_chunk(fp, MAT_PROP_TEXTURE) && write_material_chunk(fp, MAT_PROP_SHADER) && + write_material_uv_chunk(fp) && write_physics_chunk(fp); if (fclose(fp) != 0) { |
