Commit: b1d2ea3e1b1173122eebecda0c3bd7552f4ee9c1 Author: Jason Fielder Date: Sun Jan 8 15:40:40 2023 +0100 Branches: master https://developer.blender.org/rBb1d2ea3e1b1173122eebecda0c3bd7552f4ee9c1
Metal: Add gl_PrimitiveID support. Resolves failing Mesh Snap utilities line add-on. Authored by Apple: Michael Parkin-White Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D16905 =================================================================== M source/blender/gpu/metal/mtl_shader_generator.hh M source/blender/gpu/metal/mtl_shader_generator.mm =================================================================== diff --git a/source/blender/gpu/metal/mtl_shader_generator.hh b/source/blender/gpu/metal/mtl_shader_generator.hh index f4cf42deb68..90f9a86b064 100644 --- a/source/blender/gpu/metal/mtl_shader_generator.hh +++ b/source/blender/gpu/metal/mtl_shader_generator.hh @@ -391,6 +391,7 @@ class MSLGeneratorInterface { bool uses_gl_InstanceID; bool uses_gl_BaseInstanceARB; bool uses_gl_FrontFacing; + bool uses_gl_PrimitiveID; /* Sets the output render target array index when using multilayered rendering. */ bool uses_gl_FragDepth; bool uses_mtl_array_index_; diff --git a/source/blender/gpu/metal/mtl_shader_generator.mm b/source/blender/gpu/metal/mtl_shader_generator.mm index 9ed1461f857..fc37263d239 100644 --- a/source/blender/gpu/metal/mtl_shader_generator.mm +++ b/source/blender/gpu/metal/mtl_shader_generator.mm @@ -670,6 +670,9 @@ bool MTLShader::generate_msl_from_glsl(const shader::ShaderCreateInfo *info) msl_iface.uses_gl_FrontFacing = bool(info->builtins_ & BuiltinBits::FRONT_FACING) || shd_builder_->glsl_fragment_source_.find("gl_FrontFacing") != std::string::npos; + msl_iface.uses_gl_PrimitiveID = bool(info->builtins_ & BuiltinBits::PRIMITIVE_ID) || + shd_builder_->glsl_fragment_source_.find("gl_PrimitiveID") != + std::string::npos; /* NOTE(Metal): If FragColor is not used, then we treat the first fragment output attachment * as the primary output. */ @@ -990,6 +993,9 @@ bool MTLShader::generate_msl_from_glsl(const shader::ShaderCreateInfo *info) if (msl_iface.uses_gl_FrontFacing) { ss_fragment << "MTLBOOL gl_FrontFacing;" << std::endl; } + if (msl_iface.uses_gl_PrimitiveID) { + ss_fragment << "uint gl_PrimitiveID;" << std::endl; + } /* Add Texture members. */ for (const MSLTextureSampler &tex : msl_iface.texture_samplers) { @@ -1515,6 +1521,9 @@ std::string MSLGeneratorInterface::generate_msl_fragment_entry_stub() if (this->uses_gl_FrontFacing) { out << "fragment_shader_instance.gl_FrontFacing = gl_FrontFacing;" << std::endl; } + if (this->uses_gl_PrimitiveID) { + out << "fragment_shader_instance.gl_PrimitiveID = gl_PrimitiveID;" << std::endl; + } /* Copy vertex attributes into local variable.s */ out << this->generate_msl_fragment_input_population(); @@ -1690,6 +1699,9 @@ std::string MSLGeneratorInterface::generate_msl_fragment_inputs_string() if (this->uses_gl_FrontFacing) { out << ",\n\tconst MTLBOOL gl_FrontFacing [[front_facing]]"; } + if (this->uses_gl_PrimitiveID) { + out << ",\n\tconst uint gl_PrimitiveID [[primitive_id]]"; + } /* Barycentrics. */ if (this->uses_barycentrics) { _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
