Bläddra i källkod

Set the hasAlpha property according to the ktx2 file loaded

Popov72 4 år sedan
förälder
incheckning
7cdd028a19

+ 1 - 0
dist/preview release/what's new.md

@@ -45,3 +45,4 @@
 ## Breaking changes
 
 - Use both `mesh.visibility` and `material.alpha` values to compute the global alpha value used by the soft transparent shadow rendering code. Formerly was only using `mesh.visibility` ([Popov72](https://github.com/Popov72))
+- The `Texture.hasAlpha` property is automatically set by the KTX2 loader if the texture has an alpha channel ([Popov72](https://github.com/Popov72))

+ 2 - 1
ktx2Decoder/src/ktx2Decoder.ts

@@ -35,6 +35,7 @@ export interface IDecodedData {
     transcodedFormat: number;
     mipmaps: Array<IMipmap>;
     isInGammaSpace: boolean;
+    hasAlpha: boolean;
     errors?: string;
     transcoderName?: string;
 }
@@ -165,7 +166,7 @@ export class KTX2Decoder {
 
         const mipmaps: Array<IMipmap> = [];
         const dataPromises: Array<Promise<Uint8Array | null>> = [];
-        const decodedData: IDecodedData = { width: 0, height: 0, transcodedFormat, mipmaps, isInGammaSpace: kfr.isInGammaSpace, transcoderName: transcoder.getName() };
+        const decodedData: IDecodedData = { width: 0, height: 0, transcodedFormat, mipmaps, isInGammaSpace: kfr.isInGammaSpace, hasAlpha: kfr.hasAlpha, transcoderName: transcoder.getName() };
 
         let firstImageDescIndex = 0;
 

+ 2 - 0
src/Misc/khronosTextureContainer2.ts

@@ -198,6 +198,7 @@ export class KhronosTextureContainer2 {
             // return back some information about the decoded data
             options.transcodedFormat = data.transcodedFormat;
             options.isInGammaSpace = data.isInGammaSpace;
+            options.hasAlpha = data.hasAlpha;
             options.transcoderName = data.transcoderName;
         }
 
@@ -209,6 +210,7 @@ export class KhronosTextureContainer2 {
         }
 
         internalTexture._gammaSpace = data.isInGammaSpace;
+        internalTexture._hasAlpha = data.hasAlpha;
 
         if (data.errors) {
             throw new Error("KTX2 container - could not transcode the data. " + data.errors);

BIN
tests/validation/ReferenceImages/ktx2decoder.png


+ 2 - 1
tests/validation/config.json

@@ -921,7 +921,8 @@
         },
         {
             "title": "KTX2 decoder test",
-            "playgroundId": "#EIJH8L#1",
+            "playgroundId": "#EIJH8L#26",
+            "renderCount": 5,
             "referenceImage": "ktx2decoder.png",
             "excludeFromAutomaticTesting": true
         },