Ver código fonte

Fix for #2822 -- points rendering error on Apple silicon (#3079)

* Add pointsize to SPIRV-Cross output before writing

Adds 
float bgfx_metal_pointSize [[point_size]] = 1;
to xlatMtlMain_out, ensuring that it always has a value.

* Update shaderc_metal.cpp

Only apply patch to vertex shaders
rnbhatt 2 anos atrás
pai
commit
fda8a3705f
1 arquivos alterados com 11 adições e 0 exclusões
  1. 11 0
      tools/shaderc/shaderc_metal.cpp

+ 11 - 0
tools/shaderc/shaderc_metal.cpp

@@ -638,6 +638,17 @@ namespace bgfx { namespace metal
 						}
 
 						std::string source = msl.compile();
+						
+						// fix https://github.com/bkaradzic/bgfx/issues/2822
+                        // insert struct member which declares point size, defaulted to 1
+                        if (_options.shaderType == 'v'){
+                            auto findName = "xlatMtlMain_out\n{";
+                            auto pos = source.find(findName);
+                            if (pos != std::string::npos){
+                                pos += strlen(findName);
+                                source.insert(pos, "\n\tfloat bgfx_metal_pointSize [[point_size]] = 1;");
+                            }
+                        }
 
 						if ('c' == _options.shaderType)
 						{