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

added ALPHA16F/ALPHA32F support

Nicolas Cannasse 8 жил өмнө
parent
commit
5b67d6bd05

+ 8 - 1
h3d/impl/GlDriver.hx

@@ -505,6 +505,7 @@ class GlDriver extends Driver {
 		return switch( t.internalFmt ) {
 		#if !js
 		case GL.RGBA32F, GL.RGBA16F: GL.RGBA;
+		case GL.ALPHA16F, GL.ALPHA32F: GL.ALPHA;
 		#end
 		case GL.RGBA: GL.RGBA;
 		case GL.ALPHA: GL.ALPHA;
@@ -517,7 +518,7 @@ class GlDriver extends Driver {
 		case RGBA, ALPHA: true;
 		case RGBA32F: hasFeature(FloatTextures);
 		#if !js
-		case RGBA16F: hasFeature(FloatTextures);
+		case ALPHA16F, ALPHA32F, RGBA16F: hasFeature(FloatTextures);
 		#end
 		default: false;
 		}
@@ -542,6 +543,12 @@ class GlDriver extends Driver {
 		case RGBA16F if( hasFeature(FloatTextures) ):
 			tt.pixelFmt = GL.HALF_FLOAT;
 			tt.internalFmt = GL.RGBA16F;
+		case ALPHA16F if( hasFeature(FloatTextures) ):
+			tt.pixelFmt = GL.HALF_FLOAT;
+			tt.internalFmt = GL.ALPHA16F;
+		case ALPHA32F if( hasFeature(FloatTextures) ):
+			tt.pixelFmt = GL.FLOAT;
+			tt.internalFmt = GL.ALPHA32F;
 		#end
 		default:
 			throw "Unsupported texture format "+t.format;

+ 2 - 0
hxd/PixelFormat.hx

@@ -7,4 +7,6 @@ enum PixelFormat {
 	RGBA16F;
 	RGBA32F;
 	ALPHA;
+	ALPHA16F;
+	ALPHA32F;
 }

+ 3 - 1
hxd/Pixels.hx

@@ -364,6 +364,8 @@ class Pixels {
 		case ARGB, BGRA, RGBA: 4;
 		case RGBA16F: 8;
 		case RGBA32F: 16;
+		case ALPHA16F: 2;
+		case ALPHA32F: 4;
 		}
 	}
 
@@ -373,7 +375,7 @@ class Pixels {
 	**/
 	public static function getChannelOffset( format : PixelFormat, channel : Channel ) {
 		return switch( format ) {
-		case ALPHA:
+		case ALPHA, ALPHA16F, ALPHA32F:
 			if( channel == A ) 0 else -1;
 		case ARGB:
 			[1, 2, 3, 0][channel.toInt()];