2
0
Эх сурвалжийг харах

Added centroid interpolation modifier.

Branimir Karadžić 9 жил өмнө
parent
commit
e5aa71db4d

+ 13 - 11
src/renderer_gl.cpp

@@ -4921,10 +4921,11 @@ namespace bgfx { namespace gl
 				if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES)
 				if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES)
 				&&  BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30) )
 				&&  BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES < 30) )
 				{
 				{
-					writeString(&writer
-						, "#define flat\n"
-						  "#define smooth\n"
-						  "#define noperspective\n"
+					writeString(&writer,
+						"#define centroid\n"
+						"#define flat\n"
+						"#define noperspective\n"
+						"#define smooth\n"
 						);
 						);
 
 
 					bool usesDerivatives = s_extension[Extension::OES_standard_derivatives].m_supported
 					bool usesDerivatives = s_extension[Extension::OES_standard_derivatives].m_supported
@@ -5173,13 +5174,14 @@ namespace bgfx { namespace gl
 						}
 						}
 					}
 					}
 
 
-					writeString(&writer
-							, "#define lowp\n"
-							  "#define mediump\n"
-							  "#define highp\n"
-							  "#define flat\n"
-							  "#define smooth\n"
-							  "#define noperspective\n"
+					writeString(&writer,
+							"#define lowp\n"
+							"#define mediump\n"
+							"#define highp\n"
+							"#define centroid\n"
+							"#define flat\n"
+							"#define noperspective\n"
+							"#define smooth\n"
 							);
 							);
 
 
 					bx::write(&writer, code, codeLen);
 					bx::write(&writer, code, codeLen);

+ 5 - 3
tools/shaderc/shaderc.cpp

@@ -124,7 +124,7 @@ namespace bgfx
 			return "nointerpolation";
 			return "nointerpolation";
 		}
 		}
 
 
-		return _glsl; // noperspective
+		return _glsl; // centroid, noperspective
 	}
 	}
 
 
 	const char* getUniformTypeName(UniformType::Enum _enum)
 	const char* getUniformTypeName(UniformType::Enum _enum)
@@ -1003,7 +1003,8 @@ namespace bgfx
 
 
 					if (0 == strncmp(typen, "flat", 4)
 					if (0 == strncmp(typen, "flat", 4)
 					||  0 == strncmp(typen, "smooth", 6)
 					||  0 == strncmp(typen, "smooth", 6)
-					||  0 == strncmp(typen, "noperspective", 13) )
+					||  0 == strncmp(typen, "noperspective", 13)
+					||  0 == strncmp(typen, "centroid", 8) )
 					{
 					{
 						interpolation = typen;
 						interpolation = typen;
 						typen = parse = bx::strws(bx::strword(parse) );
 						typen = parse = bx::strws(bx::strword(parse) );
@@ -1454,9 +1455,10 @@ namespace bgfx
 						if (hlsl < 4)
 						if (hlsl < 4)
 						{
 						{
 							preprocessor.writef(
 							preprocessor.writef(
+								"#define centroid\n"
 								"#define flat\n"
 								"#define flat\n"
-								"#define smooth\n"
 								"#define noperspective\n"
 								"#define noperspective\n"
+								"#define smooth\n"
 								);
 								);
 						}
 						}