diff --git a/Makefile b/Makefile index c8b7741..8cd170f 100644 --- a/Makefile +++ b/Makefile @@ -110,6 +110,15 @@ $(TEXTURE_VTF_SOURCES): portal_pak_dir convert_all_png: $(ALL_PNG_IMAGES) +portal_pak_dir/%_copy_0.png: portal_pak_dir/%.png + cp $< $@ + +portal_pak_dir/%_copy_1.png: portal_pak_dir/%.png + cp $< $@ + +portal_pak_dir/%_copy_2.png: portal_pak_dir/%.png + cp $< $@ + portal_pak_modified/%.png: portal_pak_dir/%.png assets/%.ims @mkdir -p $(@D) convert $< $(shell cat $(@:portal_pak_modified/%.png=assets/%.ims)) $@ diff --git a/assets/materials/models/props_animsigns/awe_total.ims b/assets/materials/models/props_animsigns/awe_total.ims new file mode 100644 index 0000000..fa09ec0 --- /dev/null +++ b/assets/materials/models/props_animsigns/awe_total.ims @@ -0,0 +1 @@ +-alpha extract \( +clone -crop 682x342+682+0 \) -gravity west -append -crop 682x1364+0+0 -resize 64x128 \ No newline at end of file diff --git a/assets/materials/models/props_animsigns/awe_total_copy_0.ims b/assets/materials/models/props_animsigns/awe_total_copy_0.ims new file mode 100644 index 0000000..d603a78 --- /dev/null +++ b/assets/materials/models/props_animsigns/awe_total_copy_0.ims @@ -0,0 +1 @@ +-alpha extract -crop 154x1024+1894+0 -resize 32x212 \ No newline at end of file diff --git a/assets/materials/models/props_animsigns/awe_total_copy_1.ims b/assets/materials/models/props_animsigns/awe_total_copy_1.ims new file mode 100644 index 0000000..20df0fd --- /dev/null +++ b/assets/materials/models/props_animsigns/awe_total_copy_1.ims @@ -0,0 +1,20 @@ +-alpha extract + \( +clone -crop 436x146+1061+438 -rotate 90 \) -insert 0 + \( +clone -crop 146x436+1463+147 \) -insert 1 + \( +clone -crop 146x436+1609+147 \) -insert 2 + \( +clone -crop 146x436+1755+147 \) -insert 3 + \( +clone -crop 146x436+1025+583 \) -insert 4 + \( +clone -crop 146x436+1171+583 \) -insert 5 + \( +clone -crop 146x436+1317+583 \) -insert 6 + \( +clone -crop 146x436+1463+583 \) -insert 7 + \( +clone -crop 146x436+1609+583 \) -insert 8 + \( +clone -crop 146x436+1755+583 \) -insert 9 + +append + +repage + -crop 1460x436+0+0 + -fill black + -background black + -draw 'rectangle 141,310 189,424' + -draw 'rectangle 1447,337 1460,404' + -resize 140x + -extent 144x \ No newline at end of file diff --git a/assets/materials/models/props_animsigns/awe_total_copy_2.ims b/assets/materials/models/props_animsigns/awe_total_copy_2.ims new file mode 100644 index 0000000..96a84f4 --- /dev/null +++ b/assets/materials/models/props_animsigns/awe_total_copy_2.ims @@ -0,0 +1 @@ +-alpha extract -crop 342x682+682+342 -resize 32x64 \ No newline at end of file diff --git a/assets/materials/models/props_animsigns/newsignage_back02.ims b/assets/materials/models/props_animsigns/newsignage_back02.ims new file mode 100644 index 0000000..4a85d83 --- /dev/null +++ b/assets/materials/models/props_animsigns/newsignage_back02.ims @@ -0,0 +1 @@ +-alpha remove -crop 50x50+21+20 -resize 16x16 \ No newline at end of file diff --git a/assets/materials/static.skm.yaml b/assets/materials/static.skm.yaml index 90fdfc9..47dbd4b 100644 --- a/assets/materials/static.skm.yaml +++ b/assets/materials/static.skm.yaml @@ -186,3 +186,97 @@ materials: set: [G_LIGHTING, G_SHADE] gDPSetCombineMode: color: ["SHADE", "0", "TEXEL0", "0"] + + newsignage_back02: + gDPSetTile: + filename: ../../portal_pak_modified/materials/models/props_animsigns/newsignage_back02.png + siz: G_IM_SIZ_4b + twoTone: true + s: + wrap: false + t: + wrap: false + + gSPGeometryMode: + clear: [G_LIGHTING] + gDPSetCycleType: G_CYC_1CYCLE + + awe_total: + gDPSetTile: + filename: ../../portal_pak_modified/materials/models/props_animsigns/awe_total.png + siz: G_IM_SIZ_4b + fmt: G_IM_FMT_I + + gDPSetRenderMode: G_RM_ZB_OPA_DECAL + gSPGeometryMode: + clear: [G_LIGHTING] + set: [G_SHADE] + gDPSetCombineMode: + color: [SHADE, PRIMITIVE, TEXEL0, PRIMITIVE] + gDPSetPrimColor: + r: 242 + g: 245 + b: 247 + gDPSetCycleType: G_CYC_1CYCLE + + awe_total_copy_0: + gDPSetTile: + filename: ../../portal_pak_modified/materials/models/props_animsigns/awe_total_copy_0.png + siz: G_IM_SIZ_4b + fmt: G_IM_FMT_I + + gDPSetRenderMode: G_RM_ZB_OPA_DECAL + gSPGeometryMode: + clear: [G_LIGHTING] + set: [G_SHADE] + gDPSetCombineMode: + color: [SHADE, PRIMITIVE, TEXEL0, PRIMITIVE] + gDPSetPrimColor: + r: 242 + g: 245 + b: 247 + gDPSetCycleType: G_CYC_1CYCLE + + awe_total_copy_1: + gDPSetTile: + filename: ../../portal_pak_modified/materials/models/props_animsigns/awe_total_copy_1.png + siz: G_IM_SIZ_4b + fmt: G_IM_FMT_I + + gDPSetRenderMode: G_RM_ZB_OPA_DECAL + gSPGeometryMode: + clear: [G_LIGHTING] + set: [G_SHADE] + gDPSetCombineMode: + color: [SHADE, PRIMITIVE, TEXEL0, PRIMITIVE] + gDPSetPrimColor: + r: 242 + g: 245 + b: 247 + gDPSetCycleType: G_CYC_1CYCLE + + awe_total_copy_2: + gDPSetTile: + filename: ../../portal_pak_modified/materials/models/props_animsigns/awe_total_copy_2.png + siz: G_IM_SIZ_4b + fmt: G_IM_FMT_I + + gDPSetRenderMode: G_RM_ZB_OPA_DECAL + gSPGeometryMode: + clear: [G_LIGHTING] + set: [G_SHADE] + gDPSetCombineMode: + color: [SHADE, PRIMITIVE, TEXEL0, PRIMITIVE] + gDPSetPrimColor: + r: 242 + g: 245 + b: 247 + gDPSetCycleType: G_CYC_1CYCLE + + vertex_color: + gDPSetCombineMode: + color: ["0", "0", "0", SHADE] + gDPSetCycleType: G_CYC_1CYCLE + gSPGeometryMode: + clear: [G_LIGHTING] + set: [G_SHADE] \ No newline at end of file diff --git a/assets/models/props/signage.blend b/assets/models/props/signage.blend new file mode 100644 index 0000000..814bb87 Binary files /dev/null and b/assets/models/props/signage.blend differ diff --git a/assets/test_chambers/test_chamber_00/test_chamber_00_0.blend b/assets/test_chambers/test_chamber_00/test_chamber_00_0.blend index c0a5efb..54d4659 100644 Binary files a/assets/test_chambers/test_chamber_00/test_chamber_00_0.blend and b/assets/test_chambers/test_chamber_00/test_chamber_00_0.blend differ diff --git a/skelatool64/src/definition_generator/MaterialGenerator.cpp b/skelatool64/src/definition_generator/MaterialGenerator.cpp index d669e10..73a0569 100644 --- a/skelatool64/src/definition_generator/MaterialGenerator.cpp +++ b/skelatool64/src/definition_generator/MaterialGenerator.cpp @@ -16,10 +16,14 @@ int sortOrderForMaterial(const Material& material) { return 0; } - if (material.mState.cycle1RenderMode.data & FORCE_BL) { + if (material.mState.cycle1RenderMode.GetZMode() == ZMODE_DEC) { return 1; } + if (material.mState.cycle1RenderMode.data & FORCE_BL) { + return 2; + } + return 0; } diff --git a/skelatool64/src/definition_generator/MeshDefinitionGenerator.cpp b/skelatool64/src/definition_generator/MeshDefinitionGenerator.cpp index 45abbad..59d92ce 100644 --- a/skelatool64/src/definition_generator/MeshDefinitionGenerator.cpp +++ b/skelatool64/src/definition_generator/MeshDefinitionGenerator.cpp @@ -44,6 +44,8 @@ void MeshDefinitionGenerator::AppendRenderChunks(const aiScene* scene, aiNode* n if (material != settings.mMaterials.end()) { materialPtr = material->second.get(); + } else { + std::cout << "Could not find material with name " << materialName << std::endl; } double sTile; diff --git a/skelatool64/src/definition_generator/StaticGenerator.cpp b/skelatool64/src/definition_generator/StaticGenerator.cpp index fbe4c34..bbe15b9 100644 --- a/skelatool64/src/definition_generator/StaticGenerator.cpp +++ b/skelatool64/src/definition_generator/StaticGenerator.cpp @@ -25,21 +25,23 @@ void StaticGenerator::GenerateDefinitions(const aiScene* scene, CFileDefinition& for (auto node = mIncludedNodes.begin(); node != mIncludedNodes.end(); ++node) { std::vector renderChunks; MeshDefinitionGenerator::AppendRenderChunks(scene, *node, fileDefinition, mSettings, renderChunks); - - if (renderChunks.size()) { + + for (auto& chunk : renderChunks) { StaticContentElement element; - if (renderChunks[0].mMaterial) { - settings.mDefaultMaterialState = renderChunks[0].mMaterial->mState; - element.materialName = MaterialGenerator::MaterialIndexMacroName(renderChunks[0].mMaterial->mName); + if (chunk.mMaterial) { + settings.mDefaultMaterialState = chunk.mMaterial->mState; + element.materialName = MaterialGenerator::MaterialIndexMacroName(chunk.mMaterial->mName); } else { element.materialName = "0"; } - element.meshName = generateMesh(scene, fileDefinition, renderChunks, settings, "_geo"); + std::vector singleChunk; + singleChunk.push_back(chunk); + element.meshName = generateMesh(scene, fileDefinition, singleChunk, settings, "_geo"); elements.push_back(element); - mOutput.staticMeshes.push_back(renderChunks[0].mMesh); + mOutput.staticMeshes.push_back(chunk.mMesh); mOutput.staticRooms.push_back(mRoomMapping.RoomForNode(*node)); } } diff --git a/src/defs.h b/src/defs.h index 30341d0..3f4b9cc 100644 --- a/src/defs.h +++ b/src/defs.h @@ -8,7 +8,7 @@ #define MAX_FRAME_BUFFER_MESGS 8 -#define HIGH_RES 1 +#define HIGH_RES 0 #define INIT_PRIORITY 10 #define GAME_PRIORITY 10