From d849231caf4c7c847008ed843eb5b6393b855faf Mon Sep 17 00:00:00 2001 From: Ben Doherty Date: Fri, 13 Sep 2019 09:29:28 -0700 Subject: [PATCH] Remove old post-process shader pipeline (#1631) --- filament/CMakeLists.txt | 24 +- filament/src/Engine.cpp | 46 ---- filament/src/Material.cpp | 2 +- filament/src/MaterialParser.cpp | 22 -- filament/src/MaterialParser.h | 3 - filament/src/details/Engine.h | 15 -- .../include/filament/MaterialChunkType.h | 2 - .../include/private/filament/EngineEnums.h | 8 - libs/filagui/CMakeLists.txt | 2 +- libs/filamat/CMakeLists.txt | 4 +- .../filamat/PostprocessMaterialBuilder.h | 60 ----- .../src/PostprocessMaterialBuilder.cpp | 234 ------------------ libs/filamat/src/shaders/CodeGenerator.cpp | 22 -- libs/filamat/src/shaders/CodeGenerator.h | 2 - libs/filamat/src/shaders/ShaderGenerator.cpp | 75 ------ libs/filamat/src/shaders/ShaderGenerator.h | 11 - libs/gltfio/CMakeLists.txt | 2 +- libs/matdbg/include/matdbg/ShaderExtractor.h | 2 - libs/matdbg/src/DebugServer.cpp | 9 +- libs/matdbg/src/JsonWriter.cpp | 1 - libs/matdbg/src/ShaderExtractor.cpp | 13 - libs/matdbg/src/TextWriter.cpp | 2 - samples/CMakeLists.txt | 2 +- shaders/CMakeLists.txt | 16 +- shaders/src/post_process_old.fs | 80 ------ shaders/src/post_process_old.vs | 22 -- tools/matc/CMakeLists.txt | 2 - tools/matc/src/main.cpp | 14 +- tools/matc/src/matc/CommandlineConfig.cpp | 17 -- tools/matc/src/matc/Config.h | 11 - .../src/matc/PostprocessMaterialCompiler.cpp | 51 ---- .../src/matc/PostprocessMaterialCompiler.h | 30 --- tools/matinfo/src/main.cpp | 9 +- web/samples/CMakeLists.txt | 2 +- 34 files changed, 36 insertions(+), 781 deletions(-) delete mode 100644 libs/filamat/include/filamat/PostprocessMaterialBuilder.h delete mode 100644 libs/filamat/src/PostprocessMaterialBuilder.cpp delete mode 100644 shaders/src/post_process_old.fs delete mode 100644 shaders/src/post_process_old.vs delete mode 100644 tools/matc/src/matc/PostprocessMaterialCompiler.cpp delete mode 100644 tools/matc/src/matc/PostprocessMaterialCompiler.h diff --git a/filament/CMakeLists.txt b/filament/CMakeLists.txt index 7aea762f4b..de16a1b1b9 100644 --- a/filament/CMakeLists.txt +++ b/filament/CMakeLists.txt @@ -135,9 +135,6 @@ set(PRIVATE_HDRS src/UniformBuffer.h src/upcast.h) -# tonemapping.mat and fxaa.mat #include files inside the shaders/src directory. Since the -# included files are part of libshaders, which matc depends on, they don't need to be -# explicitly listed as dependencies. set(MATERIAL_SRCS src/materials/defaultMaterial.mat src/materials/blur.mat @@ -193,21 +190,28 @@ foreach (mat_src ${MATERIAL_SRCS}) add_custom_command( OUTPUT ${output_path} - COMMAND matc ${MATC_BASE_FLAGS} -m material -o ${output_path} ${fullname} + COMMAND matc ${MATC_BASE_FLAGS} -o ${output_path} ${fullname} DEPENDS ${fullname} matc COMMENT "Compiling material ${mat_src} to ${output_path}" ) list(APPEND MATERIAL_BINS ${output_path}) endforeach() -set(output_path "${MATERIAL_DIR}/postprocess.filamat") +# tonemapping.mat and fxaa.mat have additional dependencies on included files + add_custom_command( - OUTPUT ${output_path} - COMMAND matc ${MATC_BASE_FLAGS} -m postprocess -o ${output_path} - DEPENDS matc - COMMENT "Compiling post-process material ${output_path}" + OUTPUT "${MATERIAL_DIR}/tonemapping.filamat" + DEPENDS ../shaders/src/tone_mapping.fs + DEPENDS ../shaders/src/conversion_functions.fs + DEPENDS ../shaders/src/dithering.fs + APPEND +) + +add_custom_command( + OUTPUT "${MATERIAL_DIR}/fxaa.filamat" + DEPENDS ../shaders/src/fxaa.fs + APPEND ) -list(APPEND MATERIAL_BINS ${output_path}) add_custom_command( OUTPUT ${RESGEN_OUTPUTS} diff --git a/filament/src/Engine.cpp b/filament/src/Engine.cpp index d3cf48caf3..643d2a9a7d 100644 --- a/filament/src/Engine.cpp +++ b/filament/src/Engine.cpp @@ -162,19 +162,6 @@ void FEngine::init() { mResourceAllocator = new fg::ResourceAllocator(driverApi); - // Parse all post process shaders now, but create them lazily - mPostProcessParser = std::make_unique(mBackend, - MATERIALS_POSTPROCESS_DATA, MATERIALS_POSTPROCESS_SIZE); - - UTILS_UNUSED_IN_RELEASE bool ppMaterialOk = - mPostProcessParser->parse() && mPostProcessParser->isPostProcessMaterial(); - assert(ppMaterialOk); - - uint32_t version; - mPostProcessParser->getPostProcessVersion(&version); - ASSERT_PRECONDITION(version == MATERIAL_VERSION, "Post-process material version mismatch. " - "Expected %d but received %d.", MATERIAL_VERSION, version); - mFullScreenTriangleVb = upcast(VertexBuffer::Builder() .vertexCount(3) .bufferCount(1) @@ -295,10 +282,6 @@ void FEngine::shutdown() { } cleanupResourceList(mFences); - for (const auto& mPostProcessProgram : mPostProcessPrograms) { - driver.destroyProgram(mPostProcessProgram); - } - // There might be commands added by the terminate() calls flushCommandBuffer(mCommandBufferQueue); if (!UTILS_HAS_THREADING) { @@ -462,35 +445,6 @@ const FMaterial* FEngine::getSkyboxMaterial() const noexcept { return material; } - -backend::Handle FEngine::createPostProcessProgram(MaterialParser& parser, - ShaderModel shaderModel, PostProcessStage stage) const noexcept { - ShaderBuilder& vShaderBuilder = getVertexShaderBuilder(); - ShaderBuilder& fShaderBuilder = getFragmentShaderBuilder(); - parser.getShader(vShaderBuilder, shaderModel, (uint8_t)stage, ShaderType::VERTEX); - parser.getShader(fShaderBuilder, shaderModel, (uint8_t)stage, ShaderType::FRAGMENT); - - Program pb; - pb .diagnostics(CString("Post Process")) - .withVertexShader(vShaderBuilder.data(), vShaderBuilder.size()) - .withFragmentShader(fShaderBuilder.data(), fShaderBuilder.size()) - .setUniformBlock(BindingPoints::PER_VIEW, PerViewUib::getUib().getName()); - - auto program = const_cast(mCommandStream).createProgram(std::move(pb)); - assert(program); - return program; -} - -backend::Handle FEngine::getPostProcessProgramSlow(PostProcessStage stage) const noexcept { - backend::Handle* const postProcessPrograms = mPostProcessPrograms; - if (!postProcessPrograms[(uint8_t)stage]) { - ShaderModel shaderModel = getDriver().getShaderModel(); - postProcessPrograms[(uint8_t)stage] = createPostProcessProgram(*mPostProcessParser, shaderModel, stage); - } - return postProcessPrograms[(uint8_t)stage]; -} - - // ----------------------------------------------------------------------------------------------- // Resource management // ----------------------------------------------------------------------------------------------- diff --git a/filament/src/Material.cpp b/filament/src/Material.cpp index 62c744d4b4..9cdab099f1 100644 --- a/filament/src/Material.cpp +++ b/filament/src/Material.cpp @@ -475,7 +475,7 @@ void FMaterial::onQueryCallback(void* userdata, uint16_t* pvariants) { MaterialParser* FMaterial::createParser(backend::Backend backend, const void* data, size_t size) { MaterialParser* materialParser = new MaterialParser(backend, data, size); - bool materialOK = materialParser->parse() && materialParser->isShadingMaterial(); + bool materialOK = materialParser->parse(); if (!ASSERT_POSTCONDITION_NON_FATAL(materialOK, "could not parse the material package")) { return nullptr; } diff --git a/filament/src/MaterialParser.cpp b/filament/src/MaterialParser.cpp index 7a84bf4d09..c0b801b4da 100644 --- a/filament/src/MaterialParser.cpp +++ b/filament/src/MaterialParser.cpp @@ -108,33 +108,11 @@ bool MaterialParser::parse() noexcept { return true; } -bool MaterialParser::isShadingMaterial() const noexcept { - ChunkContainer const& cc = getChunkContainer(); - return cc.hasChunk(MaterialName) && - cc.hasChunk(MaterialVersion) && - cc.hasChunk(MaterialUib) && - cc.hasChunk(MaterialSib) && - (cc.hasChunk(MaterialGlsl) || cc.hasChunk(MaterialSpirv) || cc.hasChunk(MaterialMetal)) && - cc.hasChunk(MaterialShaderModels); -} - -bool MaterialParser::isPostProcessMaterial() const noexcept { - ChunkContainer const& cc = getChunkContainer(); - return cc.hasChunk(PostProcessVersion) && - ((cc.hasChunk(MaterialSpirv) && cc.hasChunk(DictionarySpirv)) || - (cc.hasChunk(MaterialGlsl) && cc.hasChunk(DictionaryGlsl)) || - (cc.hasChunk(MaterialMetal) && cc.hasChunk(DictionaryMetal))); -} - // Accessors bool MaterialParser::getMaterialVersion(uint32_t* value) const noexcept { return mImpl.getFromSimpleChunk(ChunkType::MaterialVersion, value); } -bool MaterialParser::getPostProcessVersion(uint32_t* value) const noexcept { - return mImpl.getFromSimpleChunk(ChunkType::PostProcessVersion, value); -} - bool MaterialParser::getName(utils::CString* cstring) const noexcept { ChunkType type = ChunkType::MaterialName; const uint8_t* start = mImpl.mChunkContainer.getChunkStart(type); diff --git a/filament/src/MaterialParser.h b/filament/src/MaterialParser.h index 4e6e16fff5..7fc77e686d 100644 --- a/filament/src/MaterialParser.h +++ b/filament/src/MaterialParser.h @@ -49,12 +49,9 @@ public: MaterialParser& operator=(MaterialParser const& rhs) noexcept = delete; bool parse() noexcept; - bool isShadingMaterial() const noexcept; - bool isPostProcessMaterial() const noexcept; // Accessors bool getMaterialVersion(uint32_t* value) const noexcept; - bool getPostProcessVersion(uint32_t* value) const noexcept; bool getName(utils::CString*) const noexcept; bool getUIB(UniformInterfaceBlock* uib) const noexcept; bool getSIB(SamplerInterfaceBlock* sib) const noexcept; diff --git a/filament/src/details/Engine.h b/filament/src/details/Engine.h index 9186a85b4d..e2e160ff26 100644 --- a/filament/src/details/Engine.h +++ b/filament/src/details/Engine.h @@ -149,15 +149,6 @@ public: const FMaterial* getSkyboxMaterial() const noexcept; const FIndirectLight* getDefaultIndirectLight() const noexcept { return mDefaultIbl; } - backend::Handle getPostProcessProgramSlow(PostProcessStage stage) const noexcept; - backend::Handle getPostProcessProgram(PostProcessStage stage) const noexcept { - backend::Handle program = mPostProcessPrograms[uint8_t(stage)]; - if (UTILS_UNLIKELY(!program)) { - return getPostProcessProgramSlow(stage); - } - return program; - } - backend::Handle getFullScreenRenderPrimitive() const noexcept { return mFullScreenTriangleRph; } @@ -300,9 +291,6 @@ private: template void cleanupResourceList(ResourceList& list); - backend::Handle createPostProcessProgram(MaterialParser& parser, - backend::ShaderModel model, PostProcessStage stage) const noexcept; - backend::Driver* mDriver = nullptr; Backend mBackend; @@ -361,9 +349,6 @@ private: mutable FTexture* mDefaultIblTexture = nullptr; mutable FIndirectLight* mDefaultIbl = nullptr; - mutable backend::Handle mPostProcessPrograms[POST_PROCESS_STAGES_COUNT]; - mutable std::unique_ptr mPostProcessParser; - mutable utils::CountDownLatch mDriverBarrier; mutable filaflat::ShaderBuilder mVertexShaderBuilder; diff --git a/libs/filabridge/include/filament/MaterialChunkType.h b/libs/filabridge/include/filament/MaterialChunkType.h index 53657c5e11..6d312300a7 100644 --- a/libs/filabridge/include/filament/MaterialChunkType.h +++ b/libs/filabridge/include/filament/MaterialChunkType.h @@ -74,8 +74,6 @@ enum UTILS_PUBLIC ChunkType : uint64_t { MaterialVertexDomain =charTo64bitNum("MAT_VEDO"), MaterialInterpolation= charTo64bitNum("MAT_INTR"), - PostProcessVersion = charTo64bitNum("POSP_VER"), - DictionaryGlsl = charTo64bitNum("DIC_GLSL"), DictionarySpirv = charTo64bitNum("DIC_SPIR"), DictionaryMetal = charTo64bitNum("DIC_METL") diff --git a/libs/filabridge/include/private/filament/EngineEnums.h b/libs/filabridge/include/private/filament/EngineEnums.h index 936bb8f59a..113ec22931 100644 --- a/libs/filabridge/include/private/filament/EngineEnums.h +++ b/libs/filabridge/include/private/filament/EngineEnums.h @@ -22,14 +22,6 @@ namespace filament { -static constexpr size_t POST_PROCESS_STAGES_COUNT = 4; -enum class PostProcessStage : uint8_t { - TONE_MAPPING_OPAQUE, // Tone mapping post-process - TONE_MAPPING_TRANSLUCENT, // Tone mapping post-process - ANTI_ALIASING_OPAQUE, // Anti-aliasing stage - ANTI_ALIASING_TRANSLUCENT, // Anti-aliasing stage -}; - static constexpr size_t POST_PROCESS_VARIANT_COUNT = 2; enum class PostProcessVariant : uint8_t { OPAQUE, diff --git a/libs/filagui/CMakeLists.txt b/libs/filagui/CMakeLists.txt index f1f24c9eb9..7b41eaff5b 100644 --- a/libs/filagui/CMakeLists.txt +++ b/libs/filagui/CMakeLists.txt @@ -41,7 +41,7 @@ foreach (mat_src ${MATERIAL_SRCS}) set(output_path "${MATERIAL_DIR}/${localname}.filamat") add_custom_command( OUTPUT ${output_path} - COMMAND matc ${MATC_BASE_FLAGS} -m material -o ${output_path} ${fullname} + COMMAND matc ${MATC_BASE_FLAGS} -o ${output_path} ${fullname} DEPENDS ${mat_src} matc COMMENT "Compiling material ${mat_src} to ${output_path}" ) diff --git a/libs/filamat/CMakeLists.txt b/libs/filamat/CMakeLists.txt index a6a349850d..578d416a5f 100644 --- a/libs/filamat/CMakeLists.txt +++ b/libs/filamat/CMakeLists.txt @@ -15,8 +15,7 @@ set(PUBLIC_HDR_DIR include) set(HDRS include/filamat/Enums.h include/filamat/MaterialBuilder.h - include/filamat/Package.h - include/filamat/PostprocessMaterialBuilder.h) + include/filamat/Package.h) set(COMMON_PRIVATE_HDRS src/eiff/Chunk.h @@ -43,7 +42,6 @@ set(COMMON_SRCS src/Enums.cpp src/MaterialBuilder.cpp src/MaterialVariants.cpp - src/PostprocessMaterialBuilder.cpp src/Includes.cpp) # Sources and headers for filamat diff --git a/libs/filamat/include/filamat/PostprocessMaterialBuilder.h b/libs/filamat/include/filamat/PostprocessMaterialBuilder.h deleted file mode 100644 index d5b43c00b5..0000000000 --- a/libs/filamat/include/filamat/PostprocessMaterialBuilder.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef TNT_FILAMAT_POSTPROCESS_PACKAGE_BUILDER_H -#define TNT_FILAMAT_POSTPROCESS_PACKAGE_BUILDER_H - -#include -#include - -#include - -#include - -namespace filamat { - -class UTILS_PUBLIC PostprocessMaterialBuilder : public MaterialBuilderBase { -public: - - Package build(); - - // specifies desktop vs mobile; works in concert with TargetApi to determine the shader models - // (used to generate code) and final output representations (spirv and/or text). - PostprocessMaterialBuilder& platform(Platform platform) noexcept { - mPlatform = platform; - return *this; - } - - // specifies vulkan vs opengl; works in concert with Platform to determine the shader models - // (used to generate code) and final output representations (spirv and/or text). - PostprocessMaterialBuilder& targetApi(TargetApi targetApi) noexcept { - mTargetApi = targetApi; - return *this; - } - - PostprocessMaterialBuilder& optimization(Optimization optimization) noexcept { - mOptimization = optimization; - return *this; - } - - PostprocessMaterialBuilder& printShaders(bool printShaders) noexcept { - mPrintShaders = printShaders; - return *this; - } -}; - -} // namespace -#endif // TNT_FILAMAT_POSTPROCESS_PACKAGE_BUILDER_H diff --git a/libs/filamat/src/PostprocessMaterialBuilder.cpp b/libs/filamat/src/PostprocessMaterialBuilder.cpp deleted file mode 100644 index 9ca4a75476..0000000000 --- a/libs/filamat/src/PostprocessMaterialBuilder.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "filamat/PostprocessMaterialBuilder.h" - -#include - -#include - -#include "shaders/ShaderGenerator.h" - -#include "eiff/ChunkContainer.h" -#include "eiff/DictionarySpirvChunk.h" -#include "eiff/DictionaryTextChunk.h" -#include "eiff/MaterialSpirvChunk.h" -#include "eiff/MaterialTextChunk.h" -#include "eiff/SimpleFieldChunk.h" - -#ifndef FILAMAT_LITE -#include "GLSLPostProcessor.h" -#include "sca/GLSLTools.h" -#endif - -#include - -using namespace filament::backend; - -namespace filamat { - -inline void assertSingleTargetApi(MaterialBuilderBase::TargetApi api) { - // Assert that a single bit is set. - uint8_t bits = (uint8_t) api; - assert(bits && !(bits & bits - 1)); -} - -Package PostprocessMaterialBuilder::build() { - prepare(); - - // Create a postprocessor to optimize / compile to Spir-V if necessary. -#ifndef FILAMAT_LITE - uint32_t flags = 0; - flags |= mPrintShaders ? GLSLPostProcessor::PRINT_SHADERS : 0; - flags |= mGenerateDebugInfo ? GLSLPostProcessor::GENERATE_DEBUG_INFO : 0; - GLSLPostProcessor postProcessor(mOptimization, flags); -#endif - - // Create chunk tree. - ChunkContainer container; - - container.addSimpleChild(ChunkType::PostProcessVersion, filament::MATERIAL_VERSION); - - std::vector glslEntries; - std::vector spirvEntries; - std::vector metalEntries; - LineDictionary glslDictionary; -#ifndef FILAMAT_LITE - BlobDictionary spirvDictionary; - LineDictionary metalDictionary; -#endif - std::vector spirv; - std::string msl; - - bool errorOccured = false; - - for (const auto& params : mCodeGenPermutations) { - const ShaderModel shaderModel = ShaderModel(params.shaderModel); - const TargetApi targetApi = params.targetApi; - const TargetLanguage targetLanguage = params.targetLanguage; - - assertSingleTargetApi(targetApi); - - // Populate a SamplerBindingMap for the sole purpose of finding where the post-process bindings - // live within the global namespace of samplers. - filament::SamplerBindingMap samplerBindingMap; - samplerBindingMap.populate(); - const uint8_t firstSampler = - samplerBindingMap.getBlockOffset(filament::BindingPoints::POST_PROCESS_DEPRECATED); - - // Metal Shading Language is cross-compiled from Vulkan. - const bool targetApiNeedsSpirv = - (targetApi == TargetApi::VULKAN || targetApi == TargetApi::METAL); - const bool targetApiNeedsMsl = targetApi == TargetApi::METAL; - std::vector* pSpirv = targetApiNeedsSpirv ? &spirv : nullptr; - std::string* pMsl = targetApiNeedsMsl ? &msl : nullptr; - - TextEntry glslEntry; - SpirvEntry spirvEntry; - TextEntry metalEntry; - - glslEntry.shaderModel = static_cast(params.shaderModel); - spirvEntry.shaderModel = static_cast(params.shaderModel); - metalEntry.shaderModel = static_cast(params.shaderModel); - - for (size_t k = 0; k < filament::POST_PROCESS_STAGES_COUNT; k++) { - glslEntry.variant = static_cast(k); - spirvEntry.variant = static_cast(k); - metalEntry.variant = k; - - // Vertex Shader - std::string vs = ShaderPostProcessGenerator::createPostProcessVertexProgramOld( - shaderModel, targetApi, targetLanguage, - filament::PostProcessStage(k), firstSampler); - -#ifndef FILAMAT_LITE - bool ok = postProcessor.process(vs, filament::backend::ShaderType::VERTEX, shaderModel, - &vs, pSpirv, pMsl); -#else - bool ok = true; -#endif - if (!ok) { - // An error occured while postProcessing, aborting. - errorOccured = true; - break; - } - - if (targetApi == TargetApi::OPENGL) { - glslEntry.stage = filament::backend::ShaderType::VERTEX; - glslEntry.shader = vs; - glslDictionary.addText(glslEntry.shader); - glslEntries.push_back(glslEntry); - } - -#ifndef FILAMAT_LITE - if (targetApi == TargetApi::VULKAN) { - spirvEntry.stage = filament::backend::ShaderType::VERTEX; - spirvEntry.dictionaryIndex = spirvDictionary.addBlob(spirv); - spirv.clear(); - spirvEntries.push_back(spirvEntry); - } - if (targetApi == TargetApi::METAL) { - assert(spirv.size() > 0); - assert(msl.length() > 0); - metalEntry.stage = filament::backend::ShaderType::VERTEX; - metalEntry.shader = msl; - spirv.clear(); - msl.clear(); - metalDictionary.addText(metalEntry.shader); - metalEntries.push_back(metalEntry); - } -#endif - - // Fragment Shader - std::string fs = ShaderPostProcessGenerator::createPostProcessFragmentProgramOld( - shaderModel, targetApi, targetLanguage, - filament::PostProcessStage(k), firstSampler); - -#ifndef FILAMAT_LITE - ok = postProcessor.process(fs, filament::backend::ShaderType::FRAGMENT, shaderModel, &fs, - pSpirv, pMsl); -#else - ok = true; -#endif - if (!ok) { - // An error occured while postProcessing, aborting. - errorOccured = true; - break; - } - - if (targetApi == TargetApi::OPENGL) { - glslEntry.stage = filament::backend::ShaderType::FRAGMENT; - glslEntry.shader = fs; - glslDictionary.addText(glslEntry.shader); - glslEntries.push_back(glslEntry); - } - -#ifndef FILAMAT_LITE - if (targetApi == TargetApi::VULKAN) { - spirvEntry.stage = filament::backend::ShaderType::FRAGMENT; - spirvEntry.dictionaryIndex = spirvDictionary.addBlob(spirv); - spirv.clear(); - spirvEntries.push_back(spirvEntry); - } - if (targetApi == TargetApi::METAL) { - assert(spirv.size() > 0); - assert(msl.length() > 0); - metalEntry.stage = filament::backend::ShaderType::FRAGMENT; - metalEntry.shader = msl; - spirv.clear(); - msl.clear(); - metalDictionary.addText(metalEntry.shader); - metalEntries.push_back(metalEntry); - } -#endif - } - } - - // Emit GLSL chunks - if (!glslEntries.empty()) { - const auto& dictionaryChunk = container.addChild( - std::move(glslDictionary), ChunkType::DictionaryGlsl); - container.addChild(std::move(glslEntries), - dictionaryChunk.getDictionary(), ChunkType::MaterialGlsl); - } - -#ifndef FILAMAT_LITE - // Emit SPIRV chunks - if (!spirvEntries.empty()) { - const bool stripInfo = !mGenerateDebugInfo; - container.addChild(std::move(spirvDictionary), stripInfo); - container.addChild(std::move(spirvEntries)); - } - - // Emit Metal chunks - if (!metalEntries.empty()) { - const auto& dictionaryChunk = container.addChild( - std::move(metalDictionary), ChunkType::DictionaryMetal); - container.addChild(std::move(metalEntries), - dictionaryChunk.getDictionary(), ChunkType::MaterialMetal); - } -#endif - - // Flatten all chunks in the container into a Package. - Package package(container.getSize()); - Flattener f(package); - container.flatten(f); - package.setValid(!errorOccured); - - return package; -} - -} // namespace filamat diff --git a/libs/filamat/src/shaders/CodeGenerator.cpp b/libs/filamat/src/shaders/CodeGenerator.cpp index 3a507a933e..cd9b8e218d 100644 --- a/libs/filamat/src/shaders/CodeGenerator.cpp +++ b/libs/filamat/src/shaders/CodeGenerator.cpp @@ -128,28 +128,6 @@ io::sstream& CodeGenerator::generateShaderMain(io::sstream& out, ShaderType type return out; } -io::sstream& CodeGenerator::generatePostProcessMainOld(io::sstream& out, - ShaderType type, filament::PostProcessStage variant) const { - if (type == ShaderType::VERTEX) { - out << SHADERS_POST_PROCESS_OLD_VS_DATA; - } else if (type == ShaderType::FRAGMENT) { - switch (variant) { - case PostProcessStage::TONE_MAPPING_OPAQUE: - case PostProcessStage::TONE_MAPPING_TRANSLUCENT: - out << SHADERS_TONE_MAPPING_FS_DATA; - out << SHADERS_CONVERSION_FUNCTIONS_FS_DATA; - out << SHADERS_DITHERING_FS_DATA; - break; - case PostProcessStage::ANTI_ALIASING_OPAQUE: - case PostProcessStage::ANTI_ALIASING_TRANSLUCENT: - out << SHADERS_FXAA_FS_DATA; - break; - } - out << SHADERS_POST_PROCESS_OLD_FS_DATA; - } - return out; -} - io::sstream& CodeGenerator::generatePostProcessMain(io::sstream& out, ShaderType type) const { if (type == ShaderType::VERTEX) { out << SHADERS_POST_PROCESS_VS_DATA; diff --git a/libs/filamat/src/shaders/CodeGenerator.h b/libs/filamat/src/shaders/CodeGenerator.h index bdba0e84ee..1c383899b9 100644 --- a/libs/filamat/src/shaders/CodeGenerator.h +++ b/libs/filamat/src/shaders/CodeGenerator.h @@ -67,8 +67,6 @@ public: // generate the shader's main() utils::io::sstream& generateShaderMain(utils::io::sstream& out, ShaderType type) const; - utils::io::sstream& generatePostProcessMainOld(utils::io::sstream& out, ShaderType type, - filament::PostProcessStage variant) const; utils::io::sstream& generatePostProcessMain(utils::io::sstream& out, ShaderType type) const; // generate the shader's code for the lit shading model diff --git a/libs/filamat/src/shaders/ShaderGenerator.cpp b/libs/filamat/src/shaders/ShaderGenerator.cpp index ead0544efd..c3f4b32404 100644 --- a/libs/filamat/src/shaders/ShaderGenerator.cpp +++ b/libs/filamat/src/shaders/ShaderGenerator.cpp @@ -406,81 +406,6 @@ void ShaderGenerator::fixupExternalSamplers(filament::backend::ShaderModel sm, } } -const std::string ShaderPostProcessGenerator::createPostProcessVertexProgramOld( - filament::backend::ShaderModel sm, MaterialBuilder::TargetApi targetApi, - MaterialBuilder::TargetLanguage targetLanguage, filament::PostProcessStage variant, - uint8_t firstSampler) noexcept { - const CodeGenerator cg(sm, targetApi, targetLanguage); - utils::io::sstream vs; - cg.generateProlog(vs, ShaderType::VERTEX, false); - cg.generateDefine(vs, "LOCATION_POSITION", uint32_t(VertexAttribute::POSITION)); - generatePostProcessStageDefines(vs, cg, variant); - - cg.generateUniforms(vs, ShaderType::VERTEX, - BindingPoints::PER_VIEW, UibGenerator::getPerViewUib()); - - cg.generateCommon(vs, ShaderType::VERTEX); - cg.generatePostProcessMainOld(vs, ShaderType::VERTEX, variant); - cg.generateEpilog(vs); - return vs.c_str(); -} - -const std::string ShaderPostProcessGenerator::createPostProcessFragmentProgramOld( - filament::backend::ShaderModel sm, MaterialBuilder::TargetApi targetApi, - MaterialBuilder::TargetLanguage targetLanguage, filament::PostProcessStage variant, - uint8_t firstSampler) noexcept { - const CodeGenerator cg(sm, targetApi, targetLanguage); - utils::io::sstream fs; - cg.generateProlog(fs, ShaderType::FRAGMENT, false); - generatePostProcessStageDefines(fs, cg, variant); - - cg.generateUniforms(fs, ShaderType::FRAGMENT, - BindingPoints::PER_VIEW, UibGenerator::getPerViewUib()); - - cg.generateCommon(fs, ShaderType::FRAGMENT); - cg.generatePostProcessMainOld(fs, ShaderType::FRAGMENT, variant); - cg.generateEpilog(fs); - return fs.c_str(); -} - -void ShaderPostProcessGenerator::generatePostProcessStageDefines(utils::io::sstream& vs, - CodeGenerator const& cg, PostProcessStage variant) noexcept { - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING_OPAQUE", - uint32_t(PostProcessStage::TONE_MAPPING_OPAQUE)); - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING_TRANSLUCENT", - uint32_t(PostProcessStage::TONE_MAPPING_TRANSLUCENT)); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING_OPAQUE", - uint32_t(PostProcessStage::ANTI_ALIASING_OPAQUE)); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING_TRANSLUCENT", - uint32_t(PostProcessStage::ANTI_ALIASING_TRANSLUCENT)); - switch (variant) { - case PostProcessStage::TONE_MAPPING_OPAQUE: - cg.generateDefine(vs, "POST_PROCESS_STAGE", "POST_PROCESS_TONE_MAPPING_OPAQUE"); - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING", 1u); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING", 0u); - cg.generateDefine(vs, "POST_PROCESS_OPAQUE", 1u); - break; - case PostProcessStage::TONE_MAPPING_TRANSLUCENT: - cg.generateDefine(vs, "POST_PROCESS_STAGE", "POST_PROCESS_TONE_MAPPING_TRANSLUCENT"); - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING", 1u); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING", 0u); - cg.generateDefine(vs, "POST_PROCESS_OPAQUE", 0u); - break; - case PostProcessStage::ANTI_ALIASING_OPAQUE: - cg.generateDefine(vs, "POST_PROCESS_STAGE", "POST_PROCESS_ANTI_ALIASING_OPAQUE"); - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING", 0u); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING", 1u); - cg.generateDefine(vs, "POST_PROCESS_OPAQUE", 1u); - break; - case PostProcessStage::ANTI_ALIASING_TRANSLUCENT: - cg.generateDefine(vs, "POST_PROCESS_STAGE", "POST_PROCESS_ANTI_ALIASING_TRANSLUCENT"); - cg.generateDefine(vs, "POST_PROCESS_TONE_MAPPING", 0u); - cg.generateDefine(vs, "POST_PROCESS_ANTI_ALIASING", 1u); - cg.generateDefine(vs, "POST_PROCESS_OPAQUE", 0u); - break; - } -} - const std::string ShaderGenerator::createPostProcessVertexProgram( filament::backend::ShaderModel sm, MaterialBuilder::TargetApi targetApi, MaterialBuilder::TargetLanguage targetLanguage, MaterialInfo const& material, diff --git a/libs/filamat/src/shaders/ShaderGenerator.h b/libs/filamat/src/shaders/ShaderGenerator.h index 8fc0d475bf..3306611ba7 100644 --- a/libs/filamat/src/shaders/ShaderGenerator.h +++ b/libs/filamat/src/shaders/ShaderGenerator.h @@ -86,17 +86,6 @@ private: size_t mMaterialVertexLineOffset; }; -struct ShaderPostProcessGenerator { - static const std::string createPostProcessVertexProgramOld(filament::backend::ShaderModel sm, - MaterialBuilder::TargetApi targetApi, MaterialBuilder::TargetLanguage targetLanguage, - filament::PostProcessStage variant, uint8_t firstSampler) noexcept; - static const std::string createPostProcessFragmentProgramOld(filament::backend::ShaderModel sm, - MaterialBuilder::TargetApi targetApi, MaterialBuilder::TargetLanguage targetLanguage, - filament::PostProcessStage variant, uint8_t firstSampler) noexcept; - static void generatePostProcessStageDefines(utils::io::sstream& vs, CodeGenerator const& cg, - filament::PostProcessStage variant) noexcept; -}; - } // namespace filament #endif // TNT_FILAMENT_DETAILS_SHADERGENERATOR_H diff --git a/libs/gltfio/CMakeLists.txt b/libs/gltfio/CMakeLists.txt index a0a5329a52..71e7ec241d 100644 --- a/libs/gltfio/CMakeLists.txt +++ b/libs/gltfio/CMakeLists.txt @@ -74,7 +74,7 @@ foreach (input_path ${MATERIAL_SRCS}) set(output_path "${RESOURCE_DIR}/${basename}.filamat") add_custom_command( OUTPUT ${output_path} - COMMAND matc ${MATC_BASE_FLAGS} -m material -o ${output_path} ${input_path} + COMMAND matc ${MATC_BASE_FLAGS} -o ${output_path} ${input_path} MAIN_DEPENDENCY ${input_path} DEPENDS matc COMMENT "Compiling material ${mat_src} to ${output_path}" diff --git a/libs/matdbg/include/matdbg/ShaderExtractor.h b/libs/matdbg/include/matdbg/ShaderExtractor.h index 41d694e1f6..36b791de68 100644 --- a/libs/matdbg/include/matdbg/ShaderExtractor.h +++ b/libs/matdbg/include/matdbg/ShaderExtractor.h @@ -34,8 +34,6 @@ class ShaderExtractor { public: ShaderExtractor(backend::Backend backend, const void* data, size_t size); bool parse() noexcept; - bool isShadingMaterial() const noexcept; - bool isPostProcessMaterial() const noexcept; bool getShader(backend::ShaderModel shaderModel, uint8_t variant, backend::ShaderType stage, filaflat::ShaderBuilder& shader) noexcept; diff --git a/libs/matdbg/src/DebugServer.cpp b/libs/matdbg/src/DebugServer.cpp index d3a0e90063..2974f31080 100644 --- a/libs/matdbg/src/DebugServer.cpp +++ b/libs/matdbg/src/DebugServer.cpp @@ -239,8 +239,7 @@ public: } ShaderExtractor extractor(Backend::OPENGL, result->package, result->packageSize); - if (!extractor.parse() || - (!extractor.isShadingMaterial() && !extractor.isPostProcessMaterial())) { + if (!extractor.parse()) { return error(__LINE__); } @@ -255,8 +254,7 @@ public: if (vkindex[0]) { ShaderExtractor extractor(Backend::VULKAN, result->package, result->packageSize); - if (!extractor.parse() || - (!extractor.isShadingMaterial() && !extractor.isPostProcessMaterial())) { + if (!extractor.parse()) { return error(__LINE__); } @@ -297,8 +295,7 @@ public: if (metalindex[0]) { ShaderExtractor extractor(Backend::METAL, result->package, result->packageSize); - if (!extractor.parse() || - (!extractor.isShadingMaterial() && !extractor.isPostProcessMaterial())) { + if (!extractor.parse()) { return error(__LINE__); } diff --git a/libs/matdbg/src/JsonWriter.cpp b/libs/matdbg/src/JsonWriter.cpp index 897ab3c90f..042d4a30c1 100644 --- a/libs/matdbg/src/JsonWriter.cpp +++ b/libs/matdbg/src/JsonWriter.cpp @@ -86,7 +86,6 @@ static void printStringChunk(ostream& json, const ChunkContainer& container, static bool printMaterial(ostream& json, const ChunkContainer& container) { printStringChunk(json, container, filamat::MaterialName, "name"); printUint32Chunk(json, container, filamat::MaterialVersion, "version"); - printUint32Chunk(json, container, filamat::PostProcessVersion, "pp_version"); json << "\"shading\": {\n"; printChunk(json, container, MaterialShading, "model"); printChunk(json, container, MaterialVertexDomain, "vertex_domain"); diff --git a/libs/matdbg/src/ShaderExtractor.cpp b/libs/matdbg/src/ShaderExtractor.cpp index ec35751823..a35766657e 100644 --- a/libs/matdbg/src/ShaderExtractor.cpp +++ b/libs/matdbg/src/ShaderExtractor.cpp @@ -68,19 +68,6 @@ bool ShaderExtractor::parse() noexcept { return false; } -bool ShaderExtractor::isShadingMaterial() const noexcept { - ChunkContainer const& cc = mChunkContainer; - return cc.hasChunk(MaterialName) && cc.hasChunk(MaterialVersion) && - cc.hasChunk(MaterialUib) && cc.hasChunk(MaterialSib) && - cc.hasChunk(MaterialShaderModels) && cc.hasChunk(mMaterialTag); -} - -bool ShaderExtractor::isPostProcessMaterial() const noexcept { - ChunkContainer const& cc = mChunkContainer; - return cc.hasChunk(PostProcessVersion) - && cc.hasChunk(mMaterialTag) && cc.hasChunk(mDictionaryTag); -} - bool ShaderExtractor::getShader(ShaderModel shaderModel, uint8_t variant, ShaderType stage, ShaderBuilder& shader) noexcept { diff --git a/libs/matdbg/src/TextWriter.cpp b/libs/matdbg/src/TextWriter.cpp index 85a6b3246d..933d1cf83b 100644 --- a/libs/matdbg/src/TextWriter.cpp +++ b/libs/matdbg/src/TextWriter.cpp @@ -94,8 +94,6 @@ static bool printMaterial(ostream& text, const ChunkContainer& container) { text << version << endl; } - printUint32Chunk(text, container, PostProcessVersion, "Post process version: "); - CString name; if (read(container, MaterialName, &name)) { text << " " << setw(alignment) << left << "Name: "; diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 7ed809eae8..3f057eca3f 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -60,7 +60,7 @@ foreach (mat_src ${MATERIAL_SRCS}) set(output_path "${MATERIAL_DIR}/${localname}.filamat") add_custom_command( OUTPUT ${output_path} - COMMAND matc ${MATC_BASE_FLAGS} -m material -o ${output_path} ${fullname} + COMMAND matc ${MATC_BASE_FLAGS} -o ${output_path} ${fullname} MAIN_DEPENDENCY ${mat_src} DEPENDS matc COMMENT "Compiling material ${mat_src} to ${output_path}" diff --git a/shaders/CMakeLists.txt b/shaders/CMakeLists.txt index 2392ce3c34..ce28ad32fa 100644 --- a/shaders/CMakeLists.txt +++ b/shaders/CMakeLists.txt @@ -20,11 +20,8 @@ set(SHADERS src/common_math.fs src/common_shading.fs src/common_types.fs - src/conversion_functions.fs src/depth_main.fs src/depth_main.vs - src/dithering.fs - src/fxaa.fs src/getters.fs src/getters.vs src/inputs.fs @@ -41,8 +38,6 @@ set(SHADERS src/post_process_getters.vs src/post_process_inputs.fs src/post_process_inputs.vs - src/post_process_old.fs - src/post_process_old.vs src/shading_lit.fs src/shading_model_cloth.fs src/shading_model_standard.fs @@ -50,8 +45,15 @@ set(SHADERS src/shading_parameters.fs src/shading_unlit.fs src/shadowing.fs - src/shadowing.vs - src/tone_mapping.fs) + src/shadowing.vs) + +# These files aren't part of libshaders, but are included by materials inside +# filament/src/materials: +# +# fxaa.fs +# tone_mapping.fs +# conversion_functions.fs +# dithering.fs set(MINIFIED_DIR ${CMAKE_CURRENT_BINARY_DIR}/minified) diff --git a/shaders/src/post_process_old.fs b/shaders/src/post_process_old.fs deleted file mode 100644 index 880627c55a..0000000000 --- a/shaders/src/post_process_old.fs +++ /dev/null @@ -1,80 +0,0 @@ -LAYOUT_LOCATION(0) in highp vec2 vertex_uv; - -LAYOUT_LOCATION(0) out vec4 fragColor; - -#if POST_PROCESS_TONE_MAPPING -vec3 resolveFragment(const ivec2 uv) { - return vec3(0.0); -} - -vec4 resolveAlphaFragment(const ivec2 uv) { - return vec4(0.0); -} - -vec4 resolve() { -#if POST_PROCESS_OPAQUE - vec4 color = vec4(resolveFragment(ivec2(vertex_uv)), 1.0); - color.rgb = tonemap(color.rgb); - color.rgb = OECF(color.rgb); - color.a = luminance(color.rgb); -#else - vec4 color = resolveAlphaFragment(ivec2(vertex_uv)); - color.rgb /= color.a + FLT_EPS; - color.rgb = tonemap(color.rgb); - color.rgb = OECF(color.rgb); - color.rgb *= color.a + FLT_EPS; -#endif - return color; -} - -vec4 PostProcess_ToneMapping() { - vec4 color = resolve(); - // if (postProcessUniforms.dithering > 0) { - // color = dither(color); - // } - return color; -} -#endif - -#if POST_PROCESS_ANTI_ALIASING -vec4 PostProcess_AntiAliasing() { - // First, compute an exact upper bound for the area we need to sample from. - // The render target may be larger than the viewport that was used for scene - // rendering, so we cannot rely on the wrap mode alone. - highp vec2 fboSize = vec2(0.0); - highp vec2 invSize = 1.0 / fboSize; - highp vec2 halfTexel = 0.5 * invSize; - highp vec2 viewportSize = frameUniforms.resolution.xy; - - // The clamp needs to be over-aggressive by a half-texel due to bilinear sampling. - highp vec2 excessSize = 0.5 + fboSize - viewportSize; - highp vec2 upperBound = 1.0 - excessSize * invSize; - - // Next, compute the coordinates of the texel center and its bounding box. - // There is no need to clamp the min corner since the wrap mode will do - // it automatically. - - // vertex_uv is already interpolated to pixel center by the GPU - highp vec2 texelCenter = min(vertex_uv, upperBound); - highp vec2 texelMaxCorner = min(vertex_uv + halfTexel, upperBound); - highp vec2 texelMinCorner = vertex_uv - halfTexel; - - vec4 color = vec4(0.0); -#if POST_PROCESS_OPAQUE - color.a = 1.0; -#endif - return color; -} -#endif - -vec4 postProcess() { -#if POST_PROCESS_TONE_MAPPING - return PostProcess_ToneMapping(); -#elif POST_PROCESS_ANTI_ALIASING - return PostProcess_AntiAliasing(); -#endif -} - -void main() { - fragColor = postProcess(); -} diff --git a/shaders/src/post_process_old.vs b/shaders/src/post_process_old.vs deleted file mode 100644 index aecc557ae7..0000000000 --- a/shaders/src/post_process_old.vs +++ /dev/null @@ -1,22 +0,0 @@ - -LAYOUT_LOCATION(LOCATION_POSITION) in vec4 position; - -LAYOUT_LOCATION(0) out vec2 vertex_uv; - -void main() { - vertex_uv = (position.xy * 0.5 + 0.5) * frameUniforms.resolution.xy; - -#if POST_PROCESS_ANTI_ALIASING - // texel to uv, accounting for the texture actual size - vertex_uv *= frameUniforms.resolution.zw; -#endif - - gl_Position = position; - -#if defined(TARGET_METAL_ENVIRONMENT) - // Metal texture space is vertically flipped that of OpenGL's, so flip the Y coords so we sample - // the frame correctly. Vulkan doesn't need this fix because its clip space is mirrored - // (the Y axis points down the screen). - gl_Position.y = -gl_Position.y; -#endif -} diff --git a/tools/matc/CMakeLists.txt b/tools/matc/CMakeLists.txt index 2e7ee46b20..a0cf724883 100644 --- a/tools/matc/CMakeLists.txt +++ b/tools/matc/CMakeLists.txt @@ -22,7 +22,6 @@ file(GLOB_RECURSE HDRS src/matc/MaterialLexeme.h src/matc/MaterialLexer.h src/matc/ParametersProcessor.h - src/matc/PostprocessMaterialCompiler.h src/matc/DirIncluder.h ) @@ -34,7 +33,6 @@ set(SRCS src/matc/MaterialCompiler.cpp src/matc/MaterialLexer.cpp src/matc/ParametersProcessor.cpp - src/matc/PostprocessMaterialCompiler.cpp src/matc/DirIncluder.cpp ) diff --git a/tools/matc/src/main.cpp b/tools/matc/src/main.cpp index 03efdaf5b5..7455869fa4 100644 --- a/tools/matc/src/main.cpp +++ b/tools/matc/src/main.cpp @@ -22,7 +22,6 @@ #include "matc/Compiler.h" #include "matc/CommandlineConfig.h" #include "matc/MaterialCompiler.h" -#include "matc/PostprocessMaterialCompiler.h" using namespace matc; @@ -33,18 +32,7 @@ int main(int argc, char** argv) { return EXIT_FAILURE; } - std::unique_ptr compiler = nullptr; - switch (parameters.getMode()) { - case CommandlineConfig::Mode::MATERIAL: - compiler.reset(new MaterialCompiler()); - break; - case CommandlineConfig::Mode::DEPTH: - // this option is obsolete - return EXIT_SUCCESS; - case CommandlineConfig::Mode::POSTPROCESS: - compiler.reset(new PostprocessMaterialCompiler()); - break; - } + const std::unique_ptr compiler = std::make_unique(); if (!compiler->start(parameters)) { return EXIT_FAILURE; diff --git a/tools/matc/src/matc/CommandlineConfig.cpp b/tools/matc/src/matc/CommandlineConfig.cpp index 8e4edc9622..d3352c3bc1 100644 --- a/tools/matc/src/matc/CommandlineConfig.cpp +++ b/tools/matc/src/matc/CommandlineConfig.cpp @@ -72,8 +72,6 @@ static void usage(char* name) { " Specify output format: blob (default) or header\n\n" " --debug, -d\n" " Generate extra data for debugging\n\n" - " --mode, -m\n" - " Select package type: material (default), postprocess\n\n" " --print\n" " Print generated shaders for debugging\n\n" ); @@ -120,7 +118,6 @@ bool CommandlineConfig::parse() { { "output", required_argument, nullptr, 'o' }, { "output-format", required_argument, nullptr, 'f' }, { "debug", no_argument, nullptr, 'd' }, - { "mode", required_argument, nullptr, 'm' }, { "variant-filter", required_argument, nullptr, 'V' }, { "platform", required_argument, nullptr, 'p' }, { "optimize", no_argument, nullptr, 'x' }, // for backward compatibility @@ -167,20 +164,6 @@ bool CommandlineConfig::parse() { case 'd': mDebug = true; break; - case 'm': - if (arg == "material") { - mMode = Mode::MATERIAL; - } else if (arg == "depth") { - mMode = Mode::DEPTH; - std::cerr << "--mode=depth is obsolete." << std::endl; - } else if (arg == "postprocess") { - mMode = Mode::POSTPROCESS; - } else { - std::cerr << "Unrecognized mode flag. Must be 'material'|'postprocess'." - << std::endl; - return false; - } - break; case 'p': if (arg == "desktop") { mPlatform = Platform::DESKTOP; diff --git a/tools/matc/src/matc/Config.h b/tools/matc/src/matc/Config.h index 9f6f8c9999..16b82ffa48 100644 --- a/tools/matc/src/matc/Config.h +++ b/tools/matc/src/matc/Config.h @@ -31,12 +31,6 @@ namespace matc { class Config { public: - enum class Mode { - MATERIAL, - DEPTH, - POSTPROCESS, - }; - enum class OutputFormat { BLOB, C_HEADER, @@ -79,10 +73,6 @@ public: return mDebug; } - Mode getMode() const noexcept { - return mMode; - } - Platform getPlatform() const noexcept { return mPlatform; } @@ -125,7 +115,6 @@ protected: bool mPrintShaders = false; Optimization mOptimizationLevel = Optimization::PERFORMANCE; Metadata mReflectionTarget = Metadata::NONE; - Mode mMode = Mode::MATERIAL; Platform mPlatform = Platform::ALL; OutputFormat mOutputFormat = OutputFormat::BLOB; TargetApi mTargetApi = (TargetApi) 0; diff --git a/tools/matc/src/matc/PostprocessMaterialCompiler.cpp b/tools/matc/src/matc/PostprocessMaterialCompiler.cpp deleted file mode 100644 index e37cab3179..0000000000 --- a/tools/matc/src/matc/PostprocessMaterialCompiler.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PostprocessMaterialCompiler.h" - -#include - -using namespace filamat; - -namespace matc { - -bool PostprocessMaterialCompiler::run(const Config& config) { - PostprocessMaterialBuilder::init(); - PostprocessMaterialBuilder builder; - builder - .platform(config.getPlatform()) - .targetApi(config.getTargetApi()) - .optimization(config.getOptimizationLevel()) - .printShaders(config.printShaders()); - - Package package = builder.build(); - PostprocessMaterialBuilder::shutdown(); - if (!package.isValid()) { - return false; - } - return writePackage(package, config); -} - -bool PostprocessMaterialCompiler::checkParameters(const Config& config) { - // Check for output format. - if (config.getOutput() == nullptr) { - std::cerr << "Missing output filename. Aborting" << std::endl; - return false; - } - return true; -} - -} // namespace matc diff --git a/tools/matc/src/matc/PostprocessMaterialCompiler.h b/tools/matc/src/matc/PostprocessMaterialCompiler.h deleted file mode 100644 index dd2d542a9f..0000000000 --- a/tools/matc/src/matc/PostprocessMaterialCompiler.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef TNT_POSTPROCESSMATERIALCOMPILER_H -#define TNT_POSTPROCESSMATERIALCOMPILER_H - -#include "Compiler.h" - -namespace matc { -class PostprocessMaterialCompiler final: public Compiler { -public: - bool run(const Config& config) override; - bool checkParameters(const Config& config) override; -}; - -} // namespace matc -#endif //TNT_POSTPROCESSMATERIALCOMPILER_H diff --git a/tools/matinfo/src/main.cpp b/tools/matinfo/src/main.cpp index ec50e8e9e3..3fb28e48e3 100644 --- a/tools/matinfo/src/main.cpp +++ b/tools/matinfo/src/main.cpp @@ -376,8 +376,7 @@ static bool parseChunks(Config config, void* data, size_t size) { if (config.printGLSL) { ShaderExtractor parser(Backend::OPENGL, data, size); - if (!parser.parse() || - (!parser.isShadingMaterial() && !parser.isPostProcessMaterial())) { + if (!parser.parse()) { return false; } @@ -403,8 +402,7 @@ static bool parseChunks(Config config, void* data, size_t size) { if (config.printSPIRV) { ShaderExtractor parser(Backend::VULKAN, data, size); - if (!parser.parse() || - (!parser.isShadingMaterial() && !parser.isPostProcessMaterial())) { + if (!parser.parse()) { return false; } @@ -440,8 +438,7 @@ static bool parseChunks(Config config, void* data, size_t size) { if (config.printMetal) { ShaderExtractor parser(Backend::METAL, data, size); - if (!parser.parse() || - (!parser.isShadingMaterial() && !parser.isPostProcessMaterial())) { + if (!parser.parse()) { return false; } diff --git a/web/samples/CMakeLists.txt b/web/samples/CMakeLists.txt index 818d8d414c..f29b8e5490 100644 --- a/web/samples/CMakeLists.txt +++ b/web/samples/CMakeLists.txt @@ -18,7 +18,7 @@ set(MATERIAL_NAMES textured nonlit) -set(MATC_FLAGS -a opengl -m material -p mobile) +set(MATC_FLAGS -a opengl -p mobile) if (NOT CMAKE_BUILD_TYPE MATCHES Release) set(MATC_FLAGS -g ${MATC_FLAGS}) endif()