new feature level API for backends (#5784)
* new feature level API for backends backend can now return a "feature level", each level corresponds to a "bundle" of features. Level1: ES3.0 capabilities Level2: ES3.1 capabilities + 31 textures + cubemap arrays Currently metal always returns level 1, GL and Vulkan return level 2 if 31 textures or more are supported. * Add public APIs for feature levels * Add infrastructure to check feature levels in materials * validate material feature level on use The validation is done when creating a renderable. If the engine doesn't support the material's feature level, an exception is thrown (or assert if exceptions are not enabled). * material documentation * activate ESSL 3.10 for feature level 2 also generate #defines to identify available feature levels * support for cubemap arrays in the public API if feature level 2 is supported, cubemap arrays can be used from the public API. * add release notes
This commit is contained in:
@@ -181,7 +181,7 @@ std::string ShaderGenerator::createVertexProgram(ShaderModel shaderModel,
|
||||
const CodeGenerator cg(shaderModel, targetApi, targetLanguage);
|
||||
const bool lit = material.isLit;
|
||||
|
||||
cg.generateProlog(vs, ShaderType::VERTEX, material.hasExternalSamplers);
|
||||
cg.generateProlog(vs, ShaderType::VERTEX, material);
|
||||
|
||||
cg.generateQualityDefine(vs, material.quality);
|
||||
|
||||
@@ -315,7 +315,7 @@ std::string ShaderGenerator::createFragmentProgram(ShaderModel shaderModel,
|
||||
const bool lit = material.isLit;
|
||||
|
||||
io::sstream fs;
|
||||
cg.generateProlog(fs, ShaderType::FRAGMENT, material.hasExternalSamplers);
|
||||
cg.generateProlog(fs, ShaderType::FRAGMENT, material);
|
||||
|
||||
cg.generateQualityDefine(fs, material.quality);
|
||||
|
||||
@@ -536,7 +536,7 @@ std::string ShaderGenerator::createPostProcessVertexProgram(
|
||||
const filament::Variant::type_t variantKey, SamplerBindingMap const& samplerBindingMap) const noexcept {
|
||||
const CodeGenerator cg(sm, targetApi, targetLanguage);
|
||||
io::sstream vs;
|
||||
cg.generateProlog(vs, ShaderType::VERTEX, false);
|
||||
cg.generateProlog(vs, ShaderType::VERTEX, material);
|
||||
|
||||
cg.generateQualityDefine(vs, material.quality);
|
||||
|
||||
@@ -577,7 +577,7 @@ std::string ShaderGenerator::createPostProcessFragmentProgram(
|
||||
uint8_t variant, const SamplerBindingMap& samplerBindingMap) const noexcept {
|
||||
const CodeGenerator cg(sm, targetApi, targetLanguage);
|
||||
io::sstream fs;
|
||||
cg.generateProlog(fs, ShaderType::FRAGMENT, false);
|
||||
cg.generateProlog(fs, ShaderType::FRAGMENT, material);
|
||||
|
||||
cg.generateQualityDefine(fs, material.quality);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user