Trying to add opacity
This commit is contained in:
@@ -80,6 +80,7 @@ void MeshLoader::loadTextures(const aiScene* scene, const std::filesystem::path&
|
||||
}
|
||||
}
|
||||
|
||||
constexpr const char* KEY_BASE_COLOR = "k_b";
|
||||
constexpr const char* KEY_DIFFUSE_COLOR = "k_d";
|
||||
constexpr const char* KEY_SPECULAR_COLOR = "k_s";
|
||||
constexpr const char* KEY_AMBIENT_COLOR = "k_a";
|
||||
@@ -270,15 +271,24 @@ void MeshLoader::loadMaterials(const aiScene* scene, const Array<PTextureAsset>&
|
||||
|
||||
result = blendKey;
|
||||
};
|
||||
|
||||
// Diffuse
|
||||
addVectorParameter(KEY_DIFFUSE_COLOR, AI_MATKEY_COLOR_DIFFUSE);
|
||||
std::string outputDiffuse = KEY_DIFFUSE_COLOR;
|
||||
std::string outputBase = KEY_BASE_COLOR;
|
||||
uint32 numDiffuseTextures = material->GetTextureCount(aiTextureType_DIFFUSE);
|
||||
for (uint32 i = 0; i < numDiffuseTextures; ++i) {
|
||||
addTextureParameter(KEY_DIFFUSE_TEXTURE, aiTextureType_DIFFUSE, i, outputDiffuse);
|
||||
addTextureParameter(KEY_DIFFUSE_TEXTURE, aiTextureType_DIFFUSE, i, outputBase, {0, 1, 2, 3});
|
||||
}
|
||||
|
||||
std::string outputDiffuse = KEY_DIFFUSE_COLOR;
|
||||
expressions.add(new SwizzleExpression({0, 1, 2, -1}));
|
||||
expressions.back()->key = outputDiffuse;
|
||||
expressions.back()->inputs["target"].source = outputBase;
|
||||
|
||||
std::string outputAlpha = "alpha";
|
||||
expressions.add(new SwizzleExpression({-1, -1, -1, 0}));
|
||||
expressions.back()->key = outputDiffuse;
|
||||
expressions.back()->inputs["target"].source = outputBase;
|
||||
|
||||
// Specular
|
||||
addVectorParameter(KEY_SPECULAR_COLOR, AI_MATKEY_COLOR_SPECULAR);
|
||||
std::string outputSpecular = KEY_SPECULAR_COLOR;
|
||||
@@ -335,6 +345,7 @@ void MeshLoader::loadMaterials(const aiScene* scene, const Array<PTextureAsset>&
|
||||
|
||||
MaterialNode brdf;
|
||||
brdf.variables["baseColor"] = outputDiffuse;
|
||||
brdf.variables["alpha"] = outputAlpha;
|
||||
if (!outputNormal.empty()) {
|
||||
expressions.add(new MulExpression());
|
||||
expressions.back()->key = "NormalMul";
|
||||
@@ -376,15 +387,8 @@ void MeshLoader::loadMaterials(const aiScene* scene, const Array<PTextureAsset>&
|
||||
}
|
||||
break;
|
||||
};
|
||||
bool twoSided = true;
|
||||
material->Get(AI_MATKEY_TWOSIDED, twoSided);
|
||||
float opacity = 1.0f;
|
||||
if (std::strcmp(material->GetName().C_Str(), "3td_Africa_Grass01") == 0)
|
||||
{
|
||||
opacity = 0.5f;
|
||||
}
|
||||
OMaterialAsset baseMat = new MaterialAsset(importPath, materialName);
|
||||
baseMat->material = new Material(graphics, numTextures, numSamplers, numFloats, twoSided, opacity, materialName,
|
||||
baseMat->material = new Material(graphics, numTextures, numSamplers, numFloats, 1, 1, materialName,
|
||||
std::move(expressions), std::move(parameters), std::move(brdf));
|
||||
baseMat->material->compile();
|
||||
graphics->getShaderCompiler()->registerMaterial(baseMat->material);
|
||||
|
||||
@@ -602,7 +602,7 @@ PRayTracingPipeline PipelineCache::createPipeline(Gfx::RayTracingPipelineCreateI
|
||||
.pStages = shaderStages.data(),
|
||||
.groupCount = static_cast<uint32>(shaderGroups.size()),
|
||||
.pGroups = shaderGroups.data(),
|
||||
.maxPipelineRayRecursionDepth = 1,
|
||||
.maxPipelineRayRecursionDepth = 12,
|
||||
.layout = createInfo.pipelineLayout.cast<PipelineLayout>()->getHandle(),
|
||||
};
|
||||
VkPipeline pipelineHandle;
|
||||
|
||||
Reference in New Issue
Block a user