2020#include < filamat/IncludeCallback.h>
2121#include < filamat/Package.h>
2222
23- #include " Includes .h"
23+ #include " GLSLPostProcessor .h"
2424#include " MaterialVariants.h"
2525#include " PushConstantDefinitions.h"
26- #include " GLSLPostProcessor.h"
2726
2827#include " sca/GLSLTools.h"
2928
@@ -226,29 +225,19 @@ MaterialBuilder& MaterialBuilder::name(const char* name) noexcept {
226225 return *this ;
227226}
228227
229- MaterialBuilder& MaterialBuilder::fileName (const char * name) noexcept {
230- mFileName = CString (name);
231- return *this ;
232- }
233-
234228MaterialBuilder& MaterialBuilder::compilationParameters (const char * params) noexcept {
235229 mCompilationParameters = CString (params);
236230 return *this ;
237231}
238232
239233MaterialBuilder& MaterialBuilder::material (const char * code, size_t const line) noexcept {
240- mMaterialFragmentCode .setUnresolved (CString (code));
234+ mMaterialFragmentCode .setCode (CString (code));
241235 mMaterialFragmentCode .setLineOffset (line);
242236 return *this ;
243237}
244238
245- MaterialBuilder& MaterialBuilder::includeCallback (IncludeCallback callback) noexcept {
246- mIncludeCallback = std::move (callback);
247- return *this ;
248- }
249-
250239MaterialBuilder& MaterialBuilder::materialVertex (const char * code, size_t const line) noexcept {
251- mMaterialVertexCode .setUnresolved (CString (code));
240+ mMaterialVertexCode .setCode (CString (code));
252241 mMaterialVertexCode .setLineOffset (line);
253242 return *this ;
254243}
@@ -650,7 +639,7 @@ bool MaterialBuilder::hasSamplerType(SamplerType const samplerType) const noexce
650639void MaterialBuilder::prepareToBuild (MaterialInfo& info) noexcept {
651640 prepare (mEnableFramebufferFetch , mFeatureLevel );
652641
653- const bool hasEmptyVertexCode = mMaterialVertexCode .getResolved ().empty ();
642+ const bool hasEmptyVertexCode = mMaterialVertexCode .getCode ().empty ();
654643 const bool isPostProcessMaterial = mMaterialDomain == MaterialDomain::POST_PROCESS;
655644 // TODO: Currently, for surface materials, we rely on the presence of a custom vertex shader to
656645 // infer the default shader stages. We could do better by analyzing the AST of the vertex shader
@@ -850,29 +839,6 @@ bool MaterialBuilder::runSemanticAnalysis(MaterialInfo* inOutInfo,
850839 return success;
851840}
852841
853- bool MaterialBuilder::ShaderCode::resolveIncludes (IncludeCallback callback,
854- const CString& fileName) noexcept {
855- if (!mCode .empty ()) {
856- ResolveOptions const options {
857- .insertLineDirectives = true ,
858- .insertLineDirectiveCheck = true
859- };
860- IncludeResult source {
861- .includeName = fileName,
862- .text = mCode ,
863- .lineNumberOffset = getLineOffset (),
864- .name = CString (" " )
865- };
866- if (!filamat::resolveIncludes (source, std::move (callback), options)) {
867- return false ;
868- }
869- mCode = source.text ;
870- }
871-
872- mIncludesResolved = true ;
873- return true ;
874- }
875-
876842static void showErrorMessage (const char * materialName, filament::Variant const variant,
877843 MaterialBuilder::TargetApi const targetApi, backend::ShaderStage const shaderType,
878844 MaterialBuilder::FeatureLevel const featureLevel,
@@ -944,8 +910,8 @@ bool MaterialBuilder::generateShaders(JobSystem& jobSystem, const std::vector<Va
944910 // End: must be protected by lock
945911
946912 ShaderGenerator sg (mProperties , mVariables , mOutputs , mDefines , mConstants , mPushConstants ,
947- mMaterialFragmentCode .getResolved (), mMaterialFragmentCode .getLineOffset (),
948- mMaterialVertexCode .getResolved (), mMaterialVertexCode .getLineOffset (),
913+ mMaterialFragmentCode .getCode (), mMaterialFragmentCode .getLineOffset (),
914+ mMaterialVertexCode .getCode (), mMaterialVertexCode .getLineOffset (),
949915 mMaterialDomain );
950916
951917 container.emplace <bool >(MaterialHasCustomDepthShader,
@@ -1317,12 +1283,6 @@ Package MaterialBuilder::build(JobSystem& jobSystem) {
13171283
13181284 // TODO: maybe check MaterialDomain::COMPUTE has outputs
13191285
1320- // Resolve all the #include directives within user code.
1321- if (!mMaterialFragmentCode .resolveIncludes (mIncludeCallback , mFileName ) ||
1322- !mMaterialVertexCode .resolveIncludes (mIncludeCallback , mFileName )) {
1323- goto error;
1324- }
1325-
13261286 if (mCustomSurfaceShading && mShading != Shading::LIT) {
13271287 slog.e << " Error: customSurfaceShading can only be used with lit materials." << io::endl;
13281288 goto error;
@@ -1533,7 +1493,7 @@ bool MaterialBuilder::hasCustomVaryings() const noexcept {
15331493}
15341494
15351495bool MaterialBuilder::needsStandardDepthProgram () const noexcept {
1536- const bool hasEmptyVertexCode = mMaterialVertexCode .getResolved ().empty ();
1496+ const bool hasEmptyVertexCode = mMaterialVertexCode .getCode ().empty ();
15371497 return !hasEmptyVertexCode ||
15381498 hasCustomVaryings () ||
15391499 mBlendingMode == BlendingMode::MASKED ||
@@ -1546,8 +1506,8 @@ std::string MaterialBuilder::peek(backend::ShaderStage const stage,
15461506 const CodeGenParams& params, const PropertyList& properties) noexcept {
15471507
15481508 ShaderGenerator const sg (properties, mVariables , mOutputs , mDefines , mConstants , mPushConstants ,
1549- mMaterialFragmentCode .getResolved (), mMaterialFragmentCode .getLineOffset (),
1550- mMaterialVertexCode .getResolved (), mMaterialVertexCode .getLineOffset (),
1509+ mMaterialFragmentCode .getCode (), mMaterialFragmentCode .getLineOffset (),
1510+ mMaterialVertexCode .getCode (), mMaterialVertexCode .getLineOffset (),
15511511 mMaterialDomain );
15521512
15531513 MaterialInfo info;
@@ -1732,8 +1692,8 @@ void MaterialBuilder::writeCommonChunks(ChunkContainer& container, MaterialInfo&
17321692 }
17331693
17341694 // create a unique material id
1735- auto const & vert = mMaterialVertexCode .getResolved ();
1736- auto const & frag = mMaterialFragmentCode .getResolved ();
1695+ auto const & vert = mMaterialVertexCode .getCode ();
1696+ auto const & frag = mMaterialFragmentCode .getCode ();
17371697 std::hash<std::string_view> const hasher;
17381698 size_t const materialId = hash::combine (
17391699 MATERIAL_VERSION,
0 commit comments