Populated shader reflection enum with updated material attributes
This commit is contained in:
@@ -712,7 +712,7 @@ void KRPipeline::updatePushConstants(KRNode::RenderInfo& ri, const Matrix4& matM
|
|||||||
setPushConstant(ShaderValue::speculartexture, 1);
|
setPushConstant(ShaderValue::speculartexture, 1);
|
||||||
|
|
||||||
// Sets the normalTexture variable to the third texture unit
|
// Sets the normalTexture variable to the third texture unit
|
||||||
setPushConstant(ShaderValue::normaltexture, 2);
|
setPushConstant(ShaderValue::material_normaltexture, 2);
|
||||||
|
|
||||||
// Sets the shadowTexture variable to the fourth texture unit
|
// Sets the shadowTexture variable to the fourth texture unit
|
||||||
setPushConstant(ShaderValue::shadowtexture1, 3);
|
setPushConstant(ShaderValue::shadowtexture1, 3);
|
||||||
|
|||||||
@@ -53,10 +53,125 @@ enum class ShaderValueType : uint8_t
|
|||||||
|
|
||||||
enum class ShaderValue : uint8_t
|
enum class ShaderValue : uint8_t
|
||||||
{
|
{
|
||||||
material_diffuse = 0,
|
material_baseColor_map_texture = 0,
|
||||||
|
material_baseColor_map_texCoord,
|
||||||
|
material_baseColor_map_scale,
|
||||||
|
material_baseColor_map_offset,
|
||||||
|
material_baseColor_map_rotation,
|
||||||
|
material_baseColor_factor,
|
||||||
|
|
||||||
|
material_normal_map_texture,
|
||||||
|
material_normal_map_texCoord,
|
||||||
|
material_normal_map_scale,
|
||||||
|
material_normal_map_offset,
|
||||||
|
material_normal_map_rotation,
|
||||||
|
material_normal_scale,
|
||||||
|
|
||||||
|
material_emissive_map_texture,
|
||||||
|
material_emissive_map_texCoord,
|
||||||
|
material_emissive_map_scale,
|
||||||
|
material_emissive_map_offset,
|
||||||
|
material_emissive_map_rotation,
|
||||||
|
material_emissive_factor,
|
||||||
|
|
||||||
|
material_occlusion_map_texture,
|
||||||
|
material_occlusion_map_texCoord,
|
||||||
|
material_occlusion_map_scale,
|
||||||
|
material_occlusion_map_offset,
|
||||||
|
material_occlusion_map_rotation,
|
||||||
|
material_occlusion_strength,
|
||||||
|
|
||||||
|
material_metalicRoughness_map_texture,
|
||||||
|
material_metalicRoughness_map_texCoord,
|
||||||
|
material_metalicRoughness_map_scale,
|
||||||
|
material_metalicRoughness_map_offset,
|
||||||
|
material_metalicRoughness_map_rotation,
|
||||||
|
material_metalic_factor,
|
||||||
|
material_roughness_factor,
|
||||||
|
|
||||||
|
material_alphaMode,
|
||||||
|
material_alphaCutoff,
|
||||||
|
material_doubleSided,
|
||||||
|
material_ior,
|
||||||
|
material_shadingModel,
|
||||||
|
|
||||||
|
material_anisotropy_map_texture,
|
||||||
|
material_anisotropy_map_texCoord,
|
||||||
|
material_anisotropy_map_scale,
|
||||||
|
material_anisotropy_map_offset,
|
||||||
|
material_anisotropy_map_rotation,
|
||||||
|
material_anisotropy_strength,
|
||||||
|
material_anisotropy_rotation,
|
||||||
|
|
||||||
|
material_clearcoat_map_texture,
|
||||||
|
material_clearcoat_map_texCoord,
|
||||||
|
material_clearcoat_map_scale,
|
||||||
|
material_clearcoat_map_offset,
|
||||||
|
material_clearcoat_map_rotation,
|
||||||
|
material_clearcoat_factor,
|
||||||
|
|
||||||
|
material_clearcoatRoughness_map_texture,
|
||||||
|
material_clearcoatRoughness_map_texCoord,
|
||||||
|
material_clearcoatRoughness_map_scale,
|
||||||
|
material_clearcoatRoughness_map_offset,
|
||||||
|
material_clearcoatRoughness_map_rotation,
|
||||||
|
material_clearcoatRoughness_factor,
|
||||||
|
|
||||||
|
material_clearcoatNormal_map_texture,
|
||||||
|
material_clearcoatNormal_map_texCoord,
|
||||||
|
material_clearcoatNormal_map_scale,
|
||||||
|
material_clearcoatNormal_map_offset,
|
||||||
|
material_clearcoatNormal_map_rotation,
|
||||||
|
material_clearcoatNormal_scale,
|
||||||
|
|
||||||
|
material_dispersion,
|
||||||
|
|
||||||
|
material_specular_map_texture,
|
||||||
|
material_specular_map_texCoord,
|
||||||
|
material_specular_map_scale,
|
||||||
|
material_specular_map_offset,
|
||||||
|
material_specular_map_rotation,
|
||||||
|
material_specular_factor,
|
||||||
|
|
||||||
|
material_specularColor_map_texture,
|
||||||
|
material_specularColor_map_texCoord,
|
||||||
|
material_specularColor_map_scale,
|
||||||
|
material_specularColor_map_offset,
|
||||||
|
material_specularColor_map_rotation,
|
||||||
|
material_specularColor_factor,
|
||||||
|
|
||||||
|
material_thickness_map_texture,
|
||||||
|
material_thickness_map_texCoord,
|
||||||
|
material_thickness_map_scale,
|
||||||
|
material_thickness_map_offset,
|
||||||
|
material_thickness_map_rotation,
|
||||||
|
material_thickness_factor,
|
||||||
|
|
||||||
|
material_attenuationDistance,
|
||||||
|
material_attenuationColor,
|
||||||
|
|
||||||
|
material_transmission_map_texture,
|
||||||
|
material_transmission_map_texCoord,
|
||||||
|
material_transmission_map_scale,
|
||||||
|
material_transmission_map_offset,
|
||||||
|
material_transmission_map_rotation,
|
||||||
|
material_transmission_factor,
|
||||||
|
|
||||||
|
// Deprecated material attributes...
|
||||||
|
material_diffuse,
|
||||||
material_specular,
|
material_specular,
|
||||||
|
material_speculartexture_scale,
|
||||||
|
material_speculartexture_offset,
|
||||||
material_alpha,
|
material_alpha,
|
||||||
material_shininess,
|
material_shininess,
|
||||||
|
material_normaltexture,
|
||||||
|
material_normaltexture_scale,
|
||||||
|
material_normaltexture_offset,
|
||||||
|
material_diffusetexture_scale,
|
||||||
|
material_diffusetexture_offset,
|
||||||
|
material_ambienttexture_scale,
|
||||||
|
material_ambienttexture_offset,
|
||||||
|
|
||||||
light_position,
|
light_position,
|
||||||
light_direction_model_space,
|
light_direction_model_space,
|
||||||
light_direction_view_space,
|
light_direction_view_space,
|
||||||
@@ -82,15 +197,6 @@ enum class ShaderValue : uint8_t
|
|||||||
diffusetexture,
|
diffusetexture,
|
||||||
speculartexture,
|
speculartexture,
|
||||||
reflectioncubetexture,
|
reflectioncubetexture,
|
||||||
normaltexture,
|
|
||||||
diffusetexture_scale,
|
|
||||||
speculartexture_scale,
|
|
||||||
normaltexture_scale,
|
|
||||||
ambienttexture_scale,
|
|
||||||
diffusetexture_offset,
|
|
||||||
speculartexture_offset,
|
|
||||||
normaltexture_offset,
|
|
||||||
ambienttexture_offset,
|
|
||||||
shadow_mvp1,
|
shadow_mvp1,
|
||||||
shadow_mvp2,
|
shadow_mvp2,
|
||||||
shadow_mvp3,
|
shadow_mvp3,
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ KRBundle* LoadGltf(KRContext& context, simdjson::ondemand::object& jsonRoot, std
|
|||||||
tryJson(extensions_KHR_materials_specular["specularFactor"].get(new_material->m_specularFactor));
|
tryJson(extensions_KHR_materials_specular["specularFactor"].get(new_material->m_specularFactor));
|
||||||
parseTextureInfo(extensions_KHR_materials_specular, "specularTexture", new_material->m_specularMap);
|
parseTextureInfo(extensions_KHR_materials_specular, "specularTexture", new_material->m_specularMap);
|
||||||
tryJson(extensions_KHR_materials_specular["specularColorFactor"].get(new_material->m_specularColorFactor));
|
tryJson(extensions_KHR_materials_specular["specularColorFactor"].get(new_material->m_specularColorFactor));
|
||||||
parseTextureInfo(extensions_KHR_materials_specular, "specularColorTexture", new_material->m_specularColorTexture);
|
parseTextureInfo(extensions_KHR_materials_specular, "specularColorTexture", new_material->m_specularColorMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
simdjson::ondemand::object extensions_KHR_materials_volume;
|
simdjson::ondemand::object extensions_KHR_materials_volume;
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ KRMaterial::KRMaterial(KRContext& context, std::string name, mimir::Block* data)
|
|||||||
}
|
}
|
||||||
tryJson(specularObj["factor"].get(m_specularFactor));
|
tryJson(specularObj["factor"].get(m_specularFactor));
|
||||||
if (tryJson(specularObj["colorMap"].get(mapVal))) {
|
if (tryJson(specularObj["colorMap"].get(mapVal))) {
|
||||||
tryJson(m_specularColorTexture.parse(mapVal));
|
tryJson(m_specularColorMap.parse(mapVal));
|
||||||
}
|
}
|
||||||
tryJson(specularObj["colorFactor"].get(m_specularColorFactor));
|
tryJson(specularObj["colorFactor"].get(m_specularColorFactor));
|
||||||
}
|
}
|
||||||
@@ -432,7 +432,7 @@ bool KRMaterial::save(Block& data)
|
|||||||
sb.append_comma();
|
sb.append_comma();
|
||||||
sb.append_key_value<"factor">(m_specularFactor);
|
sb.append_key_value<"factor">(m_specularFactor);
|
||||||
sb.append_comma();
|
sb.append_comma();
|
||||||
sb.append_key_value<"colorMap">(m_specularColorTexture);
|
sb.append_key_value<"colorMap">(m_specularColorMap);
|
||||||
sb.append_comma();
|
sb.append_comma();
|
||||||
sb.append_key_value<"colorFactor">(m_specularColorFactor);
|
sb.append_key_value<"colorFactor">(m_specularColorFactor);
|
||||||
sb.end_object();
|
sb.end_object();
|
||||||
@@ -531,27 +531,6 @@ KRMaterial::alpha_mode_type KRMaterial::getAlphaMode()
|
|||||||
{
|
{
|
||||||
return m_alphaMode;
|
return m_alphaMode;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
void KRMaterial::setAmbient(const Vector3& c)
|
|
||||||
{
|
|
||||||
m_ambientColor = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KRMaterial::setDiffuse(const Vector3& c)
|
|
||||||
{
|
|
||||||
m_diffuseColor = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KRMaterial::setSpecular(const Vector3& c)
|
|
||||||
{
|
|
||||||
m_specularColor = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KRMaterial::setReflection(const Vector3& c)
|
|
||||||
{
|
|
||||||
m_reflectionColor = c;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
void KRMaterial::setTransparency(float a)
|
void KRMaterial::setTransparency(float a)
|
||||||
{
|
{
|
||||||
@@ -585,7 +564,7 @@ void KRMaterial::getResourceBindings(std::list<KRResourceBinding*>& bindings)
|
|||||||
bindings.push_back(&m_clearcoatRoughnessMap.texture);
|
bindings.push_back(&m_clearcoatRoughnessMap.texture);
|
||||||
bindings.push_back(&m_clearcoatNormalMap.texture);
|
bindings.push_back(&m_clearcoatNormalMap.texture);
|
||||||
bindings.push_back(&m_specularMap.texture);
|
bindings.push_back(&m_specularMap.texture);
|
||||||
bindings.push_back(&m_specularColorTexture.texture);
|
bindings.push_back(&m_specularColorMap.texture);
|
||||||
bindings.push_back(&m_thicknessMap.texture);
|
bindings.push_back(&m_thicknessMap.texture);
|
||||||
bindings.push_back(&m_transmissionMap.texture);
|
bindings.push_back(&m_transmissionMap.texture);
|
||||||
}
|
}
|
||||||
@@ -630,8 +609,8 @@ kraken_stream_level KRMaterial::getStreamLevel()
|
|||||||
stream_level = KRMIN(stream_level, m_specularMap.texture.get()->getStreamLevel());
|
stream_level = KRMIN(stream_level, m_specularMap.texture.get()->getStreamLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_specularColorTexture.texture.isBound()) {
|
if (m_specularColorMap.texture.isBound()) {
|
||||||
stream_level = KRMIN(stream_level, m_specularColorTexture.texture.get()->getStreamLevel());
|
stream_level = KRMIN(stream_level, m_specularColorMap.texture.get()->getStreamLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_thicknessMap.texture.isBound()) {
|
if (m_thicknessMap.texture.isBound()) {
|
||||||
@@ -726,7 +705,7 @@ void KRMaterial::bind(KRNode::RenderInfo& ri, ModelFormat modelFormat, __uint32_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bSpecMap) {
|
if (bSpecMap) {
|
||||||
pShader->setImageBinding("specularTexture", m_specularColorTexture.texture.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
pShader->setImageBinding("specularTexture", m_specularColorMap.texture.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bNormalMap) {
|
if (bNormalMap) {
|
||||||
@@ -764,22 +743,22 @@ bool KRMaterial::getShaderValue(ShaderValue value, float* output) const
|
|||||||
bool KRMaterial::getShaderValue(ShaderValue value, hydra::Vector2* output) const
|
bool KRMaterial::getShaderValue(ShaderValue value, hydra::Vector2* output) const
|
||||||
{
|
{
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case ShaderValue::diffusetexture_scale:
|
case ShaderValue::material_diffusetexture_scale:
|
||||||
*output = m_baseColorMap.scale;
|
*output = m_baseColorMap.scale;
|
||||||
return true;
|
return true;
|
||||||
case ShaderValue::speculartexture_scale:
|
case ShaderValue::material_speculartexture_scale:
|
||||||
*output = m_specularColorTexture.scale;
|
*output = m_specularColorMap.scale;
|
||||||
return true;
|
return true;
|
||||||
case ShaderValue::normaltexture_scale:
|
case ShaderValue::material_normaltexture_scale:
|
||||||
*output = m_normalMap.scale;
|
*output = m_normalMap.scale;
|
||||||
return true;
|
return true;
|
||||||
case ShaderValue::diffusetexture_offset:
|
case ShaderValue::material_diffusetexture_offset:
|
||||||
*output = m_baseColorMap.offset;
|
*output = m_baseColorMap.offset;
|
||||||
return true;
|
return true;
|
||||||
case ShaderValue::speculartexture_offset:
|
case ShaderValue::material_speculartexture_offset:
|
||||||
*output = m_specularColorTexture.offset;
|
*output = m_specularColorMap.offset;
|
||||||
return true;
|
return true;
|
||||||
case ShaderValue::normaltexture_offset:
|
case ShaderValue::material_normaltexture_offset:
|
||||||
*output = m_normalMap.offset;
|
*output = m_normalMap.offset;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ public:
|
|||||||
|
|
||||||
TextureMap m_specularMap{ KRTexture::TEXTURE_USAGE_MATERIAL_SPECULAR };
|
TextureMap m_specularMap{ KRTexture::TEXTURE_USAGE_MATERIAL_SPECULAR };
|
||||||
float m_specularFactor{ 1.f };
|
float m_specularFactor{ 1.f };
|
||||||
TextureMap m_specularColorTexture{ KRTexture::TEXTURE_USAGE_MATERIAL_SPECULAR_COLOR };
|
TextureMap m_specularColorMap{ KRTexture::TEXTURE_USAGE_MATERIAL_SPECULAR_COLOR };
|
||||||
hydra::Vector3 m_specularColorFactor{ 1.f, 1.f, 1.f };
|
hydra::Vector3 m_specularColorFactor{ 1.f, 1.f, 1.f };
|
||||||
|
|
||||||
TextureMap m_thicknessMap{ KRTexture::TEXTURE_USAGE_MATERIAL_THICKNESS };
|
TextureMap m_thicknessMap{ KRTexture::TEXTURE_USAGE_MATERIAL_THICKNESS };
|
||||||
|
|||||||
@@ -277,9 +277,9 @@ KRMaterial* KRMaterialManager::loadMtl(Block* data)
|
|||||||
pMaterial->m_baseColorMap.scale = texture_scale;
|
pMaterial->m_baseColorMap.scale = texture_scale;
|
||||||
pMaterial->m_baseColorMap.offset = texture_offset;
|
pMaterial->m_baseColorMap.offset = texture_offset;
|
||||||
} else if (strcmp(szSymbol[0], "map_ks") == 0) {
|
} else if (strcmp(szSymbol[0], "map_ks") == 0) {
|
||||||
pMaterial->m_specularColorTexture.texture.set(szSymbol[1]);
|
pMaterial->m_specularColorMap.texture.set(szSymbol[1]);
|
||||||
pMaterial->m_specularColorTexture.scale = texture_scale;
|
pMaterial->m_specularColorMap.scale = texture_scale;
|
||||||
pMaterial->m_specularColorTexture.offset = texture_offset;
|
pMaterial->m_specularColorMap.offset = texture_offset;
|
||||||
} else if (strcmp(szSymbol[0], "map_normal") == 0) {
|
} else if (strcmp(szSymbol[0], "map_normal") == 0) {
|
||||||
pMaterial->m_normalMap.texture.set(szSymbol[1]);
|
pMaterial->m_normalMap.texture.set(szSymbol[1]);
|
||||||
pMaterial->m_normalMap.scale = texture_scale;
|
pMaterial->m_normalMap.scale = texture_scale;
|
||||||
|
|||||||
Reference in New Issue
Block a user