Browse Source

renamed _FragCoord to fragCoord, added frontFacing boolean to detect flipped faces

Nicolas Cannasse 4 years ago
parent
commit
cc6e567236
4 changed files with 9 additions and 2 deletions
  1. 1 0
      hxsl/Ast.hx
  2. 3 2
      hxsl/Checker.hx
  3. 1 0
      hxsl/GlslOut.hx
  4. 4 0
      hxsl/HlslOut.hx

+ 1 - 0
hxsl/Ast.hx

@@ -247,6 +247,7 @@ enum TGlobal {
 	InstanceID;
 	// gl globals
 	FragCoord;
+	FrontFacing;
 }
 
 enum Component {

+ 3 - 2
hxsl/Checker.hx

@@ -169,7 +169,7 @@ class Checker {
 				[{ args : [{ name : "uv", type : vec2 }], ret : vec2 }];
 			case Trace:
 				[];
-			case VertexID, InstanceID, FragCoord:
+			case VertexID, InstanceID, FragCoord, FrontFacing:
 				null;
 			}
 			if( def != null )
@@ -177,7 +177,8 @@ class Checker {
 		}
 		globals.set("vertexID", { t : TInt, g : VertexID });
 		globals.set("instanceID", { t : TInt, g : InstanceID });
-		globals.set("_FragCoord", { t : vec4, g : FragCoord });
+		globals.set("fragCoord", { t : vec4, g : FragCoord });
+		globals.set("frontFacing", { t : TBool, g : FrontFacing });
 		globals.set("int", globals.get("toInt"));
 		globals.set("float", globals.get("toFloat"));
 		globals.set("reflect", globals.get("lReflect"));

+ 1 - 0
hxsl/GlslOut.hx

@@ -34,6 +34,7 @@ class GlslOut {
 		m.set(BVec3, "bvec3");
 		m.set(BVec4, "bvec4");
 		m.set(FragCoord, "gl_FragCoord");
+		m.set(FrontFacing, "gl_FrontFacing");
 		for( g in m )
 			KWDS.set(g, true);
 		m;

+ 4 - 0
hxsl/HlslOut.hx

@@ -34,6 +34,7 @@ class HlslOut {
 		m.set(BVec3, "bool3");
 		m.set(BVec4, "bool4");
 		m.set(FragCoord,"_in.__pos__");
+		m.set(FrontFacing, "_in.isFrontFace");
 		for( g in m )
 			KWDS.set(g, true);
 		m;
@@ -43,6 +44,7 @@ class HlslOut {
 	var SV_TARGET = "SV_TARGET";
 	var SV_VertexID = "SV_VertexID";
 	var SV_InstanceID = "SV_InstanceID";
+	var SV_IsFrontFace = "SV_IsFrontFace";
 	var STATIC = "static ";
 	var buf : StringBuf;
 	var exprIds = 0;
@@ -609,6 +611,8 @@ class HlslOut {
 			add("\tuint vertexID : "+SV_VertexID+";\n");
 		if( foundGlobals.exists(InstanceID) )
 			add("\tuint instanceID : "+SV_InstanceID+";\n");
+		if( foundGlobals.exists(FrontFacing) )
+			add("\tbool isFrontFace : "+SV_IsFrontFace+";\n");
 		add("};\n\n");
 
 		add("struct s_output {\n");