Browse Source

Add blend mode support to sprites

David Catuhe 5 năm trước cách đây
mục cha
commit
31b6d5730b
2 tập tin đã thay đổi với 15 bổ sung4 xóa
  1. 1 1
      dist/preview release/babylon.js
  2. 14 3
      src/Sprites/spriteManager.ts

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
dist/preview release/babylon.js


+ 14 - 3
src/Sprites/spriteManager.ts

@@ -56,7 +56,7 @@ export interface ISpriteManager extends IDisposable {
      */
     intersects(ray: Ray, camera: Camera, predicate?: (sprite: Sprite) => boolean, fastCheck?: boolean): Nullable<PickingInfo>;
 
-        /**
+    /**
      * Intersects the sprites with a ray
      * @param ray defines the ray to intersect with
      * @param camera defines the current active camera
@@ -140,6 +140,17 @@ export class SpriteManager implements ISpriteManager {
         this._spriteTexture = value;
     }
 
+    private _blendMode = Constants.ALPHA_COMBINE;
+    /**
+     * Blend mode use to render the particle, it can be any of
+     * the static Constants.ALPHA_x properties provided in this class.
+     * Default value is Constants.ALPHA_COMBINE
+     */
+    public get blendMode() { return this._blendMode; }
+    public set blendMode(blendMode: number) {
+        this._blendMode = blendMode;
+    }
+
     /**
      * Creates a new sprite manager
      * @param name defines the manager's name
@@ -571,7 +582,7 @@ export class SpriteManager implements ISpriteManager {
         engine.setColorWrite(true);
         effect.setBool("alphaTest", false);
 
-        engine.setAlphaMode(Constants.ALPHA_COMBINE);
+        engine.setAlphaMode(this._blendMode);
         engine.drawElementsType(Material.TriangleFillMode, 0, (offset / 4) * 6);
         engine.setAlphaMode(Constants.ALPHA_DISABLE);
     }
@@ -603,4 +614,4 @@ export class SpriteManager implements ISpriteManager {
         this.onDisposeObservable.notifyObservers(this);
         this.onDisposeObservable.clear();
     }
-}
+}