Bug 1223736 - Part 3: Remove the distinction between 2d and 3d masks since it only adds complexity. r=Bas
authorMatt Woodrow <mwoodrow@mozilla.com>
Tue, 22 Mar 2016 09:10:37 +1300
changeset 289705 e7ee750067da1e8f56f1283239948358267a9762
parent 289704 cc75c8546991b57aec6f6f4dd18e70554c229ebb
child 289706 30cc10b99593fd543eba8dcc20fd451b4424fb84
push id30108
push usercbook@mozilla.com
push dateTue, 22 Mar 2016 11:14:31 +0000
treeherdermozilla-central@ea6298e1b4f7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersBas
bugs1223736
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1223736 - Part 3: Remove the distinction between 2d and 3d masks since it only adds complexity. r=Bas
gfx/layers/CompositorTypes.h
gfx/layers/Effects.cpp
gfx/layers/Effects.h
gfx/layers/LayerScope.cpp
gfx/layers/composite/CompositableHost.cpp
gfx/layers/composite/CompositableHost.h
gfx/layers/composite/LayerManagerComposite.cpp
gfx/layers/composite/LayerManagerComposite.h
gfx/layers/d3d11/BlendShaderConstants.h
gfx/layers/d3d11/CompositorD3D11.cpp
gfx/layers/d3d11/CompositorD3D11.hlsl
gfx/layers/d3d11/CompositorD3D11Shaders.h
gfx/layers/d3d11/CompositorD3D11ShadersVR.h
gfx/layers/d3d11/genshaders.sh
gfx/layers/d3d9/CompositorD3D9.cpp
gfx/layers/d3d9/DeviceManagerD3D9.cpp
gfx/layers/d3d9/DeviceManagerD3D9.h
gfx/layers/d3d9/LayerManagerD3D9Shaders.h
gfx/layers/d3d9/LayerManagerD3D9Shaders.hlsl
gfx/layers/d3d9/genshaders.sh
gfx/layers/opengl/CompositorOGL.cpp
gfx/layers/opengl/OGLShaderProgram.cpp
gfx/layers/opengl/OGLShaderProgram.h
--- a/gfx/layers/CompositorTypes.h
+++ b/gfx/layers/CompositorTypes.h
@@ -225,17 +225,16 @@ enum class OpenMode : uint8_t {
   OPEN_WRITE_ONLY  = OPEN_WRITE
 };
 MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(OpenMode)
 
 // The kinds of mask texture a shader can support
 // We rely on the items in this enum being sequential
 enum class MaskType : uint8_t {
   MaskNone = 0,   // no mask layer
-  Mask2d,         // mask layer for layers with 2D transforms
-  Mask3d,         // mask layer for layers with 3D transforms
+  Mask,           // mask layer
   NumMaskTypes
 };
 
 } // namespace layers
 } // namespace mozilla
 
 #endif
--- a/gfx/layers/Effects.cpp
+++ b/gfx/layers/Effects.cpp
@@ -29,20 +29,16 @@ TexturedEffect::PrintInfo(std::stringstr
 
 void
 EffectMask::PrintInfo(std::stringstream& aStream, const char* aPrefix)
 {
   aStream << aPrefix;
   aStream << nsPrintfCString("EffectMask (0x%p)", this).get();
   AppendToString(aStream, mSize, " [size=", "]");
   AppendToString(aStream, mMaskTransform, " [mask-transform=", "]");
-
-  if (mIs3D) {
-    aStream << " [is-3d]";
-  }
 }
 
 void
 EffectRenderTarget::PrintInfo(std::stringstream& aStream, const char* aPrefix)
 {
   TexturedEffect::PrintInfo(aStream, aPrefix);
   aStream << nsPrintfCString(" [render-target=%p]", mRenderTarget.get()).get();
 }
--- a/gfx/layers/Effects.h
+++ b/gfx/layers/Effects.h
@@ -80,25 +80,23 @@ struct TexturedEffect : public Effect
 // Support an alpha mask.
 struct EffectMask : public Effect
 {
   EffectMask(TextureSource *aMaskTexture,
              gfx::IntSize aSize,
              const gfx::Matrix4x4 &aMaskTransform)
     : Effect(EffectTypes::MASK)
     , mMaskTexture(aMaskTexture)
-    , mIs3D(false)
     , mSize(aSize)
     , mMaskTransform(aMaskTransform)
   {}
 
   virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
 
   TextureSource* mMaskTexture;
-  bool mIs3D;
   gfx::IntSize mSize;
   gfx::Matrix4x4 mMaskTransform;
 };
 
 struct EffectVRDistortion : public Effect
 {
   EffectVRDistortion(gfx::VRHMDInfo* aHMD,
                      CompositingRenderTarget* aRenderTarget)
--- a/gfx/layers/LayerScope.cpp
+++ b/gfx/layers/LayerScope.cpp
@@ -1197,17 +1197,16 @@ SenderHelper::SendMaskEffect(GLContext* 
     TextureSourceOGL* source = aEffect->mMaskTexture->AsSourceOGL();
     if (!source) {
         return;
     }
 
     // Expose packet creation here, so we could dump secondary mask effect attributes.
     auto packet = MakeUnique<layerscope::Packet>();
     TexturePacket::EffectMask* mask = packet->mutable_texture()->mutable_mask();
-    mask->set_mis3d(aEffect->mIs3D);
     mask->mutable_msize()->set_w(aEffect->mSize.width);
     mask->mutable_msize()->set_h(aEffect->mSize.height);
     auto element = reinterpret_cast<const Float *>(&(aEffect->mMaskTransform));
     for (int i = 0; i < 16; i++) {
         mask->mutable_mmasktransform()->add_m(*element++);
     }
 
     SendTextureSource(aGLContext, aLayerRef, source, false, true, Move(packet));
--- a/gfx/layers/composite/CompositableHost.cpp
+++ b/gfx/layers/composite/CompositableHost.cpp
@@ -143,18 +143,17 @@ void
 CompositableHost::SetCompositor(Compositor* aCompositor)
 {
   MOZ_ASSERT(aCompositor);
   mCompositor = aCompositor;
 }
 
 bool
 CompositableHost::AddMaskEffect(EffectChain& aEffects,
-                                const gfx::Matrix4x4& aTransform,
-                                bool aIs3D)
+                                const gfx::Matrix4x4& aTransform)
 {
   CompositableTextureSourceRef source;
   RefPtr<TextureHost> host = GetAsTextureHost();
 
   if (!host) {
     NS_WARNING("Using compositable with no valid TextureHost as mask");
     return false;
   }
@@ -169,17 +168,16 @@ CompositableHost::AddMaskEffect(EffectCh
     host->Unlock();
     return false;
   }
   MOZ_ASSERT(source);
 
   RefPtr<EffectMask> effect = new EffectMask(source,
                                              source->GetSize(),
                                              aTransform);
-  effect->mIs3D = aIs3D;
   aEffects.mSecondaryEffects[EffectTypes::MASK] = effect;
   return true;
 }
 
 void
 CompositableHost::RemoveMaskEffect()
 {
   RefPtr<TextureHost> host = GetAsTextureHost();
--- a/gfx/layers/composite/CompositableHost.h
+++ b/gfx/layers/composite/CompositableHost.h
@@ -116,18 +116,17 @@ public:
     return gfx::IntSize();
   }
 
   /**
    * Adds a mask effect using this texture as the mask, if possible.
    * @return true if the effect was added, false otherwise.
    */
   bool AddMaskEffect(EffectChain& aEffects,
-                     const gfx::Matrix4x4& aTransform,
-                     bool aIs3D = false);
+                     const gfx::Matrix4x4& aTransform);
 
   void RemoveMaskEffect();
 
   Compositor* GetCompositor() const
   {
     return mCompositor;
   }
 
--- a/gfx/layers/composite/LayerManagerComposite.cpp
+++ b/gfx/layers/composite/LayerManagerComposite.cpp
@@ -1461,32 +1461,31 @@ LayerManagerComposite::CreateRefLayerCom
   if (LayerManagerComposite::mDestroyed) {
     NS_WARNING("Call on destroyed layer manager");
     return nullptr;
   }
   return RefPtr<RefLayerComposite>(new RefLayerComposite(this)).forget();
 }
 
 LayerManagerComposite::AutoAddMaskEffect::AutoAddMaskEffect(Layer* aMaskLayer,
-                                                            EffectChain& aEffects,
-                                                            bool aIs3D)
+                                                            EffectChain& aEffects)
   : mCompositable(nullptr), mFailed(false)
 {
   if (!aMaskLayer) {
     return;
   }
 
   mCompositable = ToLayerComposite(aMaskLayer)->GetCompositableHost();
   if (!mCompositable) {
     NS_WARNING("Mask layer with no compositable host");
     mFailed = true;
     return;
   }
 
-  if (!mCompositable->AddMaskEffect(aEffects, aMaskLayer->GetEffectiveTransform(), aIs3D)) {
+  if (!mCompositable->AddMaskEffect(aEffects, aMaskLayer->GetEffectiveTransform())) {
     mCompositable = nullptr;
     mFailed = true;
   }
 }
 
 LayerManagerComposite::AutoAddMaskEffect::~AutoAddMaskEffect()
 {
   if (!mCompositable) {
--- a/gfx/layers/composite/LayerManagerComposite.h
+++ b/gfx/layers/composite/LayerManagerComposite.h
@@ -183,18 +183,17 @@ public:
   /**
    * RAII helper class to add a mask effect with the compositable from aMaskLayer
    * to the EffectChain aEffect and notify the compositable when we are done.
    */
   class AutoAddMaskEffect
   {
   public:
     AutoAddMaskEffect(Layer* aMaskLayer,
-                      EffectChain& aEffect,
-                      bool aIs3D = false);
+                      EffectChain& aEffect);
     ~AutoAddMaskEffect();
 
     bool Failed() const { return mFailed; }
   private:
     CompositableHost* mCompositable;
     bool mFailed;
   };
 
@@ -577,26 +576,21 @@ RenderWithAllMasks(Layer* aLayer, Compos
   } else if (ancestorMaskLayerCount > 0) {
     firstMask = aLayer->GetAncestorMaskLayerAt(0);
     maskLayerCount = ancestorMaskLayerCount;
     nextAncestorMaskLayer = 1;
   } else {
     // no mask layers at all
   }
 
-  bool firstMaskIs3D = false;
-  if (ContainerLayer* container = aLayer->AsContainerLayer()) {
-    firstMaskIs3D = !container->GetTransform().CanDraw2D();
-  }
-
   if (maskLayerCount <= 1) {
     // This is the common case. Render in one pass and return.
     EffectChain effectChain(aLayer);
     LayerManagerComposite::AutoAddMaskEffect
-      autoMaskEffect(firstMask, effectChain, firstMaskIs3D);
+      autoMaskEffect(firstMask, effectChain);
     aLayer->AsLayerComposite()->AddBlendModeEffect(effectChain);
     aRenderCallback(effectChain, gfx::Rect(aClipRect));
     return;
   }
 
   // We have multiple mask layers.
   // We split our list of mask layers into three parts:
   //  (1) The first mask
@@ -625,17 +619,17 @@ RenderWithAllMasks(Layer* aLayer, Compos
     return;
   }
 
   // Render the source while applying the first mask.
   aCompositor->SetRenderTarget(firstTarget);
   {
     EffectChain firstEffectChain(aLayer);
     LayerManagerComposite::AutoAddMaskEffect
-      firstMaskEffect(firstMask, firstEffectChain, firstMaskIs3D);
+      firstMaskEffect(firstMask, firstEffectChain);
     aRenderCallback(firstEffectChain, gfx::Rect(aClipRect - surfaceRect.TopLeft()));
     // firstTarget now contains the transformed source with the first mask and
     // opacity already applied.
   }
 
   // Apply the intermediate masks.
   gfx::Rect intermediateClip(surfaceRect - surfaceRect.TopLeft());
   RefPtr<CompositingRenderTarget> previousTarget = firstTarget;
--- a/gfx/layers/d3d11/BlendShaderConstants.h
+++ b/gfx/layers/d3d11/BlendShaderConstants.h
@@ -9,18 +9,17 @@
 // These constants are shared between CompositorD3D11 and the blend pixel shader.
 #define PS_LAYER_RGB          0
 #define PS_LAYER_RGBA         1
 #define PS_LAYER_YCBCR        2
 #define PS_LAYER_COLOR        3
 
 // These must be in the same order as the Mask enum.
 #define PS_MASK_NONE         0
-#define PS_MASK_2D           1
-#define PS_MASK_3D           2
+#define PS_MASK              1
 
 // These must be in the same order as CompositionOp.
 #define PS_BLEND_MULTIPLY    0
 #define PS_BLEND_SCREEN      1
 #define PS_BLEND_OVERLAY     2
 #define PS_BLEND_DARKEN      3
 #define PS_BLEND_LIGHTEN     4
 #define PS_BLEND_COLOR_DODGE 5
@@ -45,17 +44,16 @@ BlendOpToShaderConstant(gfx::Composition
 
 } // namespace layers
 } // namespace mozilla
 
 // Sanity checks.
 namespace {
 static inline void BlendShaderConstantAsserts() {
   static_assert(PS_MASK_NONE == int(mozilla::layers::MaskType::MaskNone), "shader constant is out of sync");
-  static_assert(PS_MASK_2D == int(mozilla::layers::MaskType::Mask2d), "shader constant is out of sync");
-  static_assert(PS_MASK_3D == int(mozilla::layers::MaskType::Mask3d), "shader constant is out of sync");
+  static_assert(PS_MASK == int(mozilla::layers::MaskType::Mask), "shader constant is out of sync");
   static_assert(int(mozilla::gfx::CompositionOp::OP_LUMINOSITY) - int(mozilla::gfx::CompositionOp::OP_MULTIPLY) == 14,
                 "shader constants are out of sync");
 }
 } // anonymous namespace
 #endif
 
 #endif // MOZILLA_GFX_LAYERS_D3D11_BLENDSHADERCONSTANTS_H_
--- a/gfx/layers/d3d11/CompositorD3D11.cpp
+++ b/gfx/layers/d3d11/CompositorD3D11.cpp
@@ -896,22 +896,17 @@ CompositorD3D11::DrawQuad(const gfx::Rec
 
   mPSConstants.layerOpacity[0] = aOpacity;
 
   bool restoreBlendMode = false;
 
   MaskType maskType = MaskType::MaskNone;
 
   if (aEffectChain.mSecondaryEffects[EffectTypes::MASK]) {
-    if (aTransform.Is2D()) {
-      maskType = MaskType::Mask2d;
-    } else {
-      MOZ_ASSERT(aEffectChain.mPrimaryEffect->mType == EffectTypes::RGB);
-      maskType = MaskType::Mask3d;
-    }
+    maskType = MaskType::Mask;
 
     EffectMask* maskEffect =
       static_cast<EffectMask*>(aEffectChain.mSecondaryEffects[EffectTypes::MASK].get());
     TextureSourceD3D11* source = maskEffect->mMaskTexture->AsSourceD3D11();
 
     if (!source) {
       NS_WARNING("Missing texture source!");
       return;
@@ -1485,44 +1480,41 @@ DeviceAttachmentsD3D11::InitSyncObject()
   return true;
 }
 
 bool
 DeviceAttachmentsD3D11::InitBlendShaders()
 {
   if (!mVSQuadBlendShader[MaskType::MaskNone]) {
     InitVertexShader(sLayerQuadBlendVS, mVSQuadBlendShader, MaskType::MaskNone);
-    InitVertexShader(sLayerQuadBlendMaskVS, mVSQuadBlendShader, MaskType::Mask2d);
-    InitVertexShader(sLayerQuadBlendMask3DVS, mVSQuadBlendShader, MaskType::Mask3d);
+    InitVertexShader(sLayerQuadBlendMaskVS, mVSQuadBlendShader, MaskType::Mask);
   }
   if (!mBlendShader[MaskType::MaskNone]) {
     InitPixelShader(sBlendShader, mBlendShader, MaskType::MaskNone);
   }
   return mInitOkay;
 }
 
 bool
 DeviceAttachmentsD3D11::CreateShaders()
 {
   InitVertexShader(sLayerQuadVS, mVSQuadShader, MaskType::MaskNone);
-  InitVertexShader(sLayerQuadMaskVS, mVSQuadShader, MaskType::Mask2d);
-  InitVertexShader(sLayerQuadMask3DVS, mVSQuadShader, MaskType::Mask3d);
+  InitVertexShader(sLayerQuadMaskVS, mVSQuadShader, MaskType::Mask);
 
   InitPixelShader(sSolidColorShader, mSolidColorShader, MaskType::MaskNone);
-  InitPixelShader(sSolidColorShaderMask, mSolidColorShader, MaskType::Mask2d);
+  InitPixelShader(sSolidColorShaderMask, mSolidColorShader, MaskType::Mask);
   InitPixelShader(sRGBShader, mRGBShader, MaskType::MaskNone);
-  InitPixelShader(sRGBShaderMask, mRGBShader, MaskType::Mask2d);
+  InitPixelShader(sRGBShaderMask, mRGBShader, MaskType::Mask);
   InitPixelShader(sRGBAShader, mRGBAShader, MaskType::MaskNone);
-  InitPixelShader(sRGBAShaderMask, mRGBAShader, MaskType::Mask2d);
-  InitPixelShader(sRGBAShaderMask3D, mRGBAShader, MaskType::Mask3d);
+  InitPixelShader(sRGBAShaderMask, mRGBAShader, MaskType::Mask);
   InitPixelShader(sYCbCrShader, mYCbCrShader, MaskType::MaskNone);
-  InitPixelShader(sYCbCrShaderMask, mYCbCrShader, MaskType::Mask2d);
+  InitPixelShader(sYCbCrShaderMask, mYCbCrShader, MaskType::Mask);
   if (gfxPrefs::ComponentAlphaEnabled()) {
     InitPixelShader(sComponentAlphaShader, mComponentAlphaShader, MaskType::MaskNone);
-    InitPixelShader(sComponentAlphaShaderMask, mComponentAlphaShader, MaskType::Mask2d);
+    InitPixelShader(sComponentAlphaShaderMask, mComponentAlphaShader, MaskType::Mask);
   }
 
   InitVertexShader(sOculus050VRDistortionVS, getter_AddRefs(mVRDistortionVS[VRHMDType::Oculus050]));
   InitPixelShader(sOculus050VRDistortionPS, getter_AddRefs(mVRDistortionPS[VRHMDType::Oculus050]));
 
   // These are shared
   // XXX rename Oculus050 shaders to something more generic
   mVRDistortionVS[VRHMDType::Cardboard] = mVRDistortionVS[VRHMDType::Oculus050];
--- a/gfx/layers/d3d11/CompositorD3D11.hlsl
+++ b/gfx/layers/d3d11/CompositorD3D11.hlsl
@@ -44,22 +44,16 @@ struct VS_INPUT {
 struct VS_OUTPUT {
   float4 vPosition : SV_Position;
   float2 vTexCoords : TEXCOORD0;
 };
 
 struct VS_MASK_OUTPUT {
   float4 vPosition : SV_Position;
   float2 vTexCoords : TEXCOORD0;
-  float2 vMaskCoords : TEXCOORD1;
-};
-
-struct VS_MASK_3D_OUTPUT {
-  float4 vPosition : SV_Position;
-  float2 vTexCoords : TEXCOORD0;
   float3 vMaskCoords : TEXCOORD1;
 };
 
 // Combined struct for the mix-blend compatible vertex shaders.
 struct VS_BLEND_OUTPUT {
   float4 vPosition : SV_Position;
   float2 vTexCoords : TEXCOORD0;
   float3 vMaskCoords : TEXCOORD1;
@@ -148,33 +142,16 @@ VS_MASK_OUTPUT LayerQuadMaskVS(const VS_
   VS_MASK_OUTPUT outp;
   float4 position = TransformedPosition(aVertex.vPosition);
 
   outp.vPosition = VertexPosition(position);
 
   // calculate the position on the mask texture
   outp.vMaskCoords.x = (position.x - vMaskQuad.x) / vMaskQuad.z;
   outp.vMaskCoords.y = (position.y - vMaskQuad.y) / vMaskQuad.w;
-
-  outp.vTexCoords = TexCoords(aVertex.vPosition.xy);
-
-  return outp;
-}
-
-VS_MASK_3D_OUTPUT LayerQuadMask3DVS(const VS_INPUT aVertex)
-{
-  VS_MASK_3D_OUTPUT outp;
-  float4 position = TransformedPosition(aVertex.vPosition);
-
-  outp.vPosition = VertexPosition(position);
-
-  // calculate the position on the mask texture
-  position.xyz /= position.w;
-  outp.vMaskCoords.x = (position.x - vMaskQuad.x) / vMaskQuad.z;
-  outp.vMaskCoords.y = (position.y - vMaskQuad.y) / vMaskQuad.w;
   // We use the w coord to do non-perspective correct interpolation:
   // the quad might be transformed in 3D, in which case it will have some
   // perspective. The graphics card will do perspective-correct interpolation
   // of the texture, but our mask is already transformed and so we require
   // linear interpolation. Therefore, we must correct the interpolation
   // ourselves, we do this by multiplying all coords by w here, and dividing by
   // w in the pixel shader (post-interpolation), we pass w in outp.vMaskCoords.z.
   // See http://en.wikipedia.org/wiki/Texture_mapping#Perspective_correctness
@@ -183,35 +160,28 @@ VS_MASK_3D_OUTPUT LayerQuadMask3DVS(cons
 
   outp.vTexCoords = TexCoords(aVertex.vPosition.xy);
 
   return outp;
 }
 
 float4 RGBAShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
 {
-  float2 maskCoords = aVertex.vMaskCoords;
+  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
   float mask = tMask.Sample(sSampler, maskCoords).r;
   return tRGB.Sample(sSampler, aVertex.vTexCoords) * fLayerOpacity * mask;
 }
 
-float4 RGBAShaderMask3D(const VS_MASK_3D_OUTPUT aVertex) : SV_Target
-{
-  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
-  float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).r;
-  return tRGB.Sample(sSampler, aVertex.vTexCoords) * fLayerOpacity * mask;
-}
-
 float4 RGBShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
 {
   float4 result;
   result = tRGB.Sample(sSampler, aVertex.vTexCoords) * fLayerOpacity;
   result.a = fLayerOpacity;
 
-  float2 maskCoords = aVertex.vMaskCoords;
+  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
   float mask = tMask.Sample(sSampler, maskCoords).r;
   return result * mask;
 }
 
 /* From Rec601:
 [R]   [1.1643835616438356,  0.0,                 1.5960267857142858]      [ Y -  16]
 [G] = [1.1643835616438358, -0.3917622900949137, -0.8129676472377708]    x [Cb - 128]
 [B]   [1.1643835616438356,  2.017232142857143,   8.862867620416422e-17]   [Cr - 128]
@@ -235,41 +205,41 @@ float4 CalculateYCbCrColor(const float2 
   color.b = yuv.g * 1.16438 + yuv.b * 2.01723;
   color.a = 1.0f;
 
   return color;
 }
 
 float4 YCbCrShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
 {
-  float2 maskCoords = aVertex.vMaskCoords;
+  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
   float mask = tMask.Sample(sSampler, maskCoords).r;
 
   return CalculateYCbCrColor(aVertex.vTexCoords) * fLayerOpacity * mask;
 }
 
 PS_OUTPUT ComponentAlphaShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
 {
   PS_OUTPUT result;
 
   result.vSrc = tRGB.Sample(sSampler, aVertex.vTexCoords);
   result.vAlpha = 1.0 - tRGBWhite.Sample(sSampler, aVertex.vTexCoords) + result.vSrc;
   result.vSrc.a = result.vAlpha.g;
 
-  float2 maskCoords = aVertex.vMaskCoords;
+  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
   float mask = tMask.Sample(sSampler, maskCoords).r;
   result.vSrc *= fLayerOpacity * mask;
   result.vAlpha *= fLayerOpacity * mask;
 
   return result;
 }
 
 float4 SolidColorShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
 {
-  float2 maskCoords = aVertex.vMaskCoords;
+  float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
   float mask = tMask.Sample(sSampler, maskCoords).r;
   return fLayerColor * mask;
 }
 
 /*
  *  Un-masked versions
  *************************************************************
  */
@@ -323,28 +293,16 @@ VS_BLEND_OUTPUT LayerQuadBlendVS(const V
 
 VS_BLEND_OUTPUT LayerQuadBlendMaskVS(const VS_INPUT aVertex)
 {
   VS_MASK_OUTPUT v = LayerQuadMaskVS(aVertex);
 
   VS_BLEND_OUTPUT o;
   o.vPosition = v.vPosition;
   o.vTexCoords = v.vTexCoords;
-  o.vMaskCoords = float3(v.vMaskCoords, 0);
-  o.vBackdropCoords = BackdropPosition(v.vPosition);
-  return o;
-}
-
-VS_BLEND_OUTPUT LayerQuadBlendMask3DVS(const VS_INPUT aVertex)
-{
-  VS_MASK_3D_OUTPUT v = LayerQuadMask3DVS(aVertex);
-
-  VS_BLEND_OUTPUT o;
-  o.vPosition = v.vPosition;
-  o.vTexCoords = v.vTexCoords;
   o.vMaskCoords = v.vMaskCoords;
   o.vBackdropCoords = BackdropPosition(v.vPosition);
   return o;
 }
 
 // The layer type and mask type are specified as constants. We use these to
 // call the correct pixel shader to determine the source color for blending.
 // Unfortunately this also requires some boilerplate to convert VS_BLEND_OUTPUT
@@ -362,33 +320,26 @@ float4 ComputeBlendSourceColor(const VS_
     } else if (iBlendConfig.x == PS_LAYER_YCBCR) {
       return YCbCrShader(tmp);
     }
     return SolidColorShader(tmp);
   } else if (iBlendConfig.y == PS_MASK_2D) {
     VS_MASK_OUTPUT tmp;
     tmp.vPosition = aVertex.vPosition;
     tmp.vTexCoords = aVertex.vTexCoords;
-    tmp.vMaskCoords = aVertex.vMaskCoords.xy;
+    tmp.vMaskCoords = aVertex.vMaskCoords;
 
     if (iBlendConfig.x == PS_LAYER_RGB) {
       return RGBShaderMask(tmp);
     } else if (iBlendConfig.x == PS_LAYER_RGBA) {
       return RGBAShaderMask(tmp);
     } else if (iBlendConfig.x == PS_LAYER_YCBCR) {
       return YCbCrShaderMask(tmp);
     }
     return SolidColorShaderMask(tmp);
-  } else if (iBlendConfig.y == PS_MASK_3D) {
-    // The only Mask 3D shader is RGBA.
-    VS_MASK_3D_OUTPUT tmp;
-    tmp.vPosition = aVertex.vPosition;
-    tmp.vTexCoords = aVertex.vTexCoords;
-    tmp.vMaskCoords = aVertex.vMaskCoords;
-    return RGBAShaderMask3D(tmp);
   }
 
   return float4(0.0, 0.0, 0.0, 1.0);
 }
 
 float3 ChooseBlendFunc(float3 dest, float3 src)
 {
   [flatten] switch (iBlendConfig.z) {
--- a/gfx/layers/d3d11/CompositorD3D11Shaders.h
+++ b/gfx/layers/d3d11/CompositorD3D11Shaders.h
@@ -1,12 +1,12 @@
 struct ShaderBytes { const void* mData; size_t mLength; };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4x4 mLayerTransform;          // Offset:    0 Size:    64
@@ -20,19 +20,19 @@ struct ShaderBytes { const void* mData; 
 //   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
 //   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // POSITION                 0   xy          0     NONE   float   xy  
@@ -78,17 +78,17 @@ struct ShaderBytes { const void* mData; 
     mad r1, c4, r0.x, r1
     mad r1, c6, r0.z, r1
     mad r0, c7, r0.w, r1
     mad oPos.xy, r0.w, c0, r0
     mov oPos.zw, r0
 
 // approximately 15 instruction slots used
 vs_4_0
-dcl_constantbuffer cb0[11], immediateIndexed
+dcl_constantbuffer CB0[11], immediateIndexed
 dcl_input v0.xy
 dcl_output_siv o0.xyzw, position
 dcl_output o1.xy
 dcl_temps 2
 mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
 mul r1.xyzw, r0.yyyy, cb0[1].xyzw
 mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
 add r0.xyzw, r0.xyzw, cb0[3].xyzw
@@ -101,20 +101,20 @@ mad r1.xyzw, cb0[6].xyzw, r0.zzzz, r1.xy
 mad o0.xyzw, cb0[7].xyzw, r0.wwww, r1.xyzw
 mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 ret 
 // Approximately 13 instruction slots used
 #endif
 
 const BYTE LayerQuadVS[] =
 {
-     68,  88,  66,  67, 141, 229, 
-     88, 115,  31, 138,  49,  78, 
-     16,   5,  63, 222, 239, 137, 
-    213,  18,   1,   0,   0,   0, 
+     68,  88,  66,  67, 112,  85, 
+    167,  74,  15, 232,  29,  85, 
+    162,  39, 212, 215,  65, 102, 
+    169, 150,   1,   0,   0,   0, 
      24,   7,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     152,   1,   0,   0, 160,   3, 
       0,   0,  28,   4,   0,   0, 
     140,   6,   0,   0, 192,   6, 
       0,   0,  65, 111, 110,  57, 
      88,   1,   0,   0,  88,   1, 
       0,   0,   0,   2, 254, 255, 
@@ -377,20 +377,20 @@ const BYTE LayerQuadVS[] =
       1,   0,  19,   0,   1,   0, 
       4,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,  77, 105, 
      99, 114, 111, 115, 111, 102, 
     116,  32,  40,  82,  41,  32, 
      72,  76,  83,  76,  32,  83, 
     104,  97, 100, 101, 114,  32, 
      67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  54,  46,  51, 
-     46,  57,  54,  48,  48,  46, 
-     49,  54,  51,  56,  52,   0, 
-    171, 171,  73,  83,  71,  78, 
+    101, 114,  32,  49,  48,  46, 
+     48,  46,  49,  48,  48,  49, 
+     49,  46,  49,  54,  51,  56, 
+     52,   0,  73,  83,  71,  78, 
      44,   0,   0,   0,   1,   0, 
       0,   0,   8,   0,   0,   0, 
      32,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,   0,   0,   0,   0, 
       0,   0,   3,   3,   0,   0, 
      80,  79,  83,  73,  84,  73, 
      79,  78,   0, 171, 171, 171, 
@@ -408,17 +408,17 @@ const BYTE LayerQuadVS[] =
      95,  80, 111, 115, 105, 116, 
     105, 111, 110,   0,  84,  69, 
      88,  67,  79,  79,  82,  68, 
       0, 171, 171, 171
 };
 ShaderBytes sLayerQuadVS = { LayerQuadVS, sizeof(LayerQuadVS) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16
@@ -432,19 +432,19 @@ ShaderBytes sLayerQuadVS = { LayerQuadVS
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -467,29 +467,29 @@ ShaderBytes sLayerQuadVS = { LayerQuadVS
 //
 // Level9 shader bytecode:
 //
     ps_2_x
     mov oC0, c0
 
 // approximately 1 instruction slot used
 ps_4_0
-dcl_constantbuffer cb0[1], immediateIndexed
+dcl_constantbuffer CB0[1], immediateIndexed
 dcl_output o0.xyzw
 mov o0.xyzw, cb0[0].xyzw
 ret 
 // Approximately 2 instruction slots used
 #endif
 
 const BYTE SolidColorShader[] =
 {
-     68,  88,  66,  67,  46, 104, 
-    157, 133, 222, 110,  60, 127, 
-    132, 226, 126, 208, 247, 164, 
-     42, 238,   1,   0,   0,   0, 
+     68,  88,  66,  67, 232, 227, 
+     42, 205, 188, 244, 239,  58, 
+     34,  67,  23,  11,   8, 108, 
+    224,  50,   1,   0,   0,   0, 
      68,   4,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     132,   0,   0,   0, 204,   0, 
       0,   0,  72,   1,   0,   0, 
     184,   3,   0,   0,  16,   4, 
       0,   0,  65, 111, 110,  57, 
      68,   0,   0,   0,  68,   0, 
       0,   0,   0,   2, 255, 255, 
@@ -631,20 +631,20 @@ const BYTE SolidColorShader[] =
      66,  97,  99, 107, 100, 114, 
     111, 112,  84, 114,  97, 110, 
     115, 102, 111, 114, 109,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78,  80,   0,   0,   0, 
       2,   0,   0,   0,   8,   0, 
       0,   0,  56,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  68,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -662,17 +662,17 @@ const BYTE SolidColorShader[] =
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171
 };
 ShaderBytes sSolidColorShader = { SolidColorShader, sizeof(SolidColorShader) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
@@ -686,21 +686,21 @@ ShaderBytes sSolidColorShader = { SolidC
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -735,35 +735,35 @@ ShaderBytes sSolidColorShader = { SolidC
     dcl_2d s0
     texld r0, t0, s0
     mul r0.xyz, r0, c0.x
     mov r0.w, c0.x
     mov oC0, r0
 
 // approximately 4 instruction slots used (1 texture, 3 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
+dcl_constantbuffer CB0[2], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t0
 dcl_input_ps linear v1.xy
 dcl_output o0.xyzw
 dcl_temps 1
 sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 mul o0.xyz, r0.xyzx, cb0[1].xxxx
 mov o0.w, cb0[1].x
 ret 
 // Approximately 4 instruction slots used
 #endif
 
 const BYTE RGBShader[] =
 {
-     68,  88,  66,  67,  65, 119, 
-     74, 180, 122,  23,  76,  16, 
-    140,  81, 225, 186, 127, 137, 
-     70, 249,   1,   0,   0,   0, 
+     68,  88,  66,  67, 125, 240, 
+    204, 179, 182, 100,  41,   5, 
+      9, 193, 104, 239, 180, 186, 
+    251,   1,   1,   0,   0,   0, 
      76,   5,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     204,   0,   0,   0, 136,   1, 
       0,   0,   4,   2,   0,   0, 
     192,   4,   0,   0,  24,   5, 
       0,   0,  65, 111, 110,  57, 
     140,   0,   0,   0, 140,   0, 
       0,   0,   0,   2, 255, 255, 
@@ -949,20 +949,20 @@ const BYTE RGBShader[] =
      66,  97,  99, 107, 100, 114, 
     111, 112,  84, 114,  97, 110, 
     115, 102, 111, 114, 109,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78,  80,   0,   0,   0, 
       2,   0,   0,   0,   8,   0, 
       0,   0,  56,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  68,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -980,17 +980,17 @@ const BYTE RGBShader[] =
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171
 };
 ShaderBytes sRGBShader = { RGBShader, sizeof(RGBShader) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
@@ -1004,21 +1004,21 @@ ShaderBytes sRGBShader = { RGBShader, si
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -1052,34 +1052,34 @@ ShaderBytes sRGBShader = { RGBShader, si
     dcl t0.xy
     dcl_2d s0
     texld r0, t0, s0
     mul r0, r0, c0.x
     mov oC0, r0
 
 // approximately 3 instruction slots used (1 texture, 2 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
+dcl_constantbuffer CB0[2], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t0
 dcl_input_ps linear v1.xy
 dcl_output o0.xyzw
 dcl_temps 1
 sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 mul o0.xyzw, r0.xyzw, cb0[1].xxxx
 ret 
 // Approximately 3 instruction slots used
 #endif
 
 const BYTE RGBAShader[] =
 {
-     68,  88,  66,  67, 134, 186, 
-    102, 217,  28, 249, 237,  84, 
-     31,  38,   2, 143, 235, 216, 
-    237, 103,   1,   0,   0,   0, 
+     68,  88,  66,  67, 199, 240, 
+    113, 171,  34, 194, 134, 123, 
+    243,  63, 156, 246,   8, 157, 
+     15,  85,   1,   0,   0,   0, 
      40,   5,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     192,   0,   0,   0, 100,   1, 
       0,   0, 224,   1,   0,   0, 
     156,   4,   0,   0, 244,   4, 
       0,   0,  65, 111, 110,  57, 
     128,   0,   0,   0, 128,   0, 
       0,   0,   0,   2, 255, 255, 
@@ -1259,20 +1259,20 @@ const BYTE RGBAShader[] =
      66,  97,  99, 107, 100, 114, 
     111, 112,  84, 114,  97, 110, 
     115, 102, 111, 114, 109,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78,  80,   0,   0,   0, 
       2,   0,   0,   0,   8,   0, 
       0,   0,  56,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  68,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1290,17 +1290,17 @@ const BYTE RGBAShader[] =
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171
 };
 ShaderBytes sRGBAShader = { RGBAShader, sizeof(RGBAShader) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
@@ -1314,22 +1314,22 @@ ShaderBytes sRGBAShader = { RGBAShader, 
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// tRGBWhite                         texture  float4          2d    4        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// tRGBWhite                         texture  float4          2d             t4      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -1373,17 +1373,17 @@ ShaderBytes sRGBAShader = { RGBAShader, 
     mov r0.w, r1.y
     mul r1, r1, c0.x
     mov oC1, r1
     mul r0, r0, c0.x
     mov oC0, r0
 
 // approximately 9 instruction slots used (2 texture, 7 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
+dcl_constantbuffer CB0[2], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t0
 dcl_resource_texture2d (float,float,float,float) t4
 dcl_input_ps linear v1.xy
 dcl_output o0.xyzw
 dcl_output o1.xyzw
 dcl_temps 2
 sample r0.xyzw, v1.xyxx, t4.xyzw, s0
@@ -1394,20 +1394,20 @@ mov r1.w, r0.y
 mul o1.xyzw, r0.xyzw, cb0[1].xxxx
 mul o0.xyzw, r1.xyzw, cb0[1].xxxx
 ret 
 // Approximately 8 instruction slots used
 #endif
 
 const BYTE ComponentAlphaShader[] =
 {
-     68,  88,  66,  67,  70,  65, 
-    219,  11, 235,  82,  64, 151, 
-     37, 101,  86, 144,  19,   4, 
-    125, 155,   1,   0,   0,   0, 
+     68,  88,  66,  67, 207,  79, 
+     99, 143,  94, 253,  50, 234, 
+    183, 114, 100, 130, 114, 218, 
+    230, 139,   1,   0,   0,   0, 
     168,   6,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
      64,   1,   0,   0, 160,   2, 
       0,   0,  28,   3,   0,   0, 
       4,   6,   0,   0,  92,   6, 
       0,   0,  65, 111, 110,  57, 
       0,   1,   0,   0,   0,   1, 
       0,   0,   0,   2, 255, 255, 
@@ -1647,20 +1647,20 @@ const BYTE ComponentAlphaShader[] =
      66,  97,  99, 107, 100, 114, 
     111, 112,  84, 114,  97, 110, 
     115, 102, 111, 114, 109,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78,  80,   0,   0,   0, 
       2,   0,   0,   0,   8,   0, 
       0,   0,  56,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  68,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1682,17 +1682,17 @@ const BYTE ComponentAlphaShader[] =
       3,   0,   0,   0,   1,   0, 
       0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171
 };
 ShaderBytes sComponentAlphaShader = { ComponentAlphaShader, sizeof(ComponentAlphaShader) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
@@ -1706,23 +1706,23 @@ ShaderBytes sComponentAlphaShader = { Co
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tY                                texture  float4          2d    1        1
-// tCb                               texture  float4          2d    2        1
-// tCr                               texture  float4          2d    3        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tY                                texture  float4          2d             t1      1 
+// tCb                               texture  float4          2d             t2      1 
+// tCr                               texture  float4          2d             t3      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -1774,17 +1774,17 @@ ShaderBytes sComponentAlphaShader = { Co
     mul r0.y, r0.y, c2.y
     mad r1.z, r0.x, c2.x, r0.y
     mov r1.w, c2.w
     mul r0, r1, c0.x
     mov oC0, r0
 
 // approximately 15 instruction slots used (3 texture, 12 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
+dcl_constantbuffer CB0[2], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t1
 dcl_resource_texture2d (float,float,float,float) t2
 dcl_resource_texture2d (float,float,float,float) t3
 dcl_input_ps linear v1.xy
 dcl_output o0.xyzw
 dcl_temps 3
 sample r0.xyzw, v1.xyxx, t3.xyzw, s0
@@ -1802,20 +1802,20 @@ mad r1.z, r0.z, l(1.164380), r0.x
 mov r1.w, l(1.000000)
 mul o0.xyzw, r1.xyzw, cb0[1].xxxx
 ret 
 // Approximately 15 instruction slots used
 #endif
 
 const BYTE YCbCrShader[] =
 {
-     68,  88,  66,  67,  17, 182, 
-    131, 145, 148,  37, 135, 136, 
-    214,  75, 157,  57,  87,  83, 
-    119, 226,   1,   0,   0,   0, 
+     68,  88,  66,  67,  38, 102, 
+    184,  10,  33,  16, 211, 116, 
+    233, 219, 255, 155, 108,  20, 
+     81, 243,   1,   0,   0,   0, 
      56,   8,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     220,   1,   0,   0,  44,   4, 
       0,   0, 168,   4,   0,   0, 
     172,   7,   0,   0,   4,   8, 
       0,   0,  65, 111, 110,  57, 
     156,   1,   0,   0, 156,   1, 
       0,   0,   0,   2, 255, 255, 
@@ -2126,20 +2126,20 @@ const BYTE YCbCrShader[] =
      99, 107, 100, 114, 111, 112, 
      84, 114,  97, 110, 115, 102, 
     111, 114, 109,   0,  77, 105, 
      99, 114, 111, 115, 111, 102, 
     116,  32,  40,  82,  41,  32, 
      72,  76,  83,  76,  32,  83, 
     104,  97, 100, 101, 114,  32, 
      67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  54,  46,  51, 
-     46,  57,  54,  48,  48,  46, 
-     49,  54,  51,  56,  52,   0, 
-    171, 171,  73,  83,  71,  78, 
+    101, 114,  32,  49,  48,  46, 
+     48,  46,  49,  48,  48,  49, 
+     49,  46,  49,  54,  51,  56, 
+     52,   0,  73,  83,  71,  78, 
      80,   0,   0,   0,   2,   0, 
       0,   0,   8,   0,   0,   0, 
      56,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
      68,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2157,17 +2157,17 @@ const BYTE YCbCrShader[] =
       0,   0,   0,   0,   0,   0, 
      15,   0,   0,   0,  83,  86, 
      95,  84,  97, 114, 103, 101, 
     116,   0, 171, 171
 };
 ShaderBytes sYCbCrShader = { YCbCrShader, sizeof(YCbCrShader) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4x4 mLayerTransform;          // Offset:    0 Size:    64
@@ -2181,474 +2181,19 @@ ShaderBytes sYCbCrShader = { YCbCrShader
 //   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
 //   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// POSITION                 0   xy          0     NONE   float   xy  
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float   xyzw
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1     zw        1     NONE   float     zw
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c1         cb0             0         2  ( FLT, FLT, FLT, FLT)
-// c3         cb0             3         9  ( FLT, FLT, FLT, FLT)
-//
-//
-// Runtime generated constant mappings:
-//
-// Target Reg                               Constant Description
-// ---------- --------------------------------------------------
-// c0                              Vertex Shader position offset
-//
-//
-// Level9 shader bytecode:
-//
-    vs_2_x
-    dcl_texcoord v0
-    rcp r0.x, c11.z
-    mad r0.yz, v0.xxyw, c10.xzww, c10.xxyw
-    mul r1, r0.z, c2
-    mad r1, c1, r0.y, r1
-    add r1, r1, c3
-    add r0.yz, r1.xxyw, -c11.xxyw
-    mul oT0.w, r0.x, r0.y
-    rcp r0.x, c11.w
-    mul oT0.z, r0.x, r0.z
-    mad oT0.xy, v0, c9.zwzw, c9
-    rcp r0.x, r1.w
-    mul r1.xyz, r0.x, r1
-    add r0, r1, -c8
-    mul r0.xyz, r0.w, r0
-    mul r1, r0.y, c5
-    mad r1, c4, r0.x, r1
-    mad r1, c6, r0.z, r1
-    mad r0, c7, r0.w, r1
-    mad oPos.xy, r0.w, c0, r0
-    mov oPos.zw, r0
-
-// approximately 20 instruction slots used
-vs_4_0
-dcl_constantbuffer cb0[12], immediateIndexed
-dcl_input v0.xy
-dcl_output_siv o0.xyzw, position
-dcl_output o1.xy
-dcl_output o1.zw
-dcl_temps 2
-mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
-mul r1.xyzw, r0.yyyy, cb0[1].xyzw
-mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
-add r0.xyzw, r0.xyzw, cb0[3].xyzw
-div r1.xyz, r0.xyzx, r0.wwww
-mov r1.w, r0.w
-add r0.xy, r0.xyxx, -cb0[11].xyxx
-div o1.zw, r0.xxxy, cb0[11].zzzw
-add r0.xyzw, r1.xyzw, -cb0[8].xyzw
-mul r0.xyz, r0.wwww, r0.xyzx
-mul r1.xyzw, r0.yyyy, cb0[5].xyzw
-mad r1.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
-mad r1.xyzw, cb0[6].xyzw, r0.zzzz, r1.xyzw
-mad o0.xyzw, cb0[7].xyzw, r0.wwww, r1.xyzw
-mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
-ret 
-// Approximately 16 instruction slots used
-#endif
-
-const BYTE LayerQuadMaskVS[] =
-{
-     68,  88,  66,  67, 117, 253, 
-    188, 162, 139, 208,  50, 178, 
-     49,   2, 251, 153, 144, 237, 
-    178, 212,   1,   0,   0,   0, 
-    220,   7,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    224,   1,   0,   0,  76,   4, 
-      0,   0, 200,   4,   0,   0, 
-     56,   7,   0,   0, 108,   7, 
-      0,   0,  65, 111, 110,  57, 
-    160,   1,   0,   0, 160,   1, 
-      0,   0,   0,   2, 254, 255, 
-     96,   1,   0,   0,  64,   0, 
-      0,   0,   2,   0,  36,   0, 
-      0,   0,  60,   0,   0,   0, 
-     60,   0,   0,   0,  36,   0, 
-      1,   0,  60,   0,   0,   0, 
-      0,   0,   2,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   9,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   2, 254, 255, 
-     31,   0,   0,   2,   5,   0, 
-      0, 128,   0,   0,  15, 144, 
-      6,   0,   0,   2,   0,   0, 
-      1, 128,  11,   0, 170, 160, 
-      4,   0,   0,   4,   0,   0, 
-      6, 128,   0,   0, 208, 144, 
-     10,   0, 248, 160,  10,   0, 
-    208, 160,   5,   0,   0,   3, 
-      1,   0,  15, 128,   0,   0, 
-    170, 128,   2,   0, 228, 160, 
-      4,   0,   0,   4,   1,   0, 
-     15, 128,   1,   0, 228, 160, 
-      0,   0,  85, 128,   1,   0, 
-    228, 128,   2,   0,   0,   3, 
-      1,   0,  15, 128,   1,   0, 
-    228, 128,   3,   0, 228, 160, 
-      2,   0,   0,   3,   0,   0, 
-      6, 128,   1,   0, 208, 128, 
-     11,   0, 208, 161,   5,   0, 
-      0,   3,   0,   0,   8, 224, 
-      0,   0,   0, 128,   0,   0, 
-     85, 128,   6,   0,   0,   2, 
-      0,   0,   1, 128,  11,   0, 
-    255, 160,   5,   0,   0,   3, 
-      0,   0,   4, 224,   0,   0, 
-      0, 128,   0,   0, 170, 128, 
-      4,   0,   0,   4,   0,   0, 
-      3, 224,   0,   0, 228, 144, 
-      9,   0, 238, 160,   9,   0, 
-    228, 160,   6,   0,   0,   2, 
-      0,   0,   1, 128,   1,   0, 
-    255, 128,   5,   0,   0,   3, 
-      1,   0,   7, 128,   0,   0, 
-      0, 128,   1,   0, 228, 128, 
-      2,   0,   0,   3,   0,   0, 
-     15, 128,   1,   0, 228, 128, 
-      8,   0, 228, 161,   5,   0, 
-      0,   3,   0,   0,   7, 128, 
-      0,   0, 255, 128,   0,   0, 
-    228, 128,   5,   0,   0,   3, 
-      1,   0,  15, 128,   0,   0, 
-     85, 128,   5,   0, 228, 160, 
-      4,   0,   0,   4,   1,   0, 
-     15, 128,   4,   0, 228, 160, 
-      0,   0,   0, 128,   1,   0, 
-    228, 128,   4,   0,   0,   4, 
-      1,   0,  15, 128,   6,   0, 
-    228, 160,   0,   0, 170, 128, 
-      1,   0, 228, 128,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      7,   0, 228, 160,   0,   0, 
-    255, 128,   1,   0, 228, 128, 
-      4,   0,   0,   4,   0,   0, 
-      3, 192,   0,   0, 255, 128, 
-      0,   0, 228, 160,   0,   0, 
-    228, 128,   1,   0,   0,   2, 
-      0,   0,  12, 192,   0,   0, 
-    228, 128, 255, 255,   0,   0, 
-     83,  72,  68,  82, 100,   2, 
-      0,   0,  64,   0,   1,   0, 
-    153,   0,   0,   0,  89,   0, 
-      0,   4,  70, 142,  32,   0, 
-      0,   0,   0,   0,  12,   0, 
-      0,   0,  95,   0,   0,   3, 
-     50,  16,  16,   0,   0,   0, 
-      0,   0, 103,   0,   0,   4, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-    101,   0,   0,   3,  50,  32, 
-     16,   0,   1,   0,   0,   0, 
-    101,   0,   0,   3, 194,  32, 
-     16,   0,   1,   0,   0,   0, 
-    104,   0,   0,   2,   2,   0, 
-      0,   0,  50,   0,   0,  11, 
-     50,   0,  16,   0,   0,   0, 
-      0,   0,  70,  16,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-     10,   0,   0,   0,  70, 128, 
-     32,   0,   0,   0,   0,   0, 
-     10,   0,   0,   0,  56,   0, 
-      0,   8, 242,   0,  16,   0, 
-      1,   0,   0,   0,  86,   5, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      6,   0,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   8, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-     14,   0,   0,   7, 114,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0, 246,  15,  16,   0, 
-      0,   0,   0,   0,  54,   0, 
-      0,   5, 130,   0,  16,   0, 
-      1,   0,   0,   0,  58,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   9,  50,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   0,  16,   0,   0,   0, 
-      0,   0,  70, 128,  32, 128, 
-     65,   0,   0,   0,   0,   0, 
-      0,   0,  11,   0,   0,   0, 
-     14,   0,   0,   8, 194,  32, 
-     16,   0,   1,   0,   0,   0, 
-      6,   4,  16,   0,   0,   0, 
-      0,   0, 166, 142,  32,   0, 
-      0,   0,   0,   0,  11,   0, 
-      0,   0,   0,   0,   0,   9, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  70, 142, 
-     32, 128,  65,   0,   0,   0, 
-      0,   0,   0,   0,   8,   0, 
-      0,   0,  56,   0,   0,   7, 
-    114,   0,  16,   0,   0,   0, 
-      0,   0, 246,  15,  16,   0, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,   5,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   5,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-    166,  10,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  50,   0, 
-      0,  10, 242,  32,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      7,   0,   0,   0, 246,  15, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  50,   0,   0,  11, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  70, 128, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  62,   0, 
-      0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,  14,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70, 104,   2, 
-      0,   0,   1,   0,   0,   0, 
-     72,   0,   0,   0,   1,   0, 
-      0,   0,  28,   0,   0,   0, 
-      0,   4, 254, 255,   0,   1, 
-      0,   0,  52,   2,   0,   0, 
-     60,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,  36,  71, 108, 111, 
-     98,  97, 108, 115,   0, 171, 
-    171, 171,  60,   0,   0,   0, 
-     10,   0,   0,   0,  96,   0, 
-      0,   0,  48,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  80,   1,   0,   0, 
-      0,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 112,   1,   0,   0, 
-     64,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 124,   1,   0,   0, 
-    128,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 160,   1,   0,   0, 
-    144,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 192,   1,   0,   0, 
-    160,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 203,   1,   0,   0, 
-    176,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 213,   1,   0,   0, 
-    192,   0,   0,   0,  64,   0, 
-      0,   0,   0,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 232,   1,   0,   0, 
-      0,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 244,   1,   0,   0, 
-     16,   1,   0,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   2,   0,   0,   0,   0, 
-      0,   0,  20,   2,   0,   0, 
-     32,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-     36,   2,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
-      1,   0,   3,   0,   1,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 118,  84, 
-    101, 120, 116, 117, 114, 101, 
-     67, 111, 111, 114, 100, 115, 
-      0, 171,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    118,  76,  97, 121, 101, 114, 
-     81, 117,  97, 100,   0, 118, 
-     77,  97, 115, 107,  81, 117, 
-     97, 100,   0, 109,  66,  97, 
-     99, 107, 100, 114, 111, 112, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0, 102,  76, 
-     97, 121, 101, 114,  67, 111, 
-    108, 111, 114,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  54,  46,  51,  46,  57, 
-     54,  48,  48,  46,  49,  54, 
-     51,  56,  52,   0, 171, 171, 
-     73,  83,  71,  78,  44,   0, 
-      0,   0,   1,   0,   0,   0, 
-      8,   0,   0,   0,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   3,   0,   0,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
-      0, 171, 171, 171,  79,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,  12, 
-      0,   0,  92,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,   3, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171
-};
-ShaderBytes sLayerQuadMaskVS = { LayerQuadMaskVS, sizeof(LayerQuadMaskVS) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4x4 mLayerTransform;          // Offset:    0 Size:    64
-//   float4x4 mProjection;              // Offset:   64 Size:    64
-//   float4 vRenderTargetOffset;        // Offset:  128 Size:    16
-//   float4 vTextureCoords;             // Offset:  144 Size:    16
-//   float4 vLayerQuad;                 // Offset:  160 Size:    16
-//   float4 vMaskQuad;                  // Offset:  176 Size:    16
-//   float4x4 mBackdropTransform;       // Offset:  192 Size:    64 [unused]
-//   float4 fLayerColor;                // Offset:  256 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
-//   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // POSITION                 0   xy          0     NONE   float   xy  
@@ -2684,76 +2229,77 @@ ShaderBytes sLayerQuadMaskVS = { LayerQu
     def c12, 1, 0, 0, 0
     dcl_texcoord v0
     mov r0.z, c12.x
     rcp r0.w, c11.z
     mad r1.xy, v0, c10.zwzw, c10
     mul r2, r1.y, c2
     mad r1, c1, r1.x, r2
     add r1, r1, c3
-    rcp r2.x, r1.w
-    mad r2.yz, r1.xxyw, r2.x, -c11.xxyw
-    mul r1.xyz, r1, r2.x
-    mul r0.x, r0.w, r2.y
+    add r2.xy, r1, -c11
+    mul r0.x, r0.w, r2.x
     rcp r0.w, c11.w
-    mul r0.y, r0.w, r2.z
+    mul r0.y, r0.w, r2.y
     mul oT1.xyz, r0, r1.w
+    mad oT0.xy, v0, c9.zwzw, c9
+    rcp r0.x, r1.w
+    mul r1.xyz, r0.x, r1
     add r0, r1, -c8
-    mad oT0.xy, v0, c9.zwzw, c9
     mul r0.xyz, r0.w, r0
     mul r1, r0.y, c5
     mad r1, c4, r0.x, r1
     mad r1, c6, r0.z, r1
     mad r0, c7, r0.w, r1
     mad oPos.xy, r0.w, c0, r0
     mov oPos.zw, r0
 
 // approximately 22 instruction slots used
 vs_4_0
-dcl_constantbuffer cb0[12], immediateIndexed
+dcl_constantbuffer CB0[12], immediateIndexed
 dcl_input v0.xy
 dcl_output_siv o0.xyzw, position
 dcl_output o1.xy
 dcl_output o2.xyz
-dcl_temps 3
+dcl_temps 4
 mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
 mul r1.xyzw, r0.yyyy, cb0[1].xyzw
 mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
 add r0.xyzw, r0.xyzw, cb0[3].xyzw
-div r0.xyz, r0.xyzx, r0.wwww
-add r1.xyzw, r0.xyzw, -cb0[8].xyzw
+div r1.xyz, r0.xyzx, r0.wwww
+mov r1.w, r0.w
+add r2.xyzw, r1.xyzw, -cb0[8].xyzw
+mul r1.xyz, r2.wwww, r2.xyzx
+mul r3.xyzw, r1.yyyy, cb0[5].xyzw
+mad r3.xyzw, cb0[4].xyzw, r1.xxxx, r3.xyzw
+mad r3.xyzw, cb0[6].xyzw, r1.zzzz, r3.xyzw
+mad o0.xyzw, cb0[7].xyzw, r2.wwww, r3.xyzw
+mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 add r0.xy, r0.xyxx, -cb0[11].xyxx
 div r0.xy, r0.xyxx, cb0[11].zwzz
-mul r1.xyz, r1.wwww, r1.xyzx
-mul r2.xyzw, r1.yyyy, cb0[5].xyzw
-mad r2.xyzw, cb0[4].xyzw, r1.xxxx, r2.xyzw
-mad r2.xyzw, cb0[6].xyzw, r1.zzzz, r2.xyzw
-mad o0.xyzw, cb0[7].xyzw, r1.wwww, r2.xyzw
-mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 mov r0.z, l(1.000000)
-mul o2.xyz, r0.wwww, r0.xyzx
+mul o2.xyz, r1.wwww, r0.xyzx
 ret 
-// Approximately 17 instruction slots used
+// Approximately 18 instruction slots used
 #endif
 
-const BYTE LayerQuadMask3DVS[] =
+const BYTE LayerQuadMaskVS[] =
 {
-     68,  88,  66,  67, 124,  99, 
-    104,  27,   0, 223, 159,   8, 
-    231,  86, 180, 224,  50, 178, 
-     27, 163,   1,   0,   0,   0, 
-     48,   8,   0,   0,   6,   0, 
+     68,  88,  66,  67, 170, 122, 
+    113,  58, 123,  23, 243, 241, 
+    143, 157, 226, 223, 154,  53, 
+    167, 168,   1,   0,   0,   0, 
+     64,   8,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-     24,   2,   0,   0, 160,   4, 
-      0,   0,  28,   5,   0,   0, 
-    140,   7,   0,   0, 192,   7, 
+     20,   2,   0,   0, 176,   4, 
+      0,   0,  44,   5,   0,   0, 
+    156,   7,   0,   0, 208,   7, 
       0,   0,  65, 111, 110,  57, 
-    216,   1,   0,   0, 216,   1, 
+    212,   1,   0,   0, 212,   1, 
       0,   0,   0,   2, 254, 255, 
-    152,   1,   0,   0,  64,   0, 
+    148,   1,   0,   0,  64,   0, 
       0,   0,   2,   0,  36,   0, 
       0,   0,  60,   0,   0,   0, 
      60,   0,   0,   0,  36,   0, 
       1,   0,  60,   0,   0,   0, 
       0,   0,   2,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,   9,   0,   3,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2775,327 +2321,329 @@ const BYTE LayerQuadMask3DVS[] =
       2,   0,  15, 128,   1,   0, 
      85, 128,   2,   0, 228, 160, 
       4,   0,   0,   4,   1,   0, 
      15, 128,   1,   0, 228, 160, 
       1,   0,   0, 128,   2,   0, 
     228, 128,   2,   0,   0,   3, 
       1,   0,  15, 128,   1,   0, 
     228, 128,   3,   0, 228, 160, 
-      6,   0,   0,   2,   2,   0, 
-      1, 128,   1,   0, 255, 128, 
-      4,   0,   0,   4,   2,   0, 
-      6, 128,   1,   0, 208, 128, 
-      2,   0,   0, 128,  11,   0, 
-    208, 161,   5,   0,   0,   3, 
-      1,   0,   7, 128,   1,   0, 
-    228, 128,   2,   0,   0, 128, 
-      5,   0,   0,   3,   0,   0, 
-      1, 128,   0,   0, 255, 128, 
-      2,   0,  85, 128,   6,   0, 
-      0,   2,   0,   0,   8, 128, 
-     11,   0, 255, 160,   5,   0, 
-      0,   3,   0,   0,   2, 128, 
+      2,   0,   0,   3,   2,   0, 
+      3, 128,   1,   0, 228, 128, 
+     11,   0, 228, 161,   5,   0, 
+      0,   3,   0,   0,   1, 128, 
       0,   0, 255, 128,   2,   0, 
-    170, 128,   5,   0,   0,   3, 
-      1,   0,   7, 224,   0,   0, 
-    228, 128,   1,   0, 255, 128, 
-      2,   0,   0,   3,   0,   0, 
-     15, 128,   1,   0, 228, 128, 
-      8,   0, 228, 161,   4,   0, 
+      0, 128,   6,   0,   0,   2, 
+      0,   0,   8, 128,  11,   0, 
+    255, 160,   5,   0,   0,   3, 
+      0,   0,   2, 128,   0,   0, 
+    255, 128,   2,   0,  85, 128, 
+      5,   0,   0,   3,   1,   0, 
+      7, 224,   0,   0, 228, 128, 
+      1,   0, 255, 128,   4,   0, 
       0,   4,   0,   0,   3, 224, 
       0,   0, 228, 144,   9,   0, 
     238, 160,   9,   0, 228, 160, 
-      5,   0,   0,   3,   0,   0, 
-      7, 128,   0,   0, 255, 128, 
-      0,   0, 228, 128,   5,   0, 
-      0,   3,   1,   0,  15, 128, 
-      0,   0,  85, 128,   5,   0, 
-    228, 160,   4,   0,   0,   4, 
-      1,   0,  15, 128,   4,   0, 
-    228, 160,   0,   0,   0, 128, 
-      1,   0, 228, 128,   4,   0, 
+      6,   0,   0,   2,   0,   0, 
+      1, 128,   1,   0, 255, 128, 
+      5,   0,   0,   3,   1,   0, 
+      7, 128,   0,   0,   0, 128, 
+      1,   0, 228, 128,   2,   0, 
+      0,   3,   0,   0,  15, 128, 
+      1,   0, 228, 128,   8,   0, 
+    228, 161,   5,   0,   0,   3, 
+      0,   0,   7, 128,   0,   0, 
+    255, 128,   0,   0, 228, 128, 
+      5,   0,   0,   3,   1,   0, 
+     15, 128,   0,   0,  85, 128, 
+      5,   0, 228, 160,   4,   0, 
       0,   4,   1,   0,  15, 128, 
-      6,   0, 228, 160,   0,   0, 
-    170, 128,   1,   0, 228, 128, 
-      4,   0,   0,   4,   0,   0, 
-     15, 128,   7,   0, 228, 160, 
-      0,   0, 255, 128,   1,   0, 
+      4,   0, 228, 160,   0,   0, 
+      0, 128,   1,   0, 228, 128, 
+      4,   0,   0,   4,   1,   0, 
+     15, 128,   6,   0, 228, 160, 
+      0,   0, 170, 128,   1,   0, 
     228, 128,   4,   0,   0,   4, 
-      0,   0,   3, 192,   0,   0, 
-    255, 128,   0,   0, 228, 160, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   0,   0,  12, 192, 
-      0,   0, 228, 128, 255, 255, 
-      0,   0,  83,  72,  68,  82, 
-    128,   2,   0,   0,  64,   0, 
-      1,   0, 160,   0,   0,   0, 
-     89,   0,   0,   4,  70, 142, 
+      0,   0,  15, 128,   7,   0, 
+    228, 160,   0,   0, 255, 128, 
+      1,   0, 228, 128,   4,   0, 
+      0,   4,   0,   0,   3, 192, 
+      0,   0, 255, 128,   0,   0, 
+    228, 160,   0,   0, 228, 128, 
+      1,   0,   0,   2,   0,   0, 
+     12, 192,   0,   0, 228, 128, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 148,   2,   0,   0, 
+     64,   0,   1,   0, 165,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,  12,   0,   0,   0, 
+     95,   0,   0,   3,  50,  16, 
+     16,   0,   0,   0,   0,   0, 
+    103,   0,   0,   4, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3,  50,  32,  16,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3, 114,  32,  16,   0, 
+      2,   0,   0,   0, 104,   0, 
+      0,   2,   4,   0,   0,   0, 
+     50,   0,   0,  11,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  16,  16,   0,   0,   0, 
+      0,   0, 230, 138,  32,   0, 
+      0,   0,   0,   0,  10,   0, 
+      0,   0,  70, 128,  32,   0, 
+      0,   0,   0,   0,  10,   0, 
+      0,   0,  56,   0,   0,   8, 
+    242,   0,  16,   0,   1,   0, 
+      0,   0,  86,   5,  16,   0, 
+      0,   0,   0,   0,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      0,   0,   0,   0,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   6,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  14,  16,   0,   1,   0, 
+      0,   0,   0,   0,   0,   8, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,  14,  16,   0, 
+      0,   0,   0,   0,  70, 142, 
      32,   0,   0,   0,   0,   0, 
-     12,   0,   0,   0,  95,   0, 
-      0,   3,  50,  16,  16,   0, 
-      0,   0,   0,   0, 103,   0, 
-      0,   4, 242,  32,  16,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-    114,  32,  16,   0,   2,   0, 
-      0,   0, 104,   0,   0,   2, 
+      3,   0,   0,   0,  14,   0, 
+      0,   7, 114,   0,  16,   0, 
+      1,   0,   0,   0,  70,   2, 
+     16,   0,   0,   0,   0,   0, 
+    246,  15,  16,   0,   0,   0, 
+      0,   0,  54,   0,   0,   5, 
+    130,   0,  16,   0,   1,   0, 
+      0,   0,  58,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   9, 242,   0,  16,   0, 
+      2,   0,   0,   0,  70,  14, 
+     16,   0,   1,   0,   0,   0, 
+     70, 142,  32, 128,  65,   0, 
+      0,   0,   0,   0,   0,   0, 
+      8,   0,   0,   0,  56,   0, 
+      0,   7, 114,   0,  16,   0, 
+      1,   0,   0,   0, 246,  15, 
+     16,   0,   2,   0,   0,   0, 
+     70,   2,  16,   0,   2,   0, 
+      0,   0,  56,   0,   0,   8, 
+    242,   0,  16,   0,   3,   0, 
+      0,   0,  86,   5,  16,   0, 
+      1,   0,   0,   0,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      5,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      3,   0,   0,   0,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,   6,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,  14,  16,   0,   3,   0, 
+      0,   0,  50,   0,   0,  10, 
+    242,   0,  16,   0,   3,   0, 
+      0,   0,  70, 142,  32,   0, 
+      0,   0,   0,   0,   6,   0, 
+      0,   0, 166,  10,  16,   0, 
+      1,   0,   0,   0,  70,  14, 
+     16,   0,   3,   0,   0,   0, 
+     50,   0,   0,  10, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   7,   0,   0,   0, 
+    246,  15,  16,   0,   2,   0, 
+      0,   0,  70,  14,  16,   0, 
       3,   0,   0,   0,  50,   0, 
-      0,  11,  50,   0,  16,   0, 
-      0,   0,   0,   0,  70,  16, 
+      0,  11,  50,  32,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
      16,   0,   0,   0,   0,   0, 
     230, 138,  32,   0,   0,   0, 
-      0,   0,  10,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
      70, 128,  32,   0,   0,   0, 
-      0,   0,  10,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,   5,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-      0,   0,   0,   8, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,  14,   0,   0,   7, 
-    114,   0,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      0,   0,   0,   0, 246,  15, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32, 128, 
-     65,   0,   0,   0,   0,   0, 
-      0,   0,   8,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
       0,   0,   0,   9,  50,   0, 
      16,   0,   0,   0,   0,   0, 
      70,   0,  16,   0,   0,   0, 
       0,   0,  70, 128,  32, 128, 
      65,   0,   0,   0,   0,   0, 
       0,   0,  11,   0,   0,   0, 
      14,   0,   0,   8,  50,   0, 
      16,   0,   0,   0,   0,   0, 
      70,   0,  16,   0,   0,   0, 
       0,   0, 230, 138,  32,   0, 
       0,   0,   0,   0,  11,   0, 
-      0,   0,  56,   0,   0,   7, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0, 246,  15,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   1,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   2,   0,   0,   0, 
-     86,   5,  16,   0,   1,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   5,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   2,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,   6,   0,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   2,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-    166,  10,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      2,   0,   0,   0,  50,   0, 
-      0,  10, 242,  32,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      7,   0,   0,   0, 246,  15, 
+      0,   0,  54,   0,   0,   5, 
+     66,   0,  16,   0,   0,   0, 
+      0,   0,   1,  64,   0,   0, 
+      0,   0, 128,  63,  56,   0, 
+      0,   7, 114,  32,  16,   0, 
+      2,   0,   0,   0, 246,  15, 
      16,   0,   1,   0,   0,   0, 
-     70,  14,  16,   0,   2,   0, 
-      0,   0,  50,   0,   0,  11, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  70, 128, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  54,   0, 
-      0,   5,  66,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 128,  63, 
-     56,   0,   0,   7, 114,  32, 
-     16,   0,   2,   0,   0,   0, 
-    246,  15,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      0,   0,   0,   0,  62,   0, 
-      0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,  17,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   4,   0, 
-      0,   0,  15,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70, 104,   2, 
-      0,   0,   1,   0,   0,   0, 
-     72,   0,   0,   0,   1,   0, 
-      0,   0,  28,   0,   0,   0, 
-      0,   4, 254, 255,   0,   1, 
-      0,   0,  52,   2,   0,   0, 
-     60,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+     70,   2,  16,   0,   0,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,  18,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+     15,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,   0,  36,  71, 108, 111, 
-     98,  97, 108, 115,   0, 171, 
-    171, 171,  60,   0,   0,   0, 
-     10,   0,   0,   0,  96,   0, 
-      0,   0,  48,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  80,   1,   0,   0, 
-      0,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 112,   1,   0,   0, 
-     64,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 124,   1,   0,   0, 
-    128,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 160,   1,   0,   0, 
-    144,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 192,   1,   0,   0, 
-    160,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 203,   1,   0,   0, 
-    176,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 213,   1,   0,   0, 
-    192,   0,   0,   0,  64,   0, 
-      0,   0,   0,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 232,   1,   0,   0, 
-      0,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 244,   1,   0,   0, 
-     16,   1,   0,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   2,   0,   0,   0,   0, 
-      0,   0,  20,   2,   0,   0, 
-     32,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-     36,   2,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70, 104,   2,   0,   0, 
+      1,   0,   0,   0,  72,   0, 
+      0,   0,   1,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    254, 255,   0,   1,   0,   0, 
+     52,   2,   0,   0,  60,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+     36,  71, 108, 111,  98,  97, 
+    108, 115,   0, 171, 171, 171, 
+     60,   0,   0,   0,  10,   0, 
+      0,   0,  96,   0,   0,   0, 
+     48,   1,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     80,   1,   0,   0,   0,   0, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    112,   1,   0,   0,  64,   0, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    124,   1,   0,   0, 128,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 144,   1, 
+      0,   0,   0,   0,   0,   0, 
+    160,   1,   0,   0, 144,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    192,   1,   0,   0, 160,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    203,   1,   0,   0, 176,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    213,   1,   0,   0, 192,   0, 
+      0,   0,  64,   0,   0,   0, 
+      0,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    232,   1,   0,   0,   0,   1, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0, 144,   1, 
+      0,   0,   0,   0,   0,   0, 
+    244,   1,   0,   0,  16,   1, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   4,   2, 
+      0,   0,   0,   0,   0,   0, 
+     20,   2,   0,   0,  32,   1, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0,  36,   2, 
+      0,   0,   0,   0,   0,   0, 
+    109,  76,  97, 121, 101, 114, 
+     84, 114,  97, 110, 115, 102, 
+    111, 114, 109,   0,   3,   0, 
+      3,   0,   4,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 109,  80, 114, 111, 
+    106, 101,  99, 116, 105, 111, 
+    110,   0, 118,  82, 101, 110, 
+    100, 101, 114,  84,  97, 114, 
+    103, 101, 116,  79, 102, 102, 
+    115, 101, 116,   0,   1,   0, 
+      3,   0,   1,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
       1,   0,   3,   0,   1,   0, 
       4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 118,  84, 
-    101, 120, 116, 117, 114, 101, 
-     67, 111, 111, 114, 100, 115, 
-      0, 171,   1,   0,   3,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0, 102,  76,  97, 121, 
+    101, 114,  79, 112,  97,  99, 
+    105, 116, 121,   0, 171, 171, 
+      0,   0,   3,   0,   1,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 105,  66, 
+    108, 101, 110, 100,  67, 111, 
+    110, 102, 105, 103,   0, 171, 
+    171, 171,   1,   0,  19,   0, 
       1,   0,   4,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    118,  76,  97, 121, 101, 114, 
-     81, 117,  97, 100,   0, 118, 
-     77,  97, 115, 107,  81, 117, 
-     97, 100,   0, 109,  66,  97, 
-     99, 107, 100, 114, 111, 112, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0, 102,  76, 
-     97, 121, 101, 114,  67, 111, 
-    108, 111, 114,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  54,  46,  51,  46,  57, 
-     54,  48,  48,  46,  49,  54, 
-     51,  56,  52,   0, 171, 171, 
-     73,  83,  71,  78,  44,   0, 
-      0,   0,   1,   0,   0,   0, 
-      8,   0,   0,   0,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   3,   0,   0,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
-      0, 171, 171, 171,  79,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,  12, 
-      0,   0,  92,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,   0,   0,   0,   7,   8, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171
+      0,   0,   0,   0,   3,   3, 
+      0,   0,  80,  79,  83,  73, 
+     84,  73,  79,  78,   0, 171, 
+    171, 171,  79,  83,  71,  78, 
+    104,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+     80,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+     92,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,  12,   0,   0, 
+     92,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   2,   0, 
+      0,   0,   7,   8,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171
 };
-ShaderBytes sLayerQuadMask3DVS = { LayerQuadMask3DVS, sizeof(LayerQuadMask3DVS) };
+ShaderBytes sLayerQuadMaskVS = { LayerQuadMaskVS, sizeof(LayerQuadMaskVS) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16
@@ -3109,31 +2657,31 @@ ShaderBytes sLayerQuadMask3DVS = { Layer
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tMask                             texture  float4          2d             t5      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
 // TEXCOORD                 0   xy          1     NONE   float       
-// TEXCOORD                 1     zw        1     NONE   float     zw
+// TEXCOORD                 1   xyz         2     NONE   float   xyz 
 //
 //
 // Output signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Target                0   xyzw        0   TARGET   float   xyzw
 //
@@ -3150,270 +2698,280 @@ ShaderBytes sLayerQuadMask3DVS = { Layer
 // Target Sampler Source Sampler  Source Resource
 // -------------- --------------- ----------------
 // s0             s0              t5               
 //
 //
 // Level9 shader bytecode:
 //
     ps_2_x
-    dcl t0
+    dcl t1.xyz
     dcl_2d s0
-    mov r0.xy, t0.wzzw
+    rcp r0.w, t1.z
+    mul r0.xy, r0.w, t1
     texld r0, r0, s0
     mul r0, r0.x, c0
     mov oC0, r0
 
-// approximately 4 instruction slots used (1 texture, 3 arithmetic)
+// approximately 5 instruction slots used (1 texture, 4 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[1], immediateIndexed
+dcl_constantbuffer CB0[1], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t5
-dcl_input_ps linear v1.zw
+dcl_input_ps linear v2.xyz
 dcl_output o0.xyzw
 dcl_temps 1
-sample r0.xyzw, v1.zwzz, t5.xyzw, s0
+div r0.xy, v2.xyxx, v2.zzzz
+sample r0.xyzw, r0.xyxx, t5.xyzw, s0
 mul o0.xyzw, r0.xxxx, cb0[0].xyzw
 ret 
-// Approximately 3 instruction slots used
+// Approximately 4 instruction slots used
 #endif
 
 const BYTE SolidColorShaderMask[] =
 {
-     68,  88,  66,  67, 179, 163, 
-    177, 178,  96,   7, 246,  20, 
-     94, 198, 166,  18, 116, 245, 
-    163,  94,   1,   0,   0,   0, 
-     76,   5,   0,   0,   6,   0, 
+     68,  88,  66,  67, 136,  34, 
+    160,  50,  38, 225, 198,  78, 
+    252,  58, 191, 192, 204,  38, 
+     60, 224,   1,   0,   0,   0, 
+    120,   5,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-    204,   0,   0,   0, 112,   1, 
-      0,   0, 236,   1,   0,   0, 
-    168,   4,   0,   0,  24,   5, 
+    220,   0,   0,   0, 156,   1, 
+      0,   0,  24,   2,   0,   0, 
+    212,   4,   0,   0,  68,   5, 
       0,   0,  65, 111, 110,  57, 
-    140,   0,   0,   0, 140,   0, 
+    156,   0,   0,   0, 156,   0, 
       0,   0,   0,   2, 255, 255, 
-     88,   0,   0,   0,  52,   0, 
+    104,   0,   0,   0,  52,   0, 
       0,   0,   1,   0,  40,   0, 
       0,   0,  52,   0,   0,   0, 
      52,   0,   1,   0,  36,   0, 
       0,   0,  52,   0,   5,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
       0,   0,   1,   2, 255, 255, 
      31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,  15, 176, 
+      0, 128,   1,   0,   7, 176, 
      31,   0,   0,   2,   0,   0, 
       0, 144,   0,   8,  15, 160, 
-      1,   0,   0,   2,   0,   0, 
-      3, 128,   0,   0, 235, 176, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 128, 
-      0,   8, 228, 160,   5,   0, 
+      6,   0,   0,   2,   0,   0, 
+      8, 128,   1,   0, 170, 176, 
+      5,   0,   0,   3,   0,   0, 
+      3, 128,   0,   0, 255, 128, 
+      1,   0, 228, 176,  66,   0, 
       0,   3,   0,   0,  15, 128, 
-      0,   0,   0, 128,   0,   0, 
-    228, 160,   1,   0,   0,   2, 
-      0,   8,  15, 128,   0,   0, 
-    228, 128, 255, 255,   0,   0, 
-     83,  72,  68,  82, 156,   0, 
-      0,   0,  64,   0,   0,   0, 
-     39,   0,   0,   0,  89,   0, 
-      0,   4,  70, 142,  32,   0, 
+      0,   0, 228, 128,   0,   8, 
+    228, 160,   5,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+      0, 128,   0,   0, 228, 160, 
+      1,   0,   0,   2,   0,   8, 
+     15, 128,   0,   0, 228, 128, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 184,   0,   0,   0, 
+     64,   0,   0,   0,  46,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+     90,   0,   0,   3,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
+     16,   0,   5,   0,   0,   0, 
+     85,  85,   0,   0,  98,  16, 
+      0,   3, 114,  16,  16,   0, 
+      2,   0,   0,   0, 101,   0, 
+      0,   3, 242,  32,  16,   0, 
+      0,   0,   0,   0, 104,   0, 
+      0,   2,   1,   0,   0,   0, 
+     14,   0,   0,   7,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  16,  16,   0,   2,   0, 
+      0,   0, 166,  26,  16,   0, 
+      2,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      0,   0,   0,   0,  70,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70, 126,  16,   0,   5,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   8, 242,  32,  16,   0, 
+      0,   0,   0,   0,   6,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     62,   0,   0,   1,  83,  84, 
+     65,  84, 116,   0,   0,   0, 
+      4,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
-      0,   0,  90,   0,   0,   3, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   5,   0, 
-      0,   0,  85,  85,   0,   0, 
-     98,  16,   0,   3, 194,  16, 
-     16,   0,   1,   0,   0,   0, 
-    101,   0,   0,   3, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-    104,   0,   0,   2,   1,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0, 230,  26,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   5,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  62,   0, 
-      0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  82,  68,  69,  70, 
+    180,   2,   0,   0,   1,   0, 
+      0,   0, 148,   0,   0,   0, 
+      3,   0,   0,   0,  28,   0, 
+      0,   0,   0,   4, 255, 255, 
+      0,   1,   0,   0, 128,   2, 
+      0,   0, 124,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      1,   0,   0,   0, 133,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      5,   0,   0,   0,   1,   0, 
+      0,   0,  13,   0,   0,   0, 
+    139,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70, 180,   2, 
-      0,   0,   1,   0,   0,   0, 
-    148,   0,   0,   0,   3,   0, 
-      0,   0,  28,   0,   0,   0, 
-      0,   4, 255, 255,   0,   1, 
-      0,   0, 128,   2,   0,   0, 
-    124,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0, 133,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   5,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0, 139,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-    115,  83,  97, 109, 112, 108, 
-    101, 114,   0, 116,  77,  97, 
-    115, 107,   0,  36,  71, 108, 
-    111,  98,  97, 108, 115,   0, 
-    139,   0,   0,   0,  10,   0, 
-      0,   0, 172,   0,   0,   0, 
-     48,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    156,   1,   0,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-      2,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-    184,   1,   0,   0,  16,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0, 200,   1, 
-      0,   0,   0,   0,   0,   0, 
-    216,   1,   0,   0,  32,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   0,   0,   0, 
-    248,   1,   0,   0,  48,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,   8,   2, 
-      0,   0,   0,   0,   0,   0, 
-     24,   2,   0,   0, 112,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,   8,   2, 
-      0,   0,   0,   0,   0,   0, 
-     36,   2,   0,   0, 176,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 168,   1, 
-      0,   0,   0,   0,   0,   0, 
-     56,   2,   0,   0, 192,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  72,   2, 
-      0,   0,   0,   0,   0,   0, 
-     88,   2,   0,   0, 208,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  72,   2, 
-      0,   0,   0,   0,   0,   0, 
-     99,   2,   0,   0, 224,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  72,   2, 
-      0,   0,   0,   0,   0,   0, 
-    109,   2,   0,   0, 240,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,   8,   2, 
+      0,   0, 115,  83,  97, 109, 
+    112, 108, 101, 114,   0, 116, 
+     77,  97, 115, 107,   0,  36, 
+     71, 108, 111,  98,  97, 108, 
+    115,   0, 139,   0,   0,   0, 
+     10,   0,   0,   0, 172,   0, 
+      0,   0,  48,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 156,   1,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    168,   1,   0,   0,   0,   0, 
+      0,   0, 184,   1,   0,   0, 
+     16,   0,   0,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+    200,   1,   0,   0,   0,   0, 
+      0,   0, 216,   1,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    232,   1,   0,   0,   0,   0, 
+      0,   0, 248,   1,   0,   0, 
+     48,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+      8,   2,   0,   0,   0,   0, 
+      0,   0,  24,   2,   0,   0, 
+    112,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+      8,   2,   0,   0,   0,   0, 
+      0,   0,  36,   2,   0,   0, 
+    176,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    168,   1,   0,   0,   0,   0, 
+      0,   0,  56,   2,   0,   0, 
+    192,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     72,   2,   0,   0,   0,   0, 
+      0,   0,  88,   2,   0,   0, 
+    208,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     72,   2,   0,   0,   0,   0, 
+      0,   0,  99,   2,   0,   0, 
+    224,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     72,   2,   0,   0,   0,   0, 
+      0,   0, 109,   2,   0,   0, 
+    240,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+      8,   2,   0,   0,   0,   0, 
+      0,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
     102,  76,  97, 121, 101, 114, 
-     67, 111, 108, 111, 114,   0, 
+     79, 112,  97,  99, 105, 116, 
+    121,   0, 171, 171,   0,   0, 
+      3,   0,   1,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 105,  66, 108, 101, 
+    110, 100,  67, 111, 110, 102, 
+    105, 103,   0, 171, 171, 171, 
+      1,   0,  19,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 109,  76, 
+     97, 121, 101, 114,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,   3,   0,   3,   0, 
+      4,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    109,  80, 114, 111, 106, 101, 
+     99, 116, 105, 111, 110,   0, 
+    118,  82, 101, 110, 100, 101, 
+    114,  84,  97, 114, 103, 101, 
+    116,  79, 102, 102, 115, 101, 
+    116,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
       1,   0,   3,   0,   1,   0, 
       4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
-    118,  84, 101, 120, 116, 117, 
-    114, 101,  67, 111, 111, 114, 
-    100, 115,   0, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 118,  76,  97, 121, 
-    101, 114,  81, 117,  97, 100, 
-      0, 118,  77,  97, 115, 107, 
-     81, 117,  97, 100,   0, 109, 
-     66,  97,  99, 107, 100, 114, 
-    111, 112,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-     77, 105,  99, 114, 111, 115, 
-    111, 102, 116,  32,  40,  82, 
-     41,  32,  72,  76,  83,  76, 
-     32,  83, 104,  97, 100, 101, 
-    114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,  77, 105,  99, 114, 
+    111, 115, 111, 102, 116,  32, 
+     40,  82,  41,  32,  72,  76, 
+     83,  76,  32,  83, 104,  97, 
+    100, 101, 114,  32,  67, 111, 
+    109, 112, 105, 108, 101, 114, 
+     32,  49,  48,  46,  48,  46, 
+     49,  48,  48,  49,  49,  46, 
+     49,  54,  51,  56,  52,   0, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   2,   0,   0,   0, 
+      7,   7,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,   0, 
-      0,   0,  92,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,  12, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  97, 114, 
-    103, 101, 116,   0, 171, 171
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171
 };
 ShaderBytes sSolidColorShaderMask = { SolidColorShaderMask, sizeof(SolidColorShaderMask) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
@@ -3427,32 +2985,410 @@ ShaderBytes sSolidColorShaderMask = { So
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// tMask                             texture  float4          2d             t5      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
 // TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1     zw        1     NONE   float     zw
+// TEXCOORD                 1   xyz         2     NONE   float   xyz 
+//
+//
+// Output signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Target                0   xyzw        0   TARGET   float   xyzw
+//
+//
+// Constant buffer to DX9 shader constant mappings:
+//
+// Target Reg Buffer  Start Reg # of Regs        Data Conversion
+// ---------- ------- --------- --------- ----------------------
+// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
+//
+//
+// Sampler/Resource to DX9 shader sampler mappings:
+//
+// Target Sampler Source Sampler  Source Resource
+// -------------- --------------- ----------------
+// s0             s0              t0               
+// s1             s0              t5               
+//
+//
+// Level9 shader bytecode:
+//
+    ps_2_x
+    dcl t0.xy
+    dcl t1.xyz
+    dcl_2d s0
+    dcl_2d s1
+    rcp r0.w, t1.z
+    mul r0.xy, r0.w, t1
+    texld r1, t0, s0
+    texld r0, r0, s1
+    mul r1.xyz, r1, c0.x
+    mov r1.w, c0.x
+    mul r0, r0.x, r1
+    mov oC0, r0
+
+// approximately 8 instruction slots used (2 texture, 6 arithmetic)
+ps_4_0
+dcl_constantbuffer CB0[2], immediateIndexed
+dcl_sampler s0, mode_default
+dcl_resource_texture2d (float,float,float,float) t0
+dcl_resource_texture2d (float,float,float,float) t5
+dcl_input_ps linear v1.xy
+dcl_input_ps linear v2.xyz
+dcl_output o0.xyzw
+dcl_temps 2
+sample r0.xyzw, v1.xyxx, t0.xyzw, s0
+mul r0.xyz, r0.xyzx, cb0[1].xxxx
+div r1.xy, v2.xyxx, v2.zzzz
+sample r1.xyzw, r1.xyxx, t5.xyzw, s0
+mov r0.w, cb0[1].x
+mul o0.xyzw, r0.xyzw, r1.xxxx
+ret 
+// Approximately 7 instruction slots used
+#endif
+
+const BYTE RGBShaderMask[] =
+{
+     68,  88,  66,  67,  79, 247, 
+    118, 147, 119, 222,  85,  19, 
+    212, 225, 110,  66, 228, 229, 
+    204, 201,   1,   0,   0,   0, 
+     92,   6,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+     36,   1,   0,   0,  88,   2, 
+      0,   0, 212,   2,   0,   0, 
+    184,   5,   0,   0,  40,   6, 
+      0,   0,  65, 111, 110,  57, 
+    228,   0,   0,   0, 228,   0, 
+      0,   0,   0,   2, 255, 255, 
+    172,   0,   0,   0,  56,   0, 
+      0,   0,   1,   0,  44,   0, 
+      0,   0,  56,   0,   0,   0, 
+     56,   0,   2,   0,  36,   0, 
+      0,   0,  56,   0,   0,   0, 
+      0,   0,   5,   0,   1,   0, 
+      0,   0,   1,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   2, 255, 255,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      0,   0,   3, 176,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      1,   0,   7, 176,  31,   0, 
+      0,   2,   0,   0,   0, 144, 
+      0,   8,  15, 160,  31,   0, 
+      0,   2,   0,   0,   0, 144, 
+      1,   8,  15, 160,   6,   0, 
+      0,   2,   0,   0,   8, 128, 
+      1,   0, 170, 176,   5,   0, 
+      0,   3,   0,   0,   3, 128, 
+      0,   0, 255, 128,   1,   0, 
+    228, 176,  66,   0,   0,   3, 
+      1,   0,  15, 128,   0,   0, 
+    228, 176,   0,   8, 228, 160, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 128, 
+      1,   8, 228, 160,   5,   0, 
+      0,   3,   1,   0,   7, 128, 
+      1,   0, 228, 128,   0,   0, 
+      0, 160,   1,   0,   0,   2, 
+      1,   0,   8, 128,   0,   0, 
+      0, 160,   5,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+      0, 128,   1,   0, 228, 128, 
+      1,   0,   0,   2,   0,   8, 
+     15, 128,   0,   0, 228, 128, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82,  44,   1,   0,   0, 
+     64,   0,   0,   0,  75,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     90,   0,   0,   3,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
+     16,   0,   0,   0,   0,   0, 
+     85,  85,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      5,   0,   0,   0,  85,  85, 
+      0,   0,  98,  16,   0,   3, 
+     50,  16,  16,   0,   1,   0, 
+      0,   0,  98,  16,   0,   3, 
+    114,  16,  16,   0,   2,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0, 104,   0,   0,   2, 
+      2,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   8, 114,   0,  16,   0, 
+      0,   0,   0,   0,  70,   2, 
+     16,   0,   0,   0,   0,   0, 
+      6, 128,  32,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+     14,   0,   0,   7,  50,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,  16,  16,   0,   2,   0, 
+      0,   0, 166,  26,  16,   0, 
+      2,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   5,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  54,   0, 
+      0,   6, 130,   0,  16,   0, 
+      0,   0,   0,   0,  10, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  56,   0, 
+      0,   7, 242,  32,  16,   0, 
+      0,   0,   0,   0,  70,  14, 
+     16,   0,   0,   0,   0,   0, 
+      6,   0,  16,   0,   1,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,   7,   0,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70, 220,   2,   0,   0, 
+      1,   0,   0,   0, 188,   0, 
+      0,   0,   4,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    255, 255,   0,   1,   0,   0, 
+    168,   2,   0,   0, 156,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+    165,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   0,   0,   0,   0, 
+      1,   0,   0,   0,  13,   0, 
+      0,   0, 170,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   4,   0,   0,   0, 
+    255, 255, 255, 255,   5,   0, 
+      0,   0,   1,   0,   0,   0, 
+     13,   0,   0,   0, 176,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+    115,  83,  97, 109, 112, 108, 
+    101, 114,   0, 116,  82,  71, 
+     66,   0, 116,  77,  97, 115, 
+    107,   0,  36,  71, 108, 111, 
+     98,  97, 108, 115,   0, 171, 
+    171, 171, 176,   0,   0,   0, 
+     10,   0,   0,   0, 212,   0, 
+      0,   0,  48,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 196,   1,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    208,   1,   0,   0,   0,   0, 
+      0,   0, 224,   1,   0,   0, 
+     16,   0,   0,   0,   4,   0, 
+      0,   0,   2,   0,   0,   0, 
+    240,   1,   0,   0,   0,   0, 
+      0,   0,   0,   2,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     16,   2,   0,   0,   0,   0, 
+      0,   0,  32,   2,   0,   0, 
+     48,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0,  64,   2,   0,   0, 
+    112,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0,  76,   2,   0,   0, 
+    176,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    208,   1,   0,   0,   0,   0, 
+      0,   0,  96,   2,   0,   0, 
+    192,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 128,   2,   0,   0, 
+    208,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 139,   2,   0,   0, 
+    224,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 149,   2,   0,   0, 
+    240,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    102,  76,  97, 121, 101, 114, 
+     79, 112,  97,  99, 105, 116, 
+    121,   0, 171, 171,   0,   0, 
+      3,   0,   1,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 105,  66, 108, 101, 
+    110, 100,  67, 111, 110, 102, 
+    105, 103,   0, 171, 171, 171, 
+      1,   0,  19,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 109,  76, 
+     97, 121, 101, 114,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,   3,   0,   3,   0, 
+      4,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    109,  80, 114, 111, 106, 101, 
+     99, 116, 105, 111, 110,   0, 
+    118,  82, 101, 110, 100, 101, 
+    114,  84,  97, 114, 103, 101, 
+    116,  79, 102, 102, 115, 101, 
+    116,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,  77, 105,  99, 114, 
+    111, 115, 111, 102, 116,  32, 
+     40,  82,  41,  32,  72,  76, 
+     83,  76,  32,  83, 104,  97, 
+    100, 101, 114,  32,  67, 111, 
+    109, 112, 105, 108, 101, 114, 
+     32,  49,  48,  46,  48,  46, 
+     49,  48,  48,  49,  49,  46, 
+     49,  54,  51,  56,  52,   0, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   3,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   2,   0,   0,   0, 
+      7,   7,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171
+};
+ShaderBytes sRGBShaderMask = { RGBShaderMask, sizeof(RGBShaderMask) };
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
+//
+//
+// Buffer Definitions: 
+//
+// cbuffer $Globals
+// {
+//
+//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
+//   float fLayerOpacity;               // Offset:   16 Size:     4
+//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
+//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
+//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
+//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
+//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
+//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
+//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
+//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
+//
+// }
+//
+//
+// Resource Bindings:
+//
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// tMask                             texture  float4          2d             t5      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
+//
+//
+//
+// Input signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Position              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
+// TEXCOORD                 1   xyz         2     NONE   float   xyz 
 //
 //
 // Output signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Target                0   xyzw        0   TARGET   float   xyzw
 //
@@ -3470,235 +3406,1220 @@ ShaderBytes sSolidColorShaderMask = { So
 // -------------- --------------- ----------------
 // s0             s0              t0               
 // s1             s0              t5               
 //
 //
 // Level9 shader bytecode:
 //
     ps_2_x
-    dcl t0
+    dcl t0.xy
+    dcl t1.xyz
     dcl_2d s0
     dcl_2d s1
-    mov r0.xy, t0.wzzw
+    rcp r0.w, t1.z
+    mul r0.xy, r0.w, t1
     texld r1, t0, s0
     texld r0, r0, s1
-    mul r1.xyz, r1, c0.x
-    mov r1.w, c0.x
+    mul r1, r1, c0.x
     mul r0, r0.x, r1
     mov oC0, r0
 
 // approximately 7 instruction slots used (2 texture, 5 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
+dcl_constantbuffer CB0[2], immediateIndexed
 dcl_sampler s0, mode_default
 dcl_resource_texture2d (float,float,float,float) t0
 dcl_resource_texture2d (float,float,float,float) t5
 dcl_input_ps linear v1.xy
-dcl_input_ps linear v1.zw
+dcl_input_ps linear v2.xyz
 dcl_output o0.xyzw
 dcl_temps 2
-sample r0.xyzw, v1.xyxx, t0.xyzw, s0
-mul r0.xyz, r0.xyzx, cb0[1].xxxx
-sample r1.xyzw, v1.zwzz, t5.xyzw, s0
-mov r0.w, cb0[1].x
-mul o0.xyzw, r0.xyzw, r1.xxxx
+div r0.xy, v2.xyxx, v2.zzzz
+sample r0.xyzw, r0.xyxx, t5.xyzw, s0
+sample r1.xyzw, v1.xyxx, t0.xyzw, s0
+mul r1.xyzw, r1.xyzw, cb0[1].xxxx
+mul o0.xyzw, r0.xxxx, r1.xyzw
 ret 
 // Approximately 6 instruction slots used
 #endif
 
-const BYTE RGBShaderMask[] =
+const BYTE RGBAShaderMask[] =
 {
-     68,  88,  66,  67, 194, 201, 
-     10, 158,  40, 223, 107,  77, 
-    239,  65, 209,  32,   8, 192, 
-    127, 244,   1,   0,   0,   0, 
-     36,   6,   0,   0,   6,   0, 
+     68,  88,  66,  67, 100,  50, 
+    112, 237, 158, 118, 201, 119, 
+    153, 231, 223, 176, 232, 201, 
+    145, 152,   1,   0,   0,   0, 
+     56,   6,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-      8,   1,   0,   0,  32,   2, 
-      0,   0, 156,   2,   0,   0, 
-    128,   5,   0,   0, 240,   5, 
+     24,   1,   0,   0,  52,   2, 
+      0,   0, 176,   2,   0,   0, 
+    148,   5,   0,   0,   4,   6, 
       0,   0,  65, 111, 110,  57, 
-    200,   0,   0,   0, 200,   0, 
+    216,   0,   0,   0, 216,   0, 
       0,   0,   0,   2, 255, 255, 
-    144,   0,   0,   0,  56,   0, 
+    160,   0,   0,   0,  56,   0, 
       0,   0,   1,   0,  44,   0, 
       0,   0,  56,   0,   0,   0, 
      56,   0,   2,   0,  36,   0, 
       0,   0,  56,   0,   0,   0, 
       0,   0,   5,   0,   1,   0, 
       0,   0,   1,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   2, 255, 255,  31,   0, 
       0,   2,   0,   0,   0, 128, 
-      0,   0,  15, 176,  31,   0, 
+      0,   0,   3, 176,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      1,   0,   7, 176,  31,   0, 
       0,   2,   0,   0,   0, 144, 
       0,   8,  15, 160,  31,   0, 
       0,   2,   0,   0,   0, 144, 
-      1,   8,  15, 160,   1,   0, 
-      0,   2,   0,   0,   3, 128, 
-      0,   0, 235, 176,  66,   0, 
+      1,   8,  15, 160,   6,   0, 
+      0,   2,   0,   0,   8, 128, 
+      1,   0, 170, 176,   5,   0, 
+      0,   3,   0,   0,   3, 128, 
+      0,   0, 255, 128,   1,   0, 
+    228, 176,  66,   0,   0,   3, 
+      1,   0,  15, 128,   0,   0, 
+    228, 176,   0,   8, 228, 160, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 128, 
+      1,   8, 228, 160,   5,   0, 
       0,   3,   1,   0,  15, 128, 
-      0,   0, 228, 176,   0,   8, 
+      1,   0, 228, 128,   0,   0, 
+      0, 160,   5,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+      0, 128,   1,   0, 228, 128, 
+      1,   0,   0,   2,   0,   8, 
+     15, 128,   0,   0, 228, 128, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82,  20,   1,   0,   0, 
+     64,   0,   0,   0,  69,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     90,   0,   0,   3,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
+     16,   0,   0,   0,   0,   0, 
+     85,  85,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      5,   0,   0,   0,  85,  85, 
+      0,   0,  98,  16,   0,   3, 
+     50,  16,  16,   0,   1,   0, 
+      0,   0,  98,  16,   0,   3, 
+    114,  16,  16,   0,   2,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0, 104,   0,   0,   2, 
+      2,   0,   0,   0,  14,   0, 
+      0,   7,  50,   0,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   2,   0,   0,   0, 
+    166,  26,  16,   0,   2,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,   0,  16,   0, 
+      0,   0,   0,   0,  70, 126, 
+     16,   0,   5,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   1,   0, 
+      0,   0,  70,  16,  16,   0, 
+      1,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  56,   0,   0,   8, 
+    242,   0,  16,   0,   1,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,   6, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  56,   0, 
+      0,   7, 242,  32,  16,   0, 
+      0,   0,   0,   0,   6,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  14,  16,   0,   1,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,   6,   0,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70, 220,   2,   0,   0, 
+      1,   0,   0,   0, 188,   0, 
+      0,   0,   4,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    255, 255,   0,   1,   0,   0, 
+    168,   2,   0,   0, 156,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+    165,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   0,   0,   0,   0, 
+      1,   0,   0,   0,  13,   0, 
+      0,   0, 170,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   4,   0,   0,   0, 
+    255, 255, 255, 255,   5,   0, 
+      0,   0,   1,   0,   0,   0, 
+     13,   0,   0,   0, 176,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+    115,  83,  97, 109, 112, 108, 
+    101, 114,   0, 116,  82,  71, 
+     66,   0, 116,  77,  97, 115, 
+    107,   0,  36,  71, 108, 111, 
+     98,  97, 108, 115,   0, 171, 
+    171, 171, 176,   0,   0,   0, 
+     10,   0,   0,   0, 212,   0, 
+      0,   0,  48,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 196,   1,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    208,   1,   0,   0,   0,   0, 
+      0,   0, 224,   1,   0,   0, 
+     16,   0,   0,   0,   4,   0, 
+      0,   0,   2,   0,   0,   0, 
+    240,   1,   0,   0,   0,   0, 
+      0,   0,   0,   2,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     16,   2,   0,   0,   0,   0, 
+      0,   0,  32,   2,   0,   0, 
+     48,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0,  64,   2,   0,   0, 
+    112,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0,  76,   2,   0,   0, 
+    176,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    208,   1,   0,   0,   0,   0, 
+      0,   0,  96,   2,   0,   0, 
+    192,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 128,   2,   0,   0, 
+    208,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 139,   2,   0,   0, 
+    224,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    112,   2,   0,   0,   0,   0, 
+      0,   0, 149,   2,   0,   0, 
+    240,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,   0,   0, 
+      0,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    102,  76,  97, 121, 101, 114, 
+     79, 112,  97,  99, 105, 116, 
+    121,   0, 171, 171,   0,   0, 
+      3,   0,   1,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 105,  66, 108, 101, 
+    110, 100,  67, 111, 110, 102, 
+    105, 103,   0, 171, 171, 171, 
+      1,   0,  19,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 109,  76, 
+     97, 121, 101, 114,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,   3,   0,   3,   0, 
+      4,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    109,  80, 114, 111, 106, 101, 
+     99, 116, 105, 111, 110,   0, 
+    118,  82, 101, 110, 100, 101, 
+    114,  84,  97, 114, 103, 101, 
+    116,  79, 102, 102, 115, 101, 
+    116,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,  77, 105,  99, 114, 
+    111, 115, 111, 102, 116,  32, 
+     40,  82,  41,  32,  72,  76, 
+     83,  76,  32,  83, 104,  97, 
+    100, 101, 114,  32,  67, 111, 
+    109, 112, 105, 108, 101, 114, 
+     32,  49,  48,  46,  48,  46, 
+     49,  48,  48,  49,  49,  46, 
+     49,  54,  51,  56,  52,   0, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   3,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   2,   0,   0,   0, 
+      7,   7,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171
+};
+ShaderBytes sRGBAShaderMask = { RGBAShaderMask, sizeof(RGBAShaderMask) };
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
+//
+//
+// Buffer Definitions: 
+//
+// cbuffer $Globals
+// {
+//
+//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
+//   float fLayerOpacity;               // Offset:   16 Size:     4
+//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
+//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
+//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
+//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
+//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
+//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
+//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
+//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
+//
+// }
+//
+//
+// Resource Bindings:
+//
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tY                                texture  float4          2d             t1      1 
+// tCb                               texture  float4          2d             t2      1 
+// tCr                               texture  float4          2d             t3      1 
+// tMask                             texture  float4          2d             t5      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
+//
+//
+//
+// Input signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Position              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
+// TEXCOORD                 1   xyz         2     NONE   float   xyz 
+//
+//
+// Output signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Target                0   xyzw        0   TARGET   float   xyzw
+//
+//
+// Constant buffer to DX9 shader constant mappings:
+//
+// Target Reg Buffer  Start Reg # of Regs        Data Conversion
+// ---------- ------- --------- --------- ----------------------
+// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
+//
+//
+// Sampler/Resource to DX9 shader sampler mappings:
+//
+// Target Sampler Source Sampler  Source Resource
+// -------------- --------------- ----------------
+// s0             s0              t1               
+// s1             s0              t2               
+// s2             s0              t3               
+// s3             s0              t5               
+//
+//
+// Level9 shader bytecode:
+//
+    ps_2_x
+    def c1, -0.50195998, -0.0627499968, 1.59603, 0.812969983
+    def c2, 1.16437995, 2.01723003, 0.391759992, 1
+    dcl t0.xy
+    dcl t1.xyz
+    dcl_2d s0
+    dcl_2d s1
+    dcl_2d s2
+    dcl_2d s3
+    texld r0, t0, s0
+    texld r1, t0, s2
+    add r0.y, r1.x, c1.x
+    mul r0.yz, r0.y, c1.xzww
+    add r0.x, r0.x, c1.y
+    mad r0.z, r0.x, c2.x, -r0.z
+    mad r1.x, r0.x, c2.x, r0.y
+    rcp r0.y, t1.z
+    mul r2.xy, r0.y, t1
+    texld r3, t0, s1
+    texld r2, r2, s3
+    add r0.y, r3.x, c1.x
+    mad r1.y, r0.y, -c2.z, r0.z
+    mul r0.y, r0.y, c2.y
+    mad r1.z, r0.x, c2.x, r0.y
+    mov r1.w, c2.w
+    mul r0, r1, c0.x
+    mul r0, r2.x, r0
+    mov oC0, r0
+
+// approximately 19 instruction slots used (4 texture, 15 arithmetic)
+ps_4_0
+dcl_constantbuffer CB0[2], immediateIndexed
+dcl_sampler s0, mode_default
+dcl_resource_texture2d (float,float,float,float) t1
+dcl_resource_texture2d (float,float,float,float) t2
+dcl_resource_texture2d (float,float,float,float) t3
+dcl_resource_texture2d (float,float,float,float) t5
+dcl_input_ps linear v1.xy
+dcl_input_ps linear v2.xyz
+dcl_output o0.xyzw
+dcl_temps 3
+sample r0.xyzw, v1.xyxx, t3.xyzw, s0
+add r0.x, r0.x, l(-0.501960)
+mul r0.xy, r0.xxxx, l(1.596030, 0.812970, 0.000000, 0.000000)
+sample r1.xyzw, v1.xyxx, t1.xyzw, s0
+add r0.z, r1.x, l(-0.062750)
+mad r0.y, r0.z, l(1.164380), -r0.y
+mad r1.x, r0.z, l(1.164380), r0.x
+sample r2.xyzw, v1.xyxx, t2.xyzw, s0
+add r0.x, r2.x, l(-0.501960)
+mad r1.y, -r0.x, l(0.391760), r0.y
+mul r0.x, r0.x, l(2.017230)
+mad r1.z, r0.z, l(1.164380), r0.x
+mov r1.w, l(1.000000)
+mul r0.xyzw, r1.xyzw, cb0[1].xxxx
+div r1.xy, v2.xyxx, v2.zzzz
+sample r1.xyzw, r1.xyxx, t5.xyzw, s0
+mul o0.xyzw, r0.xyzw, r1.xxxx
+ret 
+// Approximately 18 instruction slots used
+#endif
+
+const BYTE YCbCrShaderMask[] =
+{
+     68,  88,  66,  67, 204, 171, 
+    122, 254, 247, 109,  96,  89, 
+    237, 176, 206,  43, 154,  27, 
+    195, 203,   1,   0,   0,   0, 
+     68,   9,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+     52,   2,   0,   0, 252,   4, 
+      0,   0, 120,   5,   0,   0, 
+    160,   8,   0,   0,  16,   9, 
+      0,   0,  65, 111, 110,  57, 
+    244,   1,   0,   0, 244,   1, 
+      0,   0,   0,   2, 255, 255, 
+    180,   1,   0,   0,  64,   0, 
+      0,   0,   1,   0,  52,   0, 
+      0,   0,  64,   0,   0,   0, 
+     64,   0,   4,   0,  36,   0, 
+      0,   0,  64,   0,   1,   0, 
+      0,   0,   2,   0,   1,   0, 
+      3,   0,   2,   0,   5,   0, 
+      3,   0,   0,   0,   1,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   1,   2, 255, 255, 
+     81,   0,   0,   5,   1,   0, 
+     15, 160, 115, 128,   0, 191, 
+     18, 131, 128, 189, 182,  74, 
+    204,  63, 205,  30,  80,  63, 
+     81,   0,   0,   5,   2,   0, 
+     15, 160, 103,  10, 149,  63, 
+     76,  26,   1,  64, 196, 148, 
+    200,  62,   0,   0, 128,  63, 
+     31,   0,   0,   2,   0,   0, 
+      0, 128,   0,   0,   3, 176, 
+     31,   0,   0,   2,   0,   0, 
+      0, 128,   1,   0,   7, 176, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   0,   8,  15, 160, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   1,   8,  15, 160, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   2,   8,  15, 160, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   3,   8,  15, 160, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 176, 
+      0,   8, 228, 160,  66,   0, 
+      0,   3,   1,   0,  15, 128, 
+      0,   0, 228, 176,   2,   8, 
+    228, 160,   2,   0,   0,   3, 
+      0,   0,   2, 128,   1,   0, 
+      0, 128,   1,   0,   0, 160, 
+      5,   0,   0,   3,   0,   0, 
+      6, 128,   0,   0,  85, 128, 
+      1,   0, 248, 160,   2,   0, 
+      0,   3,   0,   0,   1, 128, 
+      0,   0,   0, 128,   1,   0, 
+     85, 160,   4,   0,   0,   4, 
+      0,   0,   4, 128,   0,   0, 
+      0, 128,   2,   0,   0, 160, 
+      0,   0, 170, 129,   4,   0, 
+      0,   4,   1,   0,   1, 128, 
+      0,   0,   0, 128,   2,   0, 
+      0, 160,   0,   0,  85, 128, 
+      6,   0,   0,   2,   0,   0, 
+      2, 128,   1,   0, 170, 176, 
+      5,   0,   0,   3,   2,   0, 
+      3, 128,   0,   0,  85, 128, 
+      1,   0, 228, 176,  66,   0, 
+      0,   3,   3,   0,  15, 128, 
+      0,   0, 228, 176,   1,   8, 
     228, 160,  66,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-    228, 128,   1,   8, 228, 160, 
-      5,   0,   0,   3,   1,   0, 
-      7, 128,   1,   0, 228, 128, 
-      0,   0,   0, 160,   1,   0, 
-      0,   2,   1,   0,   8, 128, 
+      2,   0,  15, 128,   2,   0, 
+    228, 128,   3,   8, 228, 160, 
+      2,   0,   0,   3,   0,   0, 
+      2, 128,   3,   0,   0, 128, 
+      1,   0,   0, 160,   4,   0, 
+      0,   4,   1,   0,   2, 128, 
+      0,   0,  85, 128,   2,   0, 
+    170, 161,   0,   0, 170, 128, 
+      5,   0,   0,   3,   0,   0, 
+      2, 128,   0,   0,  85, 128, 
+      2,   0,  85, 160,   4,   0, 
+      0,   4,   1,   0,   4, 128, 
+      0,   0,   0, 128,   2,   0, 
+      0, 160,   0,   0,  85, 128, 
+      1,   0,   0,   2,   1,   0, 
+      8, 128,   2,   0, 255, 160, 
+      5,   0,   0,   3,   0,   0, 
+     15, 128,   1,   0, 228, 128, 
       0,   0,   0, 160,   5,   0, 
       0,   3,   0,   0,  15, 128, 
-      0,   0,   0, 128,   1,   0, 
+      2,   0,   0, 128,   0,   0, 
     228, 128,   1,   0,   0,   2, 
       0,   8,  15, 128,   0,   0, 
     228, 128, 255, 255,   0,   0, 
-     83,  72,  68,  82,  16,   1, 
+     83,  72,  68,  82, 192,   2, 
       0,   0,  64,   0,   0,   0, 
-     68,   0,   0,   0,  89,   0, 
+    176,   0,   0,   0,  89,   0, 
       0,   4,  70, 142,  32,   0, 
       0,   0,   0,   0,   2,   0, 
       0,   0,  90,   0,   0,   3, 
       0,  96,  16,   0,   0,   0, 
       0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   0,   0, 
+      0, 112,  16,   0,   1,   0, 
       0,   0,  85,  85,   0,   0, 
      88,  24,   0,   4,   0, 112, 
-     16,   0,   5,   0,   0,   0, 
-     85,  85,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      1,   0,   0,   0,  98,  16, 
-      0,   3, 194,  16,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 104,   0, 
-      0,   2,   2,   0,   0,   0, 
+     16,   0,   2,   0,   0,   0, 
+     85,  85,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      3,   0,   0,   0,  85,  85, 
+      0,   0,  88,  24,   0,   4, 
+      0, 112,  16,   0,   5,   0, 
+      0,   0,  85,  85,   0,   0, 
+     98,  16,   0,   3,  50,  16, 
+     16,   0,   1,   0,   0,   0, 
+     98,  16,   0,   3, 114,  16, 
+     16,   0,   2,   0,   0,   0, 
+    101,   0,   0,   3, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+    104,   0,   0,   2,   3,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,  16,  16,   0, 
+      1,   0,   0,   0,  70, 126, 
+     16,   0,   3,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,   0,   0,   0,   7, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,   1,  64, 
+      0,   0, 115, 128,   0, 191, 
+     56,   0,   0,  10,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+      6,   0,  16,   0,   0,   0, 
+      0,   0,   2,  64,   0,   0, 
+    182,  74, 204,  63, 205,  30, 
+     80,  63,   0,   0,   0,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   1,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,  66,   0,  16,   0, 
+      0,   0,   0,   0,  10,   0, 
+     16,   0,   1,   0,   0,   0, 
+      1,  64,   0,   0,  18, 131, 
+    128, 189,  50,   0,   0,  10, 
+     34,   0,  16,   0,   0,   0, 
+      0,   0,  42,   0,  16,   0, 
+      0,   0,   0,   0,   1,  64, 
+      0,   0, 103,  10, 149,  63, 
+     26,   0,  16, 128,  65,   0, 
+      0,   0,   0,   0,   0,   0, 
+     50,   0,   0,   9,  18,   0, 
+     16,   0,   1,   0,   0,   0, 
+     42,   0,  16,   0,   0,   0, 
+      0,   0,   1,  64,   0,   0, 
+    103,  10, 149,  63,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
      69,   0,   0,   9, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
+     16,   0,   2,   0,   0,   0, 
      70,  16,  16,   0,   1,   0, 
       0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   8, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,   6, 128,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
+      2,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+      0,   0,   0,   7,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     10,   0,  16,   0,   2,   0, 
+      0,   0,   1,  64,   0,   0, 
+    115, 128,   0, 191,  50,   0, 
+      0,  10,  34,   0,  16,   0, 
+      1,   0,   0,   0,  10,   0, 
+     16, 128,  65,   0,   0,   0, 
+      0,   0,   0,   0,   1,  64, 
+      0,   0, 196, 148, 200,  62, 
+     26,   0,  16,   0,   0,   0, 
+      0,   0,  56,   0,   0,   7, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,   1,  64, 
+      0,   0,  76,  26,   1,  64, 
+     50,   0,   0,   9,  66,   0, 
+     16,   0,   1,   0,   0,   0, 
+     42,   0,  16,   0,   0,   0, 
+      0,   0,   1,  64,   0,   0, 
+    103,  10, 149,  63,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
+     54,   0,   0,   5, 130,   0, 
+     16,   0,   1,   0,   0,   0, 
+      1,  64,   0,   0,   0,   0, 
+    128,  63,  56,   0,   0,   8, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,   6, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  14,   0, 
+      0,   7,  50,   0,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
+     16,   0,   2,   0,   0,   0, 
+    166,  26,  16,   0,   2,   0, 
       0,   0,  69,   0,   0,   9, 
     242,   0,  16,   0,   1,   0, 
-      0,   0, 230,  26,  16,   0, 
+      0,   0,  70,   0,  16,   0, 
       1,   0,   0,   0,  70, 126, 
      16,   0,   5,   0,   0,   0, 
       0,  96,  16,   0,   0,   0, 
-      0,   0,  54,   0,   0,   6, 
-    130,   0,  16,   0,   0,   0, 
-      0,   0,  10, 128,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
       0,   0,  56,   0,   0,   7, 
     242,  32,  16,   0,   0,   0, 
       0,   0,  70,  14,  16,   0, 
       0,   0,   0,   0,   6,   0, 
      16,   0,   1,   0,   0,   0, 
      62,   0,   0,   1,  83,  84, 
      65,  84, 116,   0,   0,   0, 
-      6,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   2,   0, 
+     18,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,  12,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,  82,  68,  69,  70, 
-    220,   2,   0,   0,   1,   0, 
-      0,   0, 188,   0,   0,   0, 
-      4,   0,   0,   0,  28,   0, 
+     32,   3,   0,   0,   1,   0, 
+      0,   0,   0,   1,   0,   0, 
+      6,   0,   0,   0,  28,   0, 
       0,   0,   0,   4, 255, 255, 
-      0,   1,   0,   0, 168,   2, 
-      0,   0, 156,   0,   0,   0, 
+      0,   1,   0,   0, 236,   2, 
+      0,   0, 220,   0,   0,   0, 
       3,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0, 165,   0, 
+      1,   0,   0,   0, 229,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      1,   0,   0,   0,   1,   0, 
+      0,   0,  13,   0,   0,   0, 
+    232,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   2,   0,   0,   0, 
+      1,   0,   0,   0,  13,   0, 
+      0,   0, 236,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   4,   0,   0,   0, 
+    255, 255, 255, 255,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+     13,   0,   0,   0, 240,   0, 
       0,   0,   2,   0,   0,   0, 
       5,   0,   0,   0,   4,   0, 
       0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,   1,   0, 
+      5,   0,   0,   0,   1,   0, 
       0,   0,  13,   0,   0,   0, 
-    170,   0,   0,   0,   2,   0, 
+    246,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 115,  83,  97, 109, 
+    112, 108, 101, 114,   0, 116, 
+     89,   0, 116,  67,  98,   0, 
+    116,  67, 114,   0, 116,  77, 
+     97, 115, 107,   0,  36,  71, 
+    108, 111,  98,  97, 108, 115, 
+      0, 171, 246,   0,   0,   0, 
+     10,   0,   0,   0,  24,   1, 
+      0,   0,  48,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   8,   2,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     20,   2,   0,   0,   0,   0, 
+      0,   0,  36,   2,   0,   0, 
+     16,   0,   0,   0,   4,   0, 
+      0,   0,   2,   0,   0,   0, 
+     52,   2,   0,   0,   0,   0, 
+      0,   0,  68,   2,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     84,   2,   0,   0,   0,   0, 
+      0,   0, 100,   2,   0,   0, 
+     48,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+    116,   2,   0,   0,   0,   0, 
+      0,   0, 132,   2,   0,   0, 
+    112,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+    116,   2,   0,   0,   0,   0, 
+      0,   0, 144,   2,   0,   0, 
+    176,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+     20,   2,   0,   0,   0,   0, 
+      0,   0, 164,   2,   0,   0, 
+    192,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    180,   2,   0,   0,   0,   0, 
+      0,   0, 196,   2,   0,   0, 
+    208,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    180,   2,   0,   0,   0,   0, 
+      0,   0, 207,   2,   0,   0, 
+    224,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    180,   2,   0,   0,   0,   0, 
+      0,   0, 217,   2,   0,   0, 
+    240,   0,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+    116,   2,   0,   0,   0,   0, 
+      0,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    102,  76,  97, 121, 101, 114, 
+     79, 112,  97,  99, 105, 116, 
+    121,   0, 171, 171,   0,   0, 
+      3,   0,   1,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 105,  66, 108, 101, 
+    110, 100,  67, 111, 110, 102, 
+    105, 103,   0, 171, 171, 171, 
+      1,   0,  19,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 109,  76, 
+     97, 121, 101, 114,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,   3,   0,   3,   0, 
+      4,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    109,  80, 114, 111, 106, 101, 
+     99, 116, 105, 111, 110,   0, 
+    118,  82, 101, 110, 100, 101, 
+    114,  84,  97, 114, 103, 101, 
+    116,  79, 102, 102, 115, 101, 
+    116,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0,  77, 105,  99, 114, 
+    111, 115, 111, 102, 116,  32, 
+     40,  82,  41,  32,  72,  76, 
+     83,  76,  32,  83, 104,  97, 
+    100, 101, 114,  32,  67, 111, 
+    109, 112, 105, 108, 101, 114, 
+     32,  49,  48,  46,  48,  46, 
+     49,  48,  48,  49,  49,  46, 
+     49,  54,  51,  56,  52,   0, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   3,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   2,   0,   0,   0, 
+      7,   7,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171
+};
+ShaderBytes sYCbCrShaderMask = { YCbCrShaderMask, sizeof(YCbCrShaderMask) };
+#if 0
+//
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
+//
+//
+// Buffer Definitions: 
+//
+// cbuffer $Globals
+// {
+//
+//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
+//   float fLayerOpacity;               // Offset:   16 Size:     4
+//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
+//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
+//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
+//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
+//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
+//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
+//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
+//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
+//
+// }
+//
+//
+// Resource Bindings:
+//
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// tRGBWhite                         texture  float4          2d             t4      1 
+// tMask                             texture  float4          2d             t5      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
+//
+//
+//
+// Input signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Position              0   xyzw        0      POS   float       
+// TEXCOORD                 0   xy          1     NONE   float   xy  
+// TEXCOORD                 1   xyz         2     NONE   float   xyz 
+//
+//
+// Output signature:
+//
+// Name                 Index   Mask Register SysValue  Format   Used
+// -------------------- ----- ------ -------- -------- ------- ------
+// SV_Target                0   xyzw        0   TARGET   float   xyzw
+// SV_Target                1   xyzw        1   TARGET   float   xyzw
+//
+//
+// Constant buffer to DX9 shader constant mappings:
+//
+// Target Reg Buffer  Start Reg # of Regs        Data Conversion
+// ---------- ------- --------- --------- ----------------------
+// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
+//
+//
+// Sampler/Resource to DX9 shader sampler mappings:
+//
+// Target Sampler Source Sampler  Source Resource
+// -------------- --------------- ----------------
+// s0             s0              t0               
+// s1             s0              t4               
+// s2             s0              t5               
+//
+//
+// Level9 shader bytecode:
+//
+    ps_2_x
+    def c1, 1, 0, 0, 0
+    dcl t0.xy
+    dcl t1.xyz
+    dcl_2d s0
+    dcl_2d s1
+    dcl_2d s2
+    rcp r0.w, t1.z
+    mul r0.xy, r0.w, t1
+    texld r0, r0, s2
+    mul r0.x, r0.x, c0.x
+    texld r1, t0, s0
+    texld r2, t0, s1
+    add r2, r1, -r2
+    add r2, r2, c1.x
+    mov r1.w, r2.y
+    mul r2, r0.x, r2
+    mul r0, r0.x, r1
+    mov oC0, r0
+    mov oC1, r2
+
+// approximately 13 instruction slots used (3 texture, 10 arithmetic)
+ps_4_0
+dcl_constantbuffer CB0[2], immediateIndexed
+dcl_sampler s0, mode_default
+dcl_resource_texture2d (float,float,float,float) t0
+dcl_resource_texture2d (float,float,float,float) t4
+dcl_resource_texture2d (float,float,float,float) t5
+dcl_input_ps linear v1.xy
+dcl_input_ps linear v2.xyz
+dcl_output o0.xyzw
+dcl_output o1.xyzw
+dcl_temps 3
+div r0.xy, v2.xyxx, v2.zzzz
+sample r0.xyzw, r0.xyxx, t5.xyzw, s0
+mul r0.x, r0.x, cb0[1].x
+sample r1.xyzw, v1.xyxx, t4.xyzw, s0
+sample r2.xyzw, v1.xyxx, t0.xyzw, s0
+add r1.xyzw, -r1.xyzw, r2.xyzw
+add r1.xyzw, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
+mov r2.w, r1.y
+mul o1.xyzw, r0.xxxx, r1.xyzw
+mul o0.xyzw, r0.xxxx, r2.xyzw
+ret 
+// Approximately 11 instruction slots used
+#endif
+
+const BYTE ComponentAlphaShaderMask[] =
+{
+     68,  88,  66,  67,  15, 154, 
+     37,  42, 228,  90, 173,  36, 
+    200, 249, 246, 236, 145,  93, 
+    169,  30,   1,   0,   0,   0, 
+    176,   7,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+    152,   1,   0,   0, 108,   3, 
+      0,   0, 232,   3,   0,   0, 
+    244,   6,   0,   0, 100,   7, 
+      0,   0,  65, 111, 110,  57, 
+     88,   1,   0,   0,  88,   1, 
+      0,   0,   0,   2, 255, 255, 
+     28,   1,   0,   0,  60,   0, 
+      0,   0,   1,   0,  48,   0, 
+      0,   0,  60,   0,   0,   0, 
+     60,   0,   3,   0,  36,   0, 
+      0,   0,  60,   0,   0,   0, 
+      0,   0,   4,   0,   1,   0, 
+      5,   0,   2,   0,   0,   0, 
+      1,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   1,   2, 
+    255, 255,  81,   0,   0,   5, 
+      1,   0,  15, 160,   0,   0, 
+    128,  63,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+      3, 176,  31,   0,   0,   2, 
+      0,   0,   0, 128,   1,   0, 
+      7, 176,  31,   0,   0,   2, 
+      0,   0,   0, 144,   0,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   1,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   2,   8, 
+     15, 160,   6,   0,   0,   2, 
+      0,   0,   8, 128,   1,   0, 
+    170, 176,   5,   0,   0,   3, 
+      0,   0,   3, 128,   0,   0, 
+    255, 128,   1,   0, 228, 176, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 128, 
+      2,   8, 228, 160,   5,   0, 
+      0,   3,   0,   0,   1, 128, 
+      0,   0,   0, 128,   0,   0, 
+      0, 160,  66,   0,   0,   3, 
+      1,   0,  15, 128,   0,   0, 
+    228, 176,   0,   8, 228, 160, 
+     66,   0,   0,   3,   2,   0, 
+     15, 128,   0,   0, 228, 176, 
+      1,   8, 228, 160,   2,   0, 
+      0,   3,   2,   0,  15, 128, 
+      1,   0, 228, 128,   2,   0, 
+    228, 129,   2,   0,   0,   3, 
+      2,   0,  15, 128,   2,   0, 
+    228, 128,   1,   0,   0, 160, 
+      1,   0,   0,   2,   1,   0, 
+      8, 128,   2,   0,  85, 128, 
+      5,   0,   0,   3,   2,   0, 
+     15, 128,   0,   0,   0, 128, 
+      2,   0, 228, 128,   5,   0, 
+      0,   3,   0,   0,  15, 128, 
+      0,   0,   0, 128,   1,   0, 
+    228, 128,   1,   0,   0,   2, 
+      0,   8,  15, 128,   0,   0, 
+    228, 128,   1,   0,   0,   2, 
+      1,   8,  15, 128,   2,   0, 
+    228, 128, 255, 255,   0,   0, 
+     83,  72,  68,  82, 204,   1, 
+      0,   0,  64,   0,   0,   0, 
+    115,   0,   0,   0,  89,   0, 
+      0,   4,  70, 142,  32,   0, 
+      0,   0,   0,   0,   2,   0, 
+      0,   0,  90,   0,   0,   3, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  88,  24,   0,   4, 
+      0, 112,  16,   0,   0,   0, 
+      0,   0,  85,  85,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
+     16,   0,   4,   0,   0,   0, 
+     85,  85,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      5,   0,   0,   0,  85,  85, 
+      0,   0,  98,  16,   0,   3, 
+     50,  16,  16,   0,   1,   0, 
+      0,   0,  98,  16,   0,   3, 
+    114,  16,  16,   0,   2,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   1,   0, 
+      0,   0, 104,   0,   0,   2, 
+      3,   0,   0,   0,  14,   0, 
+      0,   7,  50,   0,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   2,   0,   0,   0, 
+    166,  26,  16,   0,   2,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,   0,  16,   0, 
+      0,   0,   0,   0,  70, 126, 
+     16,   0,   5,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  56,   0,   0,   8, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,  10, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   4,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      2,   0,   0,   0,  70,  16, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   8, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,  14, 
+     16, 128,  65,   0,   0,   0, 
+      1,   0,   0,   0,  70,  14, 
+     16,   0,   2,   0,   0,   0, 
+      0,   0,   0,  10, 242,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,  14,  16,   0,   1,   0, 
+      0,   0,   2,  64,   0,   0, 
+      0,   0, 128,  63,   0,   0, 
+    128,  63,   0,   0, 128,  63, 
+      0,   0, 128,  63,  54,   0, 
+      0,   5, 130,   0,  16,   0, 
+      2,   0,   0,   0,  26,   0, 
+     16,   0,   1,   0,   0,   0, 
+     56,   0,   0,   7, 242,  32, 
+     16,   0,   1,   0,   0,   0, 
+      6,   0,  16,   0,   0,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,  56,   0, 
+      0,   7, 242,  32,  16,   0, 
+      0,   0,   0,   0,   6,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  14,  16,   0,   2,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,  11,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+      6,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70,   4,   3,   0,   0, 
+      1,   0,   0,   0, 228,   0, 
+      0,   0,   5,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    255, 255,   0,   1,   0,   0, 
+    208,   2,   0,   0, 188,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+    197,   0,   0,   0,   2,   0, 
       0,   0,   5,   0,   0,   0, 
       4,   0,   0,   0, 255, 255, 
-    255, 255,   5,   0,   0,   0, 
+    255, 255,   0,   0,   0,   0, 
       1,   0,   0,   0,  13,   0, 
-      0,   0, 176,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0, 202,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   4,   0,   0,   0, 
+    255, 255, 255, 255,   4,   0, 
       0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0, 115,  83, 
-     97, 109, 112, 108, 101, 114, 
-      0, 116,  82,  71,  66,   0, 
-    116,  77,  97, 115, 107,   0, 
-     36,  71, 108, 111,  98,  97, 
-    108, 115,   0, 171, 171, 171, 
-    176,   0,   0,   0,  10,   0, 
-      0,   0, 212,   0,   0,   0, 
+     13,   0,   0,   0, 212,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      5,   0,   0,   0,   1,   0, 
+      0,   0,  13,   0,   0,   0, 
+    218,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 115,  83,  97, 109, 
+    112, 108, 101, 114,   0, 116, 
+     82,  71,  66,   0, 116,  82, 
+     71,  66,  87, 104, 105, 116, 
+    101,   0, 116,  77,  97, 115, 
+    107,   0,  36,  71, 108, 111, 
+     98,  97, 108, 115,   0, 171, 
+    218,   0,   0,   0,  10,   0, 
+      0,   0, 252,   0,   0,   0, 
      48,   1,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    196,   1,   0,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 208,   1, 
-      0,   0,   0,   0,   0,   0, 
-    224,   1,   0,   0,  16,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 240,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,  32,   0, 
+    236,   1,   0,   0,   0,   0, 
       0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  16,   2, 
-      0,   0,   0,   0,   0,   0, 
-     32,   2,   0,   0,  48,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
-      0,   0,   0,   0,   0,   0, 
-     64,   2,   0,   0, 112,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
-      0,   0,   0,   0,   0,   0, 
-     76,   2,   0,   0, 176,   0, 
+      0,   0,   0,   0, 248,   1, 
+      0,   0,   0,   0,   0,   0, 
+      8,   2,   0,   0,  16,   0, 
+      0,   0,   4,   0,   0,   0, 
+      2,   0,   0,   0,  24,   2, 
+      0,   0,   0,   0,   0,   0, 
+     40,   2,   0,   0,  32,   0, 
       0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 208,   1, 
-      0,   0,   0,   0,   0,   0, 
-     96,   2,   0,   0, 192,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    128,   2,   0,   0, 208,   0, 
+      0,   0,   0,   0,  56,   2, 
+      0,   0,   0,   0,   0,   0, 
+     72,   2,   0,   0,  48,   0, 
+      0,   0,  64,   0,   0,   0, 
+      0,   0,   0,   0,  88,   2, 
+      0,   0,   0,   0,   0,   0, 
+    104,   2,   0,   0, 112,   0, 
+      0,   0,  64,   0,   0,   0, 
+      0,   0,   0,   0,  88,   2, 
+      0,   0,   0,   0,   0,   0, 
+    116,   2,   0,   0, 176,   0, 
       0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    139,   2,   0,   0, 224,   0, 
+      0,   0,   0,   0, 248,   1, 
+      0,   0,   0,   0,   0,   0, 
+    136,   2,   0,   0, 192,   0, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0, 152,   2, 
+      0,   0,   0,   0,   0,   0, 
+    168,   2,   0,   0, 208,   0, 
       0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    149,   2,   0,   0, 240,   0, 
+      0,   0,   0,   0, 152,   2, 
+      0,   0,   0,   0,   0,   0, 
+    179,   2,   0,   0, 224,   0, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0, 152,   2, 
+      0,   0,   0,   0,   0,   0, 
+    189,   2,   0,   0, 240,   0, 
       0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
+      0,   0,   0,   0,  88,   2, 
       0,   0,   0,   0,   0,   0, 
     102,  76,  97, 121, 101, 114, 
      67, 111, 108, 111, 114,   0, 
       1,   0,   3,   0,   1,   0, 
       4,   0,   0,   0,   0,   0, 
       0,   0,   0,   0, 102,  76, 
      97, 121, 101, 114,  79, 112, 
      97,  99, 105, 116, 121,   0, 
@@ -3733,1751 +4654,56 @@ const BYTE RGBShaderMask[] =
      66,  97,  99, 107, 100, 114, 
     111, 112,  84, 114,  97, 110, 
     115, 102, 111, 114, 109,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,   3, 
-      0,   0,  92,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,  12, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  97, 114, 
-    103, 101, 116,   0, 171, 171
-};
-ShaderBytes sRGBShaderMask = { RGBShaderMask, sizeof(RGBShaderMask) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:   16 Size:     4
-//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
-//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
-//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
-//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
-//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
-//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
-//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
-//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1     zw        1     NONE   float     zw
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Target                0   xyzw        0   TARGET   float   xyzw
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
-//
-//
-// Sampler/Resource to DX9 shader sampler mappings:
-//
-// Target Sampler Source Sampler  Source Resource
-// -------------- --------------- ----------------
-// s0             s0              t0               
-// s1             s0              t5               
-//
-//
-// Level9 shader bytecode:
-//
-    ps_2_x
-    dcl t0
-    dcl_2d s0
-    dcl_2d s1
-    mov r0.xy, t0.wzzw
-    texld r1, t0, s0
-    texld r0, r0, s1
-    mul r1, r1, c0.x
-    mul r0, r0.x, r1
-    mov oC0, r0
-
-// approximately 6 instruction slots used (2 texture, 4 arithmetic)
-ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
-dcl_sampler s0, mode_default
-dcl_resource_texture2d (float,float,float,float) t0
-dcl_resource_texture2d (float,float,float,float) t5
-dcl_input_ps linear v1.xy
-dcl_input_ps linear v1.zw
-dcl_output o0.xyzw
-dcl_temps 2
-sample r0.xyzw, v1.xyxx, t0.xyzw, s0
-mul r0.xyzw, r0.xyzw, cb0[1].xxxx
-sample r1.xyzw, v1.zwzz, t5.xyzw, s0
-mul o0.xyzw, r0.xyzw, r1.xxxx
-ret 
-// Approximately 5 instruction slots used
-#endif
-
-const BYTE RGBAShaderMask[] =
-{
-     68,  88,  66,  67,   4, 189, 
-    159, 243,  83,  63,  56,  82, 
-    222, 120, 117,  50,  17, 240, 
-    195,  36,   1,   0,   0,   0, 
-      0,   6,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    252,   0,   0,   0, 252,   1, 
-      0,   0, 120,   2,   0,   0, 
-     92,   5,   0,   0, 204,   5, 
-      0,   0,  65, 111, 110,  57, 
-    188,   0,   0,   0, 188,   0, 
-      0,   0,   0,   2, 255, 255, 
-    132,   0,   0,   0,  56,   0, 
-      0,   0,   1,   0,  44,   0, 
-      0,   0,  56,   0,   0,   0, 
-     56,   0,   2,   0,  36,   0, 
-      0,   0,  56,   0,   0,   0, 
-      0,   0,   5,   0,   1,   0, 
-      0,   0,   1,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   2, 255, 255,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      0,   0,  15, 176,  31,   0, 
-      0,   2,   0,   0,   0, 144, 
-      0,   8,  15, 160,  31,   0, 
-      0,   2,   0,   0,   0, 144, 
-      1,   8,  15, 160,   1,   0, 
-      0,   2,   0,   0,   3, 128, 
-      0,   0, 235, 176,  66,   0, 
-      0,   3,   1,   0,  15, 128, 
-      0,   0, 228, 176,   0,   8, 
-    228, 160,  66,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-    228, 128,   1,   8, 228, 160, 
-      5,   0,   0,   3,   1,   0, 
-     15, 128,   1,   0, 228, 128, 
-      0,   0,   0, 160,   5,   0, 
-      0,   3,   0,   0,  15, 128, 
-      0,   0,   0, 128,   1,   0, 
-    228, 128,   1,   0,   0,   2, 
-      0,   8,  15, 128,   0,   0, 
-    228, 128, 255, 255,   0,   0, 
-     83,  72,  68,  82, 248,   0, 
-      0,   0,  64,   0,   0,   0, 
-     62,   0,   0,   0,  89,   0, 
-      0,   4,  70, 142,  32,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,  90,   0,   0,   3, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   0,   0, 
-      0,   0,  85,  85,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   5,   0,   0,   0, 
-     85,  85,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      1,   0,   0,   0,  98,  16, 
-      0,   3, 194,  16,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 104,   0, 
-      0,   2,   2,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,   6, 128,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0, 230,  26,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   5,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   7, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,   6,   0, 
-     16,   0,   1,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 116,   0,   0,   0, 
-      5,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  82,  68,  69,  70, 
-    220,   2,   0,   0,   1,   0, 
-      0,   0, 188,   0,   0,   0, 
-      4,   0,   0,   0,  28,   0, 
-      0,   0,   0,   4, 255, 255, 
-      0,   1,   0,   0, 168,   2, 
-      0,   0, 156,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0, 165,   0, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-    170,   0,   0,   0,   2,   0, 
-      0,   0,   5,   0,   0,   0, 
-      4,   0,   0,   0, 255, 255, 
-    255, 255,   5,   0,   0,   0, 
-      1,   0,   0,   0,  13,   0, 
-      0,   0, 176,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0, 115,  83, 
-     97, 109, 112, 108, 101, 114, 
-      0, 116,  82,  71,  66,   0, 
-    116,  77,  97, 115, 107,   0, 
-     36,  71, 108, 111,  98,  97, 
-    108, 115,   0, 171, 171, 171, 
-    176,   0,   0,   0,  10,   0, 
-      0,   0, 212,   0,   0,   0, 
-     48,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    196,   1,   0,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 208,   1, 
-      0,   0,   0,   0,   0,   0, 
-    224,   1,   0,   0,  16,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0, 240,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,  32,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  16,   2, 
-      0,   0,   0,   0,   0,   0, 
-     32,   2,   0,   0,  48,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
-      0,   0,   0,   0,   0,   0, 
-     64,   2,   0,   0, 112,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
-      0,   0,   0,   0,   0,   0, 
-     76,   2,   0,   0, 176,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 208,   1, 
-      0,   0,   0,   0,   0,   0, 
-     96,   2,   0,   0, 192,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    128,   2,   0,   0, 208,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    139,   2,   0,   0, 224,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 112,   2, 
-      0,   0,   0,   0,   0,   0, 
-    149,   2,   0,   0, 240,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0,  48,   2, 
-      0,   0,   0,   0,   0,   0, 
-    102,  76,  97, 121, 101, 114, 
-     67, 111, 108, 111, 114,   0, 
-      1,   0,   3,   0,   1,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
-    118,  84, 101, 120, 116, 117, 
-    114, 101,  67, 111, 111, 114, 
-    100, 115,   0, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 118,  76,  97, 121, 
-    101, 114,  81, 117,  97, 100, 
-      0, 118,  77,  97, 115, 107, 
-     81, 117,  97, 100,   0, 109, 
-     66,  97,  99, 107, 100, 114, 
-    111, 112,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-     77, 105,  99, 114, 111, 115, 
-    111, 102, 116,  32,  40,  82, 
-     41,  32,  72,  76,  83,  76, 
-     32,  83, 104,  97, 100, 101, 
-    114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78, 104,   0,   0,   0, 
       3,   0,   0,   0,   8,   0, 
       0,   0,  80,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  92,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       1,   0,   0,   0,   3,   3, 
       0,   0,  92,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,  12, 
+      2,   0,   0,   0,   7,   7, 
       0,   0,  83,  86,  95,  80, 
     111, 115, 105, 116, 105, 111, 
     110,   0,  84,  69,  88,  67, 
      79,  79,  82,  68,   0, 171, 
     171, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
+     68,   0,   0,   0,   2,   0, 
       0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
+     56,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
+     56,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171
 };
-ShaderBytes sRGBAShaderMask = { RGBAShaderMask, sizeof(RGBAShaderMask) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:   16 Size:     4
-//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
-//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
-//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
-//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
-//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
-//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
-//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
-//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// LayerTextureSamplerLinear         sampler      NA          NA    1        1
-// tRGB                              texture  float4          2d    0        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1   xyz         2     NONE   float   xyz 
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Target                0   xyzw        0   TARGET   float   xyzw
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
-//
-//
-// Sampler/Resource to DX9 shader sampler mappings:
-//
-// Target Sampler Source Sampler  Source Resource
-// -------------- --------------- ----------------
-// s0             s0              t0               
-// s1             s1              t5               
-//
-//
-// Level9 shader bytecode:
-//
-    ps_2_x
-    dcl t0.xy
-    dcl t1.xyz
-    dcl_2d s0
-    dcl_2d s1
-    rcp r0.w, t1.z
-    mul r0.xy, r0.w, t1
-    texld r1, t0, s0
-    texld r0, r0, s1
-    mul r1, r1, c0.x
-    mul r0, r0.x, r1
-    mov oC0, r0
-
-// approximately 7 instruction slots used (2 texture, 5 arithmetic)
-ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
-dcl_sampler s0, mode_default
-dcl_sampler s1, mode_default
-dcl_resource_texture2d (float,float,float,float) t0
-dcl_resource_texture2d (float,float,float,float) t5
-dcl_input_ps linear v1.xy
-dcl_input_ps linear v2.xyz
-dcl_output o0.xyzw
-dcl_temps 2
-div r0.xy, v2.xyxx, v2.zzzz
-sample r0.xyzw, r0.xyxx, t5.xyzw, s1
-sample r1.xyzw, v1.xyxx, t0.xyzw, s0
-mul r1.xyzw, r1.xyzw, cb0[1].xxxx
-mul o0.xyzw, r0.xxxx, r1.xyzw
-ret 
-// Approximately 6 instruction slots used
-#endif
-
-const BYTE RGBAShaderMask3D[] =
-{
-     68,  88,  66,  67,   3, 204, 
-    183, 228,  12,  40,  73, 204, 
-    169, 156,  99, 236, 238, 160, 
-    185, 204,   1,   0,   0,   0, 
-    124,   6,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-     24,   1,   0,   0,  64,   2, 
-      0,   0, 188,   2,   0,   0, 
-    216,   5,   0,   0,  72,   6, 
-      0,   0,  65, 111, 110,  57, 
-    216,   0,   0,   0, 216,   0, 
-      0,   0,   0,   2, 255, 255, 
-    160,   0,   0,   0,  56,   0, 
-      0,   0,   1,   0,  44,   0, 
-      0,   0,  56,   0,   0,   0, 
-     56,   0,   2,   0,  36,   0, 
-      0,   0,  56,   0,   0,   0, 
-      0,   0,   5,   1,   1,   0, 
-      0,   0,   1,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   2, 255, 255,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      0,   0,   3, 176,  31,   0, 
-      0,   2,   0,   0,   0, 128, 
-      1,   0,   7, 176,  31,   0, 
-      0,   2,   0,   0,   0, 144, 
-      0,   8,  15, 160,  31,   0, 
-      0,   2,   0,   0,   0, 144, 
-      1,   8,  15, 160,   6,   0, 
-      0,   2,   0,   0,   8, 128, 
-      1,   0, 170, 176,   5,   0, 
-      0,   3,   0,   0,   3, 128, 
-      0,   0, 255, 128,   1,   0, 
-    228, 176,  66,   0,   0,   3, 
-      1,   0,  15, 128,   0,   0, 
-    228, 176,   0,   8, 228, 160, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 128, 
-      1,   8, 228, 160,   5,   0, 
-      0,   3,   1,   0,  15, 128, 
-      1,   0, 228, 128,   0,   0, 
-      0, 160,   5,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-      0, 128,   1,   0, 228, 128, 
-      1,   0,   0,   2,   0,   8, 
-     15, 128,   0,   0, 228, 128, 
-    255, 255,   0,   0,  83,  72, 
-     68,  82,  32,   1,   0,   0, 
-     64,   0,   0,   0,  72,   0, 
-      0,   0,  89,   0,   0,   4, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   2,   0,   0,   0, 
-     90,   0,   0,   3,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     90,   0,   0,   3,   0,  96, 
-     16,   0,   1,   0,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   0,   0,   0,   0, 
-     85,  85,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      5,   0,   0,   0,  85,  85, 
-      0,   0,  98,  16,   0,   3, 
-     50,  16,  16,   0,   1,   0, 
-      0,   0,  98,  16,   0,   3, 
-    114,  16,  16,   0,   2,   0, 
-      0,   0, 101,   0,   0,   3, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0, 104,   0,   0,   2, 
-      2,   0,   0,   0,  14,   0, 
-      0,   7,  50,   0,  16,   0, 
-      0,   0,   0,   0,  70,  16, 
-     16,   0,   2,   0,   0,   0, 
-    166,  26,  16,   0,   2,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70,   0,  16,   0, 
-      0,   0,   0,   0,  70, 126, 
-     16,   0,   5,   0,   0,   0, 
-      0,  96,  16,   0,   1,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,   6, 128, 
-     32,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  56,   0, 
-      0,   7, 242,  32,  16,   0, 
-      0,   0,   0,   0,   6,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  62,   0,   0,   1, 
-     83,  84,  65,  84, 116,   0, 
-      0,   0,   6,   0,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  82,  68, 
-     69,  70,  20,   3,   0,   0, 
-      1,   0,   0,   0, 244,   0, 
-      0,   0,   5,   0,   0,   0, 
-     28,   0,   0,   0,   0,   4, 
-    255, 255,   0,   1,   0,   0, 
-    224,   2,   0,   0, 188,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-    197,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0, 223,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0, 228,   0, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      5,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-    234,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0, 115,  83,  97, 109, 
-    112, 108, 101, 114,   0,  76, 
-     97, 121, 101, 114,  84, 101, 
-    120, 116, 117, 114, 101,  83, 
-     97, 109, 112, 108, 101, 114, 
-     76, 105, 110, 101,  97, 114, 
-      0, 116,  82,  71,  66,   0, 
-    116,  77,  97, 115, 107,   0, 
-     36,  71, 108, 111,  98,  97, 
-    108, 115,   0, 171, 234,   0, 
-      0,   0,  10,   0,   0,   0, 
-     12,   1,   0,   0,  48,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 252,   1, 
-      0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   8,   2,   0,   0, 
-      0,   0,   0,   0,  24,   2, 
-      0,   0,  16,   0,   0,   0, 
-      4,   0,   0,   0,   2,   0, 
-      0,   0,  40,   2,   0,   0, 
-      0,   0,   0,   0,  56,   2, 
-      0,   0,  32,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,  72,   2,   0,   0, 
-      0,   0,   0,   0,  88,   2, 
-      0,   0,  48,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0, 104,   2,   0,   0, 
-      0,   0,   0,   0, 120,   2, 
-      0,   0, 112,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0, 104,   2,   0,   0, 
-      0,   0,   0,   0, 132,   2, 
-      0,   0, 176,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   8,   2,   0,   0, 
-      0,   0,   0,   0, 152,   2, 
-      0,   0, 192,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 168,   2,   0,   0, 
-      0,   0,   0,   0, 184,   2, 
-      0,   0, 208,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 168,   2,   0,   0, 
-      0,   0,   0,   0, 195,   2, 
-      0,   0, 224,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 168,   2,   0,   0, 
-      0,   0,   0,   0, 205,   2, 
-      0,   0, 240,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0, 104,   2,   0,   0, 
-      0,   0,   0,   0, 102,  76, 
-     97, 121, 101, 114,  67, 111, 
-    108, 111, 114,   0,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 102,  76,  97, 121, 
-    101, 114,  79, 112,  97,  99, 
-    105, 116, 121,   0, 171, 171, 
-      0,   0,   3,   0,   1,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 105,  66, 
-    108, 101, 110, 100,  67, 111, 
-    110, 102, 105, 103,   0, 171, 
-    171, 171,   1,   0,  19,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    109,  76,  97, 121, 101, 114, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0,   3,   0, 
-      3,   0,   4,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 109,  80, 114, 111, 
-    106, 101,  99, 116, 105, 111, 
-    110,   0, 118,  82, 101, 110, 
-    100, 101, 114,  84,  97, 114, 
-    103, 101, 116,  79, 102, 102, 
-    115, 101, 116,   0, 118,  84, 
-    101, 120, 116, 117, 114, 101, 
-     67, 111, 111, 114, 100, 115, 
-      0, 171,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    118,  76,  97, 121, 101, 114, 
-     81, 117,  97, 100,   0, 118, 
-     77,  97, 115, 107,  81, 117, 
-     97, 100,   0, 109,  66,  97, 
-     99, 107, 100, 114, 111, 112, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0,  77, 105, 
-     99, 114, 111, 115, 111, 102, 
-    116,  32,  40,  82,  41,  32, 
-     72,  76,  83,  76,  32,  83, 
-    104,  97, 100, 101, 114,  32, 
-     67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  54,  46,  51, 
-     46,  57,  54,  48,  48,  46, 
-     49,  54,  51,  56,  52,   0, 
-    171, 171,  73,  83,  71,  78, 
-    104,   0,   0,   0,   3,   0, 
-      0,   0,   8,   0,   0,   0, 
-     80,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     92,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
-      0,   0,   3,   3,   0,   0, 
-     92,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   2,   0, 
-      0,   0,   7,   7,   0,   0, 
-     83,  86,  95,  80, 111, 115, 
-    105, 116, 105, 111, 110,   0, 
-     84,  69,  88,  67,  79,  79, 
-     82,  68,   0, 171, 171, 171, 
-     79,  83,  71,  78,  44,   0, 
-      0,   0,   1,   0,   0,   0, 
-      8,   0,   0,   0,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0,  83,  86, 
-     95,  84,  97, 114, 103, 101, 
-    116,   0, 171, 171
-};
-ShaderBytes sRGBAShaderMask3D = { RGBAShaderMask3D, sizeof(RGBAShaderMask3D) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:   16 Size:     4
-//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
-//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
-//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
-//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
-//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
-//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
-//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
-//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tY                                texture  float4          2d    1        1
-// tCb                               texture  float4          2d    2        1
-// tCr                               texture  float4          2d    3        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1     zw        1     NONE   float     zw
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Target                0   xyzw        0   TARGET   float   xyzw
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
-//
-//
-// Sampler/Resource to DX9 shader sampler mappings:
-//
-// Target Sampler Source Sampler  Source Resource
-// -------------- --------------- ----------------
-// s0             s0              t1               
-// s1             s0              t2               
-// s2             s0              t3               
-// s3             s0              t5               
-//
-//
-// Level9 shader bytecode:
-//
-    ps_2_x
-    def c1, -0.50195998, -0.0627499968, 1.59603, 0.812969983
-    def c2, 1.16437995, 2.01723003, 0.391759992, 1
-    dcl t0
-    dcl_2d s0
-    dcl_2d s1
-    dcl_2d s2
-    dcl_2d s3
-    texld r0, t0, s0
-    texld r1, t0, s2
-    add r0.y, r1.x, c1.x
-    mul r0.yz, r0.y, c1.xzww
-    add r0.x, r0.x, c1.y
-    mad r0.z, r0.x, c2.x, -r0.z
-    mad r1.x, r0.x, c2.x, r0.y
-    mov r2.xy, t0.wzzw
-    texld r3, t0, s1
-    texld r2, r2, s3
-    add r0.y, r3.x, c1.x
-    mad r1.y, r0.y, -c2.z, r0.z
-    mul r0.y, r0.y, c2.y
-    mad r1.z, r0.x, c2.x, r0.y
-    mov r1.w, c2.w
-    mul r0, r1, c0.x
-    mul r0, r2.x, r0
-    mov oC0, r0
-
-// approximately 18 instruction slots used (4 texture, 14 arithmetic)
-ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
-dcl_sampler s0, mode_default
-dcl_resource_texture2d (float,float,float,float) t1
-dcl_resource_texture2d (float,float,float,float) t2
-dcl_resource_texture2d (float,float,float,float) t3
-dcl_resource_texture2d (float,float,float,float) t5
-dcl_input_ps linear v1.xy
-dcl_input_ps linear v1.zw
-dcl_output o0.xyzw
-dcl_temps 3
-sample r0.xyzw, v1.xyxx, t3.xyzw, s0
-add r0.x, r0.x, l(-0.501960)
-mul r0.xy, r0.xxxx, l(1.596030, 0.812970, 0.000000, 0.000000)
-sample r1.xyzw, v1.xyxx, t1.xyzw, s0
-add r0.z, r1.x, l(-0.062750)
-mad r0.y, r0.z, l(1.164380), -r0.y
-mad r1.x, r0.z, l(1.164380), r0.x
-sample r2.xyzw, v1.xyxx, t2.xyzw, s0
-add r0.x, r2.x, l(-0.501960)
-mad r1.y, -r0.x, l(0.391760), r0.y
-mul r0.x, r0.x, l(2.017230)
-mad r1.z, r0.z, l(1.164380), r0.x
-mov r1.w, l(1.000000)
-mul r0.xyzw, r1.xyzw, cb0[1].xxxx
-sample r1.xyzw, v1.zwzz, t5.xyzw, s0
-mul o0.xyzw, r0.xyzw, r1.xxxx
-ret 
-// Approximately 17 instruction slots used
-#endif
-
-const BYTE YCbCrShaderMask[] =
-{
-     68,  88,  66,  67, 221,  32, 
-    127,  20, 214, 189,  35,  93, 
-    175, 146,  75, 225,   8, 148, 
-    130, 206,   1,   0,   0,   0, 
-     12,   9,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-     24,   2,   0,   0, 196,   4, 
-      0,   0,  64,   5,   0,   0, 
-    104,   8,   0,   0, 216,   8, 
-      0,   0,  65, 111, 110,  57, 
-    216,   1,   0,   0, 216,   1, 
-      0,   0,   0,   2, 255, 255, 
-    152,   1,   0,   0,  64,   0, 
-      0,   0,   1,   0,  52,   0, 
-      0,   0,  64,   0,   0,   0, 
-     64,   0,   4,   0,  36,   0, 
-      0,   0,  64,   0,   1,   0, 
-      0,   0,   2,   0,   1,   0, 
-      3,   0,   2,   0,   5,   0, 
-      3,   0,   0,   0,   1,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   1,   2, 255, 255, 
-     81,   0,   0,   5,   1,   0, 
-     15, 160, 115, 128,   0, 191, 
-     18, 131, 128, 189, 182,  74, 
-    204,  63, 205,  30,  80,  63, 
-     81,   0,   0,   5,   2,   0, 
-     15, 160, 103,  10, 149,  63, 
-     76,  26,   1,  64, 196, 148, 
-    200,  62,   0,   0, 128,  63, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,  15, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   0,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   1,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   2,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   3,   8,  15, 160, 
-     66,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0, 228, 176, 
-      0,   8, 228, 160,  66,   0, 
-      0,   3,   1,   0,  15, 128, 
-      0,   0, 228, 176,   2,   8, 
-    228, 160,   2,   0,   0,   3, 
-      0,   0,   2, 128,   1,   0, 
-      0, 128,   1,   0,   0, 160, 
-      5,   0,   0,   3,   0,   0, 
-      6, 128,   0,   0,  85, 128, 
-      1,   0, 248, 160,   2,   0, 
-      0,   3,   0,   0,   1, 128, 
-      0,   0,   0, 128,   1,   0, 
-     85, 160,   4,   0,   0,   4, 
-      0,   0,   4, 128,   0,   0, 
-      0, 128,   2,   0,   0, 160, 
-      0,   0, 170, 129,   4,   0, 
-      0,   4,   1,   0,   1, 128, 
-      0,   0,   0, 128,   2,   0, 
-      0, 160,   0,   0,  85, 128, 
-      1,   0,   0,   2,   2,   0, 
-      3, 128,   0,   0, 235, 176, 
-     66,   0,   0,   3,   3,   0, 
-     15, 128,   0,   0, 228, 176, 
-      1,   8, 228, 160,  66,   0, 
-      0,   3,   2,   0,  15, 128, 
-      2,   0, 228, 128,   3,   8, 
-    228, 160,   2,   0,   0,   3, 
-      0,   0,   2, 128,   3,   0, 
-      0, 128,   1,   0,   0, 160, 
-      4,   0,   0,   4,   1,   0, 
-      2, 128,   0,   0,  85, 128, 
-      2,   0, 170, 161,   0,   0, 
-    170, 128,   5,   0,   0,   3, 
-      0,   0,   2, 128,   0,   0, 
-     85, 128,   2,   0,  85, 160, 
-      4,   0,   0,   4,   1,   0, 
-      4, 128,   0,   0,   0, 128, 
-      2,   0,   0, 160,   0,   0, 
-     85, 128,   1,   0,   0,   2, 
-      1,   0,   8, 128,   2,   0, 
-    255, 160,   5,   0,   0,   3, 
-      0,   0,  15, 128,   1,   0, 
-    228, 128,   0,   0,   0, 160, 
-      5,   0,   0,   3,   0,   0, 
-     15, 128,   2,   0,   0, 128, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   0,   8,  15, 128, 
-      0,   0, 228, 128, 255, 255, 
-      0,   0,  83,  72,  68,  82, 
-    164,   2,   0,   0,  64,   0, 
-      0,   0, 169,   0,   0,   0, 
-     89,   0,   0,   4,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,  90,   0, 
-      0,   3,   0,  96,  16,   0, 
-      0,   0,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      1,   0,   0,   0,  85,  85, 
-      0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   2,   0, 
-      0,   0,  85,  85,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   3,   0,   0,   0, 
-     85,  85,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      5,   0,   0,   0,  85,  85, 
-      0,   0,  98,  16,   0,   3, 
-     50,  16,  16,   0,   1,   0, 
-      0,   0,  98,  16,   0,   3, 
-    194,  16,  16,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0, 104,   0,   0,   2, 
-      3,   0,   0,   0,  69,   0, 
-      0,   9, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,  16, 
-     16,   0,   1,   0,   0,   0, 
-     70, 126,  16,   0,   3,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   7,  18,   0,  16,   0, 
-      0,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0, 115, 128, 
-      0, 191,  56,   0,   0,  10, 
-     50,   0,  16,   0,   0,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0, 182,  74, 204,  63, 
-    205,  30,  80,  63,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      1,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   7,  66,   0, 
-     16,   0,   0,   0,   0,   0, 
-     10,   0,  16,   0,   1,   0, 
-      0,   0,   1,  64,   0,   0, 
-     18, 131, 128, 189,  50,   0, 
-      0,  10,  34,   0,  16,   0, 
-      0,   0,   0,   0,  42,   0, 
-     16,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0, 103,  10, 
-    149,  63,  26,   0,  16, 128, 
-     65,   0,   0,   0,   0,   0, 
-      0,   0,  50,   0,   0,   9, 
-     18,   0,  16,   0,   1,   0, 
-      0,   0,  42,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0, 103,  10, 149,  63, 
-     10,   0,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   2,   0, 
-      0,   0,  70,  16,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   2,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,   0,   0,   0,   7, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  10,   0,  16,   0, 
-      2,   0,   0,   0,   1,  64, 
-      0,   0, 115, 128,   0, 191, 
-     50,   0,   0,  10,  34,   0, 
-     16,   0,   1,   0,   0,   0, 
-     10,   0,  16, 128,  65,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0, 196, 148, 
-    200,  62,  26,   0,  16,   0, 
-      0,   0,   0,   0,  56,   0, 
-      0,   7,  18,   0,  16,   0, 
-      0,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-      1,  64,   0,   0,  76,  26, 
-      1,  64,  50,   0,   0,   9, 
-     66,   0,  16,   0,   1,   0, 
-      0,   0,  42,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0, 103,  10, 149,  63, 
-     10,   0,  16,   0,   0,   0, 
-      0,   0,  54,   0,   0,   5, 
-    130,   0,  16,   0,   1,   0, 
-      0,   0,   1,  64,   0,   0, 
-      0,   0, 128,  63,  56,   0, 
-      0,   8, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-      6, 128,  32,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-    230,  26,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      5,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   7, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,   6,   0,  16,   0, 
-      1,   0,   0,   0,  62,   0, 
-      0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,  17,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,  11,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70,  32,   3, 
-      0,   0,   1,   0,   0,   0, 
-      0,   1,   0,   0,   6,   0, 
-      0,   0,  28,   0,   0,   0, 
-      0,   4, 255, 255,   0,   1, 
-      0,   0, 236,   2,   0,   0, 
-    220,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0, 229,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0, 232,   0, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      2,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-    236,   0,   0,   0,   2,   0, 
-      0,   0,   5,   0,   0,   0, 
-      4,   0,   0,   0, 255, 255, 
-    255, 255,   3,   0,   0,   0, 
-      1,   0,   0,   0,  13,   0, 
-      0,   0, 240,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   5,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0, 246,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-    115,  83,  97, 109, 112, 108, 
-    101, 114,   0, 116,  89,   0, 
-    116,  67,  98,   0, 116,  67, 
-    114,   0, 116,  77,  97, 115, 
-    107,   0,  36,  71, 108, 111, 
-     98,  97, 108, 115,   0, 171, 
-    246,   0,   0,   0,  10,   0, 
-      0,   0,  24,   1,   0,   0, 
-     48,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      8,   2,   0,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  20,   2, 
-      0,   0,   0,   0,   0,   0, 
-     36,   2,   0,   0,  16,   0, 
-      0,   0,   4,   0,   0,   0, 
-      2,   0,   0,   0,  52,   2, 
-      0,   0,   0,   0,   0,   0, 
-     68,   2,   0,   0,  32,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  84,   2, 
-      0,   0,   0,   0,   0,   0, 
-    100,   2,   0,   0,  48,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0, 116,   2, 
-      0,   0,   0,   0,   0,   0, 
-    132,   2,   0,   0, 112,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0, 116,   2, 
-      0,   0,   0,   0,   0,   0, 
-    144,   2,   0,   0, 176,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  20,   2, 
-      0,   0,   0,   0,   0,   0, 
-    164,   2,   0,   0, 192,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 180,   2, 
-      0,   0,   0,   0,   0,   0, 
-    196,   2,   0,   0, 208,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 180,   2, 
-      0,   0,   0,   0,   0,   0, 
-    207,   2,   0,   0, 224,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 180,   2, 
-      0,   0,   0,   0,   0,   0, 
-    217,   2,   0,   0, 240,   0, 
-      0,   0,  64,   0,   0,   0, 
-      0,   0,   0,   0, 116,   2, 
-      0,   0,   0,   0,   0,   0, 
-    102,  76,  97, 121, 101, 114, 
-     67, 111, 108, 111, 114,   0, 
-      1,   0,   3,   0,   1,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
-    118,  84, 101, 120, 116, 117, 
-    114, 101,  67, 111, 111, 114, 
-    100, 115,   0, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 118,  76,  97, 121, 
-    101, 114,  81, 117,  97, 100, 
-      0, 118,  77,  97, 115, 107, 
-     81, 117,  97, 100,   0, 109, 
-     66,  97,  99, 107, 100, 114, 
-    111, 112,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-     77, 105,  99, 114, 111, 115, 
-    111, 102, 116,  32,  40,  82, 
-     41,  32,  72,  76,  83,  76, 
-     32,  83, 104,  97, 100, 101, 
-    114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
-     71,  78, 104,   0,   0,   0, 
-      3,   0,   0,   0,   8,   0, 
-      0,   0,  80,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  92,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,   3, 
-      0,   0,  92,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,  12, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  97, 114, 
-    103, 101, 116,   0, 171, 171
-};
-ShaderBytes sYCbCrShaderMask = { YCbCrShaderMask, sizeof(YCbCrShaderMask) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4 fLayerColor;                // Offset:    0 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:   16 Size:     4
-//   uint4 iBlendConfig;                // Offset:   32 Size:    16 [unused]
-//   float4x4 mLayerTransform;          // Offset:   48 Size:    64 [unused]
-//   float4x4 mProjection;              // Offset:  112 Size:    64 [unused]
-//   float4 vRenderTargetOffset;        // Offset:  176 Size:    16 [unused]
-//   float4 vTextureCoords;             // Offset:  192 Size:    16 [unused]
-//   float4 vLayerQuad;                 // Offset:  208 Size:    16 [unused]
-//   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
-//   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// tRGB                              texture  float4          2d    0        1
-// tRGBWhite                         texture  float4          2d    4        1
-// tMask                             texture  float4          2d    5        1
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float       
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 1     zw        1     NONE   float     zw
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Target                0   xyzw        0   TARGET   float   xyzw
-// SV_Target                1   xyzw        1   TARGET   float   xyzw
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c0         cb0             1         1  ( FLT, FLT, FLT, FLT)
-//
-//
-// Sampler/Resource to DX9 shader sampler mappings:
-//
-// Target Sampler Source Sampler  Source Resource
-// -------------- --------------- ----------------
-// s0             s0              t0               
-// s1             s0              t4               
-// s2             s0              t5               
-//
-//
-// Level9 shader bytecode:
-//
-    ps_2_x
-    def c1, 1, 0, 0, 0
-    dcl t0
-    dcl_2d s0
-    dcl_2d s1
-    dcl_2d s2
-    mov r0.xy, t0.wzzw
-    texld r0, r0, s2
-    mul r0.x, r0.x, c0.x
-    texld r1, t0, s0
-    texld r2, t0, s1
-    add r2, r1, -r2
-    add r2, r2, c1.x
-    mov r1.w, r2.y
-    mul r2, r0.x, r2
-    mul r0, r0.x, r1
-    mov oC0, r0
-    mov oC1, r2
-
-// approximately 12 instruction slots used (3 texture, 9 arithmetic)
-ps_4_0
-dcl_constantbuffer cb0[2], immediateIndexed
-dcl_sampler s0, mode_default
-dcl_resource_texture2d (float,float,float,float) t0
-dcl_resource_texture2d (float,float,float,float) t4
-dcl_resource_texture2d (float,float,float,float) t5
-dcl_input_ps linear v1.xy
-dcl_input_ps linear v1.zw
-dcl_output o0.xyzw
-dcl_output o1.xyzw
-dcl_temps 3
-sample r0.xyzw, v1.xyxx, t4.xyzw, s0
-sample r1.xyzw, v1.xyxx, t0.xyzw, s0
-add r0.xyzw, -r0.xyzw, r1.xyzw
-add r0.xyzw, r0.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
-mov r1.w, r0.y
-sample r2.xyzw, v1.zwzz, t5.xyzw, s0
-mul r2.x, r2.x, cb0[1].x
-mul o0.xyzw, r1.xyzw, r2.xxxx
-mul o1.xyzw, r0.xyzw, r2.xxxx
-ret 
-// Approximately 10 instruction slots used
-#endif
-
-const BYTE ComponentAlphaShaderMask[] =
-{
-     68,  88,  66,  67, 231, 247, 
-     98, 196,  91, 244, 200,  52, 
-    117,  97, 164, 190, 237,  87, 
-    108,  62,   1,   0,   0,   0, 
-    120,   7,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    124,   1,   0,   0,  52,   3, 
-      0,   0, 176,   3,   0,   0, 
-    188,   6,   0,   0,  44,   7, 
-      0,   0,  65, 111, 110,  57, 
-     60,   1,   0,   0,  60,   1, 
-      0,   0,   0,   2, 255, 255, 
-      0,   1,   0,   0,  60,   0, 
-      0,   0,   1,   0,  48,   0, 
-      0,   0,  60,   0,   0,   0, 
-     60,   0,   3,   0,  36,   0, 
-      0,   0,  60,   0,   0,   0, 
-      0,   0,   4,   0,   1,   0, 
-      5,   0,   2,   0,   0,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   1,   2, 
-    255, 255,  81,   0,   0,   5, 
-      1,   0,  15, 160,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  31,   0,   0,   2, 
-      0,   0,   0, 128,   0,   0, 
-     15, 176,  31,   0,   0,   2, 
-      0,   0,   0, 144,   0,   8, 
-     15, 160,  31,   0,   0,   2, 
-      0,   0,   0, 144,   1,   8, 
-     15, 160,  31,   0,   0,   2, 
-      0,   0,   0, 144,   2,   8, 
-     15, 160,   1,   0,   0,   2, 
-      0,   0,   3, 128,   0,   0, 
-    235, 176,  66,   0,   0,   3, 
-      0,   0,  15, 128,   0,   0, 
-    228, 128,   2,   8, 228, 160, 
-      5,   0,   0,   3,   0,   0, 
-      1, 128,   0,   0,   0, 128, 
-      0,   0,   0, 160,  66,   0, 
-      0,   3,   1,   0,  15, 128, 
-      0,   0, 228, 176,   0,   8, 
-    228, 160,  66,   0,   0,   3, 
-      2,   0,  15, 128,   0,   0, 
-    228, 176,   1,   8, 228, 160, 
-      2,   0,   0,   3,   2,   0, 
-     15, 128,   1,   0, 228, 128, 
-      2,   0, 228, 129,   2,   0, 
-      0,   3,   2,   0,  15, 128, 
-      2,   0, 228, 128,   1,   0, 
-      0, 160,   1,   0,   0,   2, 
-      1,   0,   8, 128,   2,   0, 
-     85, 128,   5,   0,   0,   3, 
-      2,   0,  15, 128,   0,   0, 
-      0, 128,   2,   0, 228, 128, 
-      5,   0,   0,   3,   0,   0, 
-     15, 128,   0,   0,   0, 128, 
-      1,   0, 228, 128,   1,   0, 
-      0,   2,   0,   8,  15, 128, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   1,   8,  15, 128, 
-      2,   0, 228, 128, 255, 255, 
-      0,   0,  83,  72,  68,  82, 
-    176,   1,   0,   0,  64,   0, 
-      0,   0, 108,   0,   0,   0, 
-     89,   0,   0,   4,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,  90,   0, 
-      0,   3,   0,  96,  16,   0, 
-      0,   0,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      0,   0,   0,   0,  85,  85, 
-      0,   0,  88,  24,   0,   4, 
-      0, 112,  16,   0,   4,   0, 
-      0,   0,  85,  85,   0,   0, 
-     88,  24,   0,   4,   0, 112, 
-     16,   0,   5,   0,   0,   0, 
-     85,  85,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      1,   0,   0,   0,  98,  16, 
-      0,   3, 194,  16,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      1,   0,   0,   0, 104,   0, 
-      0,   2,   3,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      4,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,  16,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   8, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16, 128,  65,   0, 
-      0,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,   0,   0,   0,  10, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0, 128,  63, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-     54,   0,   0,   5, 130,   0, 
-     16,   0,   1,   0,   0,   0, 
-     26,   0,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   2,   0, 
-      0,   0, 230,  26,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   5,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-     18,   0,  16,   0,   2,   0, 
-      0,   0,  10,   0,  16,   0, 
-      2,   0,   0,   0,  10, 128, 
-     32,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  56,   0, 
-      0,   7, 242,  32,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-      6,   0,  16,   0,   2,   0, 
-      0,   0,  56,   0,   0,   7, 
-    242,  32,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,   6,   0, 
-     16,   0,   2,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 116,   0,   0,   0, 
-     10,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,   5,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  82,  68,  69,  70, 
-      4,   3,   0,   0,   1,   0, 
-      0,   0, 228,   0,   0,   0, 
-      5,   0,   0,   0,  28,   0, 
-      0,   0,   0,   4, 255, 255, 
-      0,   1,   0,   0, 208,   2, 
-      0,   0, 188,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0, 197,   0, 
-      0,   0,   2,   0,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  13,   0,   0,   0, 
-    202,   0,   0,   0,   2,   0, 
-      0,   0,   5,   0,   0,   0, 
-      4,   0,   0,   0, 255, 255, 
-    255, 255,   4,   0,   0,   0, 
-      1,   0,   0,   0,  13,   0, 
-      0,   0, 212,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   5,   0, 
-      0,   0,   1,   0,   0,   0, 
-     13,   0,   0,   0, 218,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-    115,  83,  97, 109, 112, 108, 
-    101, 114,   0, 116,  82,  71, 
-     66,   0, 116,  82,  71,  66, 
-     87, 104, 105, 116, 101,   0, 
-    116,  77,  97, 115, 107,   0, 
-     36,  71, 108, 111,  98,  97, 
-    108, 115,   0, 171, 218,   0, 
-      0,   0,  10,   0,   0,   0, 
-    252,   0,   0,   0,  48,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 236,   1, 
-      0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 248,   1,   0,   0, 
-      0,   0,   0,   0,   8,   2, 
-      0,   0,  16,   0,   0,   0, 
-      4,   0,   0,   0,   2,   0, 
-      0,   0,  24,   2,   0,   0, 
-      0,   0,   0,   0,  40,   2, 
-      0,   0,  32,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,  56,   2,   0,   0, 
-      0,   0,   0,   0,  72,   2, 
-      0,   0,  48,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0,  88,   2,   0,   0, 
-      0,   0,   0,   0, 104,   2, 
-      0,   0, 112,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0,  88,   2,   0,   0, 
-      0,   0,   0,   0, 116,   2, 
-      0,   0, 176,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 248,   1,   0,   0, 
-      0,   0,   0,   0, 136,   2, 
-      0,   0, 192,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 152,   2,   0,   0, 
-      0,   0,   0,   0, 168,   2, 
-      0,   0, 208,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 152,   2,   0,   0, 
-      0,   0,   0,   0, 179,   2, 
-      0,   0, 224,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 152,   2,   0,   0, 
-      0,   0,   0,   0, 189,   2, 
-      0,   0, 240,   0,   0,   0, 
-     64,   0,   0,   0,   0,   0, 
-      0,   0,  88,   2,   0,   0, 
-      0,   0,   0,   0, 102,  76, 
-     97, 121, 101, 114,  67, 111, 
-    108, 111, 114,   0,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 102,  76,  97, 121, 
-    101, 114,  79, 112,  97,  99, 
-    105, 116, 121,   0, 171, 171, 
-      0,   0,   3,   0,   1,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 105,  66, 
-    108, 101, 110, 100,  67, 111, 
-    110, 102, 105, 103,   0, 171, 
-    171, 171,   1,   0,  19,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    109,  76,  97, 121, 101, 114, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0,   3,   0, 
-      3,   0,   4,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 109,  80, 114, 111, 
-    106, 101,  99, 116, 105, 111, 
-    110,   0, 118,  82, 101, 110, 
-    100, 101, 114,  84,  97, 114, 
-    103, 101, 116,  79, 102, 102, 
-    115, 101, 116,   0, 118,  84, 
-    101, 120, 116, 117, 114, 101, 
-     67, 111, 111, 114, 100, 115, 
-      0, 171,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    118,  76,  97, 121, 101, 114, 
-     81, 117,  97, 100,   0, 118, 
-     77,  97, 115, 107,  81, 117, 
-     97, 100,   0, 109,  66,  97, 
-     99, 107, 100, 114, 111, 112, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0,  77, 105, 
-     99, 114, 111, 115, 111, 102, 
-    116,  32,  40,  82,  41,  32, 
-     72,  76,  83,  76,  32,  83, 
-    104,  97, 100, 101, 114,  32, 
-     67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  54,  46,  51, 
-     46,  57,  54,  48,  48,  46, 
-     49,  54,  51,  56,  52,   0, 
-    171, 171,  73,  83,  71,  78, 
-    104,   0,   0,   0,   3,   0, 
-      0,   0,   8,   0,   0,   0, 
-     80,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     92,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
-      0,   0,   3,   3,   0,   0, 
-     92,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
-      0,   0,  12,  12,   0,   0, 
-     83,  86,  95,  80, 111, 115, 
-    105, 116, 105, 111, 110,   0, 
-     84,  69,  88,  67,  79,  79, 
-     82,  68,   0, 171, 171, 171, 
-     79,  83,  71,  78,  68,   0, 
-      0,   0,   2,   0,   0,   0, 
-      8,   0,   0,   0,  56,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0,  56,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-     15,   0,   0,   0,  83,  86, 
-     95,  84,  97, 114, 103, 101, 
-    116,   0, 171, 171
-};
 ShaderBytes sComponentAlphaShaderMask = { ComponentAlphaShaderMask, sizeof(ComponentAlphaShaderMask) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4x4 mLayerTransform;          // Offset:    0 Size:    64
@@ -5491,19 +4717,19 @@ ShaderBytes sComponentAlphaShaderMask = 
 //   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
 //   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // POSITION                 0   xy          0     NONE   float   xy  
@@ -5561,17 +4787,17 @@ ShaderBytes sComponentAlphaShaderMask = 
     mad r1.xy, c11.yxzw, r1.x, r1.yzzw
     add oT0.zw, r1.xyxy, c13.xyyx
     mad oPos.xy, r0.w, c0, r0
     mov oPos.zw, r0
     mov oT1.xyz, c14.z
 
 // approximately 22 instruction slots used
 vs_4_0
-dcl_constantbuffer cb0[16], immediateIndexed
+dcl_constantbuffer CB0[16], immediateIndexed
 dcl_input v0.xy
 dcl_output_siv o0.xyzw, position
 dcl_output o1.xy
 dcl_output o1.zw
 dcl_output o2.xyz
 dcl_temps 2
 mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
 mul r1.xyzw, r0.yyyy, cb0[1].xyzw
@@ -5594,20 +4820,20 @@ add o1.zw, r0.xxxy, cb0[15].xxxy
 mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 mov o2.xyz, l(0,0,0,0)
 ret 
 // Approximately 21 instruction slots used
 #endif
 
 const BYTE LayerQuadBlendVS[] =
 {
-     68,  88,  66,  67, 238,   0, 
-     14, 218, 242, 150,  72, 155, 
-     68, 134,  76,  43, 160,  82, 
-     75,  24,   1,   0,   0,   0, 
+     68,  88,  66,  67,  76, 129, 
+    194, 215, 223, 117, 197,  26, 
+    131, 244, 213, 174,  68, 116, 
+     23, 183,   1,   0,   0,   0, 
      12,   9,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
      60,   2,   0,   0, 100,   5, 
       0,   0, 224,   5,   0,   0, 
      80,   8,   0,   0, 132,   8, 
       0,   0,  65, 111, 110,  57, 
     252,   1,   0,   0, 252,   1, 
       0,   0,   0,   2, 254, 255, 
@@ -5945,20 +5171,20 @@ const BYTE LayerQuadBlendVS[] =
     171, 171,   1,   0,  19,   0, 
       1,   0,   4,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
      77, 105,  99, 114, 111, 115, 
     111, 102, 116,  32,  40,  82, 
      41,  32,  72,  76,  83,  76, 
      32,  83, 104,  97, 100, 101, 
     114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  54, 
-     46,  51,  46,  57,  54,  48, 
-     48,  46,  49,  54,  51,  56, 
-     52,   0, 171, 171,  73,  83, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
      71,  78,  44,   0,   0,   0, 
       1,   0,   0,   0,   8,   0, 
       0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,   3,   3, 
       0,   0,  80,  79,  83,  73, 
      84,  73,  79,  78,   0, 171, 
@@ -5984,17 +5210,17 @@ const BYTE LayerQuadBlendVS[] =
      83,  86,  95,  80, 111, 115, 
     105, 116, 105, 111, 110,   0, 
      84,  69,  88,  67,  79,  79, 
      82,  68,   0, 171, 171, 171
 };
 ShaderBytes sLayerQuadBlendVS = { LayerQuadBlendVS, sizeof(LayerQuadBlendVS) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4x4 mLayerTransform;          // Offset:    0 Size:    64
@@ -6008,566 +5234,19 @@ ShaderBytes sLayerQuadBlendVS = { LayerQ
 //   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
 //   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
-//
-//
-//
-// Input signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// POSITION                 0   xy          0     NONE   float   xy  
-//
-//
-// Output signature:
-//
-// Name                 Index   Mask Register SysValue  Format   Used
-// -------------------- ----- ------ -------- -------- ------- ------
-// SV_Position              0   xyzw        0      POS   float   xyzw
-// TEXCOORD                 0   xy          1     NONE   float   xy  
-// TEXCOORD                 2     zw        1     NONE   float     zw
-// TEXCOORD                 1   xyz         2     NONE   float   xyz 
-//
-//
-// Constant buffer to DX9 shader constant mappings:
-//
-// Target Reg Buffer  Start Reg # of Regs        Data Conversion
-// ---------- ------- --------- --------- ----------------------
-// c1         cb0             0         2  ( FLT, FLT, FLT, FLT)
-// c3         cb0             3        11  ( FLT, FLT, FLT, FLT)
-// c14        cb0            15         1  ( FLT, FLT, FLT, FLT)
-//
-//
-// Runtime generated constant mappings:
-//
-// Target Reg                               Constant Description
-// ---------- --------------------------------------------------
-// c0                              Vertex Shader position offset
-//
-//
-// Level9 shader bytecode:
-//
-    vs_2_x
-    def c15, 1, 0.5, 0, 0
-    dcl_texcoord v0
-    rcp r0.x, c11.z
-    mad r0.yz, v0.xxyw, c10.xzww, c10.xxyw
-    mul r1, r0.z, c2
-    mad r1, c1, r0.y, r1
-    add r1, r1, c3
-    add r0.yz, r1.xxyw, -c11.xxyw
-    mul oT1.x, r0.x, r0.y
-    rcp r0.x, c11.w
-    mul oT1.y, r0.x, r0.z
-    mad oT0.xy, v0, c9.zwzw, c9
-    rcp r0.x, r1.w
-    mul r1.xyz, r0.x, r1
-    add r0, r1, -c8
-    mul r0.xyz, r0.w, r0
-    mul r1, r0.y, c5
-    mad r1, c4, r0.x, r1
-    mad r1, c6, r0.z, r1
-    mad r0, c7, r0.w, r1
-    add r1.xy, r0, c15.x
-    mad r1.y, r1.y, -c15.y, c15.x
-    mul r1.x, r1.x, c15.y
-    mul r1.yz, r1.y, c13.xyxw
-    mad r1.xy, c12.yxzw, r1.x, r1.yzzw
-    add oT0.zw, r1.xyxy, c14.xyyx
-    mad oPos.xy, r0.w, c0, r0
-    mov oPos.zw, r0
-    mov oT1.z, c15.z
-
-// approximately 27 instruction slots used
-vs_4_0
-dcl_constantbuffer cb0[16], immediateIndexed
-dcl_input v0.xy
-dcl_output_siv o0.xyzw, position
-dcl_output o1.xy
-dcl_output o1.zw
-dcl_output o2.xyz
-dcl_temps 2
-mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
-mul r1.xyzw, r0.yyyy, cb0[1].xyzw
-mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
-add r0.xyzw, r0.xyzw, cb0[3].xyzw
-div r1.xyz, r0.xyzx, r0.wwww
-mov r1.w, r0.w
-add r0.xy, r0.xyxx, -cb0[11].xyxx
-div o2.xy, r0.xyxx, cb0[11].zwzz
-add r0.xyzw, r1.xyzw, -cb0[8].xyzw
-mul r0.xyz, r0.wwww, r0.xyzx
-mul r1.xyzw, r0.yyyy, cb0[5].xyzw
-mad r1.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
-mad r1.xyzw, cb0[6].xyzw, r0.zzzz, r1.xyzw
-mad r0.xyzw, cb0[7].xyzw, r0.wwww, r1.xyzw
-mov o0.xyzw, r0.xyzw
-add r0.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
-mad r0.y, -r0.y, l(0.500000), l(1.000000)
-mul r0.x, r0.x, l(0.500000)
-mul r0.yz, r0.yyyy, cb0[13].xxyx
-mad r0.xy, cb0[12].xyxx, r0.xxxx, r0.yzyy
-add o1.zw, r0.xxxy, cb0[15].xxxy
-mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
-mov o2.z, l(0)
-ret 
-// Approximately 24 instruction slots used
-#endif
-
-const BYTE LayerQuadBlendMaskVS[] =
-{
-     68,  88,  66,  67, 120, 167, 
-    168, 154, 138, 114, 232, 254, 
-    144, 109, 183,   6, 132,  16, 
-    244, 173,   1,   0,   0,   0, 
-    148,   9,   0,   0,   6,   0, 
-      0,   0,  56,   0,   0,   0, 
-    120,   2,   0,   0, 236,   5, 
-      0,   0, 104,   6,   0,   0, 
-    216,   8,   0,   0,  12,   9, 
-      0,   0,  65, 111, 110,  57, 
-     56,   2,   0,   0,  56,   2, 
-      0,   0,   0,   2, 254, 255, 
-    236,   1,   0,   0,  76,   0, 
-      0,   0,   3,   0,  36,   0, 
-      0,   0,  72,   0,   0,   0, 
-     72,   0,   0,   0,  36,   0, 
-      1,   0,  72,   0,   0,   0, 
-      0,   0,   2,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,  11,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   1,   0,  14,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   2, 254, 255, 
-     81,   0,   0,   5,  15,   0, 
-     15, 160,   0,   0, 128,  63, 
-      0,   0,   0,  63,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     31,   0,   0,   2,   5,   0, 
-      0, 128,   0,   0,  15, 144, 
-      6,   0,   0,   2,   0,   0, 
-      1, 128,  11,   0, 170, 160, 
-      4,   0,   0,   4,   0,   0, 
-      6, 128,   0,   0, 208, 144, 
-     10,   0, 248, 160,  10,   0, 
-    208, 160,   5,   0,   0,   3, 
-      1,   0,  15, 128,   0,   0, 
-    170, 128,   2,   0, 228, 160, 
-      4,   0,   0,   4,   1,   0, 
-     15, 128,   1,   0, 228, 160, 
-      0,   0,  85, 128,   1,   0, 
-    228, 128,   2,   0,   0,   3, 
-      1,   0,  15, 128,   1,   0, 
-    228, 128,   3,   0, 228, 160, 
-      2,   0,   0,   3,   0,   0, 
-      6, 128,   1,   0, 208, 128, 
-     11,   0, 208, 161,   5,   0, 
-      0,   3,   1,   0,   1, 224, 
-      0,   0,   0, 128,   0,   0, 
-     85, 128,   6,   0,   0,   2, 
-      0,   0,   1, 128,  11,   0, 
-    255, 160,   5,   0,   0,   3, 
-      1,   0,   2, 224,   0,   0, 
-      0, 128,   0,   0, 170, 128, 
-      4,   0,   0,   4,   0,   0, 
-      3, 224,   0,   0, 228, 144, 
-      9,   0, 238, 160,   9,   0, 
-    228, 160,   6,   0,   0,   2, 
-      0,   0,   1, 128,   1,   0, 
-    255, 128,   5,   0,   0,   3, 
-      1,   0,   7, 128,   0,   0, 
-      0, 128,   1,   0, 228, 128, 
-      2,   0,   0,   3,   0,   0, 
-     15, 128,   1,   0, 228, 128, 
-      8,   0, 228, 161,   5,   0, 
-      0,   3,   0,   0,   7, 128, 
-      0,   0, 255, 128,   0,   0, 
-    228, 128,   5,   0,   0,   3, 
-      1,   0,  15, 128,   0,   0, 
-     85, 128,   5,   0, 228, 160, 
-      4,   0,   0,   4,   1,   0, 
-     15, 128,   4,   0, 228, 160, 
-      0,   0,   0, 128,   1,   0, 
-    228, 128,   4,   0,   0,   4, 
-      1,   0,  15, 128,   6,   0, 
-    228, 160,   0,   0, 170, 128, 
-      1,   0, 228, 128,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      7,   0, 228, 160,   0,   0, 
-    255, 128,   1,   0, 228, 128, 
-      2,   0,   0,   3,   1,   0, 
-      3, 128,   0,   0, 228, 128, 
-     15,   0,   0, 160,   4,   0, 
-      0,   4,   1,   0,   2, 128, 
-      1,   0,  85, 128,  15,   0, 
-     85, 161,  15,   0,   0, 160, 
-      5,   0,   0,   3,   1,   0, 
-      1, 128,   1,   0,   0, 128, 
-     15,   0,  85, 160,   5,   0, 
-      0,   3,   1,   0,   6, 128, 
-      1,   0,  85, 128,  13,   0, 
-    196, 160,   4,   0,   0,   4, 
-      1,   0,   3, 128,  12,   0, 
-    225, 160,   1,   0,   0, 128, 
-      1,   0, 233, 128,   2,   0, 
-      0,   3,   0,   0,  12, 224, 
-      1,   0,  68, 128,  14,   0, 
-     20, 160,   4,   0,   0,   4, 
-      0,   0,   3, 192,   0,   0, 
-    255, 128,   0,   0, 228, 160, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   0,   0,  12, 192, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   1,   0,   4, 224, 
-     15,   0, 170, 160, 255, 255, 
-      0,   0,  83,  72,  68,  82, 
-    108,   3,   0,   0,  64,   0, 
-      1,   0, 219,   0,   0,   0, 
-     89,   0,   0,   4,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,  95,   0, 
-      0,   3,  50,  16,  16,   0, 
-      0,   0,   0,   0, 103,   0, 
-      0,   4, 242,  32,  16,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-    194,  32,  16,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-    114,  32,  16,   0,   2,   0, 
-      0,   0, 104,   0,   0,   2, 
-      2,   0,   0,   0,  50,   0, 
-      0,  11,  50,   0,  16,   0, 
-      0,   0,   0,   0,  70,  16, 
-     16,   0,   0,   0,   0,   0, 
-    230, 138,  32,   0,   0,   0, 
-      0,   0,  10,   0,   0,   0, 
-     70, 128,  32,   0,   0,   0, 
-      0,   0,  10,   0,   0,   0, 
-     56,   0,   0,   8, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,   5,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-      0,   0,   0,   8, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,  14,   0,   0,   7, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      0,   0,   0,   0, 246,  15, 
-     16,   0,   0,   0,   0,   0, 
-     54,   0,   0,   5, 130,   0, 
-     16,   0,   1,   0,   0,   0, 
-     58,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,   0,   9, 
-     50,   0,  16,   0,   0,   0, 
-      0,   0,  70,   0,  16,   0, 
-      0,   0,   0,   0,  70, 128, 
-     32, 128,  65,   0,   0,   0, 
-      0,   0,   0,   0,  11,   0, 
-      0,   0,  14,   0,   0,   8, 
-     50,  32,  16,   0,   2,   0, 
-      0,   0,  70,   0,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-     11,   0,   0,   0,   0,   0, 
-      0,   9, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  32, 128,  65,   0, 
-      0,   0,   0,   0,   0,   0, 
-      8,   0,   0,   0,  56,   0, 
-      0,   7, 114,   0,  16,   0, 
-      0,   0,   0,   0, 246,  15, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,  56,   0,   0,   8, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  86,   5,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  50,   0, 
-      0,  10, 242,   0,  16,   0, 
-      1,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,   6,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   6,   0, 
-      0,   0, 166,  10,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   7,   0,   0,   0, 
-    246,  15,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  54,   0, 
-      0,   5, 242,  32,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,  10,  50,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   0,  16,   0,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,  50,   0, 
-      0,  10,  34,   0,  16,   0, 
-      0,   0,   0,   0,  26,   0, 
-     16, 128,  65,   0,   0,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,  63, 
-      1,  64,   0,   0,   0,   0, 
-    128,  63,  56,   0,   0,   7, 
-     18,   0,  16,   0,   0,   0, 
-      0,   0,  10,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,  63, 
-     56,   0,   0,   8,  98,   0, 
-     16,   0,   0,   0,   0,   0, 
-     86,   5,  16,   0,   0,   0, 
-      0,   0,   6, 129,  32,   0, 
-      0,   0,   0,   0,  13,   0, 
-      0,   0,  50,   0,   0,  10, 
-     50,   0,  16,   0,   0,   0, 
-      0,   0,  70, 128,  32,   0, 
-      0,   0,   0,   0,  12,   0, 
-      0,   0,   6,   0,  16,   0, 
-      0,   0,   0,   0, 150,   5, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   8, 194,  32, 
-     16,   0,   1,   0,   0,   0, 
-      6,   4,  16,   0,   0,   0, 
-      0,   0,   6, 132,  32,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  50,   0,   0,  11, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  70, 128, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  54,   0, 
-      0,   5,  66,  32,  16,   0, 
-      2,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,   0, 
-     62,   0,   0,   1,  83,  84, 
-     65,  84, 116,   0,   0,   0, 
-     24,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  20,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  82,  68,  69,  70, 
-    104,   2,   0,   0,   1,   0, 
-      0,   0,  72,   0,   0,   0, 
-      1,   0,   0,   0,  28,   0, 
-      0,   0,   0,   4, 254, 255, 
-      0,   1,   0,   0,  52,   2, 
-      0,   0,  60,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,  36,  71, 
-    108, 111,  98,  97, 108, 115, 
-      0, 171, 171, 171,  60,   0, 
-      0,   0,  10,   0,   0,   0, 
-     96,   0,   0,   0,  48,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  80,   1, 
-      0,   0,   0,   0,   0,   0, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0,  96,   1,   0,   0, 
-      0,   0,   0,   0, 112,   1, 
-      0,   0,  64,   0,   0,   0, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0,  96,   1,   0,   0, 
-      0,   0,   0,   0, 124,   1, 
-      0,   0, 128,   0,   0,   0, 
-     16,   0,   0,   0,   2,   0, 
-      0,   0, 144,   1,   0,   0, 
-      0,   0,   0,   0, 160,   1, 
-      0,   0, 144,   0,   0,   0, 
-     16,   0,   0,   0,   2,   0, 
-      0,   0, 176,   1,   0,   0, 
-      0,   0,   0,   0, 192,   1, 
-      0,   0, 160,   0,   0,   0, 
-     16,   0,   0,   0,   2,   0, 
-      0,   0, 176,   1,   0,   0, 
-      0,   0,   0,   0, 203,   1, 
-      0,   0, 176,   0,   0,   0, 
-     16,   0,   0,   0,   2,   0, 
-      0,   0, 176,   1,   0,   0, 
-      0,   0,   0,   0, 213,   1, 
-      0,   0, 192,   0,   0,   0, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0,  96,   1,   0,   0, 
-      0,   0,   0,   0, 232,   1, 
-      0,   0,   0,   1,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0, 144,   1,   0,   0, 
-      0,   0,   0,   0, 244,   1, 
-      0,   0,  16,   1,   0,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   4,   2,   0,   0, 
-      0,   0,   0,   0,  20,   2, 
-      0,   0,  32,   1,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,  36,   2,   0,   0, 
-      0,   0,   0,   0, 109,  76, 
-     97, 121, 101, 114,  84, 114, 
-     97, 110, 115, 102, 111, 114, 
-    109,   0,   3,   0,   3,   0, 
-      4,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    109,  80, 114, 111, 106, 101, 
-     99, 116, 105, 111, 110,   0, 
-    118,  82, 101, 110, 100, 101, 
-    114,  84,  97, 114, 103, 101, 
-    116,  79, 102, 102, 115, 101, 
-    116,   0,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    118,  84, 101, 120, 116, 117, 
-    114, 101,  67, 111, 111, 114, 
-    100, 115,   0, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 118,  76,  97, 121, 
-    101, 114,  81, 117,  97, 100, 
-      0, 118,  77,  97, 115, 107, 
-     81, 117,  97, 100,   0, 109, 
-     66,  97,  99, 107, 100, 114, 
-    111, 112,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-    102,  76,  97, 121, 101, 114, 
-     67, 111, 108, 111, 114,   0, 
-    102,  76,  97, 121, 101, 114, 
-     79, 112,  97,  99, 105, 116, 
-    121,   0, 171, 171,   0,   0, 
-      3,   0,   1,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 105,  66, 108, 101, 
-    110, 100,  67, 111, 110, 102, 
-    105, 103,   0, 171, 171, 171, 
-      1,   0,  19,   0,   1,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  77, 105, 
-     99, 114, 111, 115, 111, 102, 
-    116,  32,  40,  82,  41,  32, 
-     72,  76,  83,  76,  32,  83, 
-    104,  97, 100, 101, 114,  32, 
-     67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  54,  46,  51, 
-     46,  57,  54,  48,  48,  46, 
-     49,  54,  51,  56,  52,   0, 
-    171, 171,  73,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,   3,   3,   0,   0, 
-     80,  79,  83,  73,  84,  73, 
-     79,  78,   0, 171, 171, 171, 
-     79,  83,  71,  78, 128,   0, 
-      0,   0,   4,   0,   0,   0, 
-      8,   0,   0,   0, 104,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     15,   0,   0,   0, 116,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-      3,  12,   0,   0, 116,   0, 
-      0,   0,   2,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   1,   0,   0,   0, 
-     12,   3,   0,   0, 116,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   2,   0,   0,   0, 
-      7,   8,   0,   0,  83,  86, 
-     95,  80, 111, 115, 105, 116, 
-    105, 111, 110,   0,  84,  69, 
-     88,  67,  79,  79,  82,  68, 
-      0, 171, 171, 171
-};
-ShaderBytes sLayerQuadBlendMaskVS = { LayerQuadBlendMaskVS, sizeof(LayerQuadBlendMaskVS) };
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
-//
-//
-// Buffer Definitions: 
-//
-// cbuffer $Globals
-// {
-//
-//   float4x4 mLayerTransform;          // Offset:    0 Size:    64
-//   float4x4 mProjection;              // Offset:   64 Size:    64
-//   float4 vRenderTargetOffset;        // Offset:  128 Size:    16
-//   float4 vTextureCoords;             // Offset:  144 Size:    16
-//   float4 vLayerQuad;                 // Offset:  160 Size:    16
-//   float4 vMaskQuad;                  // Offset:  176 Size:    16
-//   float4x4 mBackdropTransform;       // Offset:  192 Size:    64
-//   float4 fLayerColor;                // Offset:  256 Size:    16 [unused]
-//   float fLayerOpacity;               // Offset:  272 Size:     4 [unused]
-//   uint4 iBlendConfig;                // Offset:  288 Size:    16 [unused]
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // POSITION                 0   xy          0     NONE   float   xy  
@@ -6605,90 +5284,91 @@ ShaderBytes sLayerQuadBlendMaskVS = { La
     def c15, 1, 0.5, 0, 0
     dcl_texcoord v0
     mov r0.z, c15.x
     rcp r0.w, c11.z
     mad r1.xy, v0, c10.zwzw, c10
     mul r2, r1.y, c2
     mad r1, c1, r1.x, r2
     add r1, r1, c3
-    rcp r2.x, r1.w
-    mad r2.yz, r1.xxyw, r2.x, -c11.xxyw
-    mul r1.xyz, r1, r2.x
-    mul r0.x, r0.w, r2.y
+    add r2.xy, r1, -c11
+    mul r0.x, r0.w, r2.x
     rcp r0.w, c11.w
-    mul r0.y, r0.w, r2.z
+    mul r0.y, r0.w, r2.y
     mul oT1.xyz, r0, r1.w
+    mad oT0.xy, v0, c9.zwzw, c9
+    rcp r0.x, r1.w
+    mul r1.xyz, r0.x, r1
     add r0, r1, -c8
-    mad oT0.xy, v0, c9.zwzw, c9
     mul r0.xyz, r0.w, r0
     mul r1, r0.y, c5
     mad r1, c4, r0.x, r1
     mad r1, c6, r0.z, r1
     mad r0, c7, r0.w, r1
     add r1.xy, r0, c15.x
     mad r1.y, r1.y, -c15.y, c15.x
     mul r1.x, r1.x, c15.y
     mul r1.yz, r1.y, c13.xyxw
     mad r1.xy, c12.yxzw, r1.x, r1.yzzw
     add oT0.zw, r1.xyxy, c14.xyyx
     mad oPos.xy, r0.w, c0, r0
     mov oPos.zw, r0
 
 // approximately 28 instruction slots used
 vs_4_0
-dcl_constantbuffer cb0[16], immediateIndexed
+dcl_constantbuffer CB0[16], immediateIndexed
 dcl_input v0.xy
 dcl_output_siv o0.xyzw, position
 dcl_output o1.xy
 dcl_output o1.zw
 dcl_output o2.xyz
-dcl_temps 3
+dcl_temps 4
 mad r0.xy, v0.xyxx, cb0[10].zwzz, cb0[10].xyxx
 mul r1.xyzw, r0.yyyy, cb0[1].xyzw
 mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
 add r0.xyzw, r0.xyzw, cb0[3].xyzw
-div r0.xyz, r0.xyzx, r0.wwww
-add r1.xyzw, r0.xyzw, -cb0[8].xyzw
+div r1.xyz, r0.xyzx, r0.wwww
+mov r1.w, r0.w
+add r2.xyzw, r1.xyzw, -cb0[8].xyzw
+mul r1.xyz, r2.wwww, r2.xyzx
+mul r3.xyzw, r1.yyyy, cb0[5].xyzw
+mad r3.xyzw, cb0[4].xyzw, r1.xxxx, r3.xyzw
+mad r3.xyzw, cb0[6].xyzw, r1.zzzz, r3.xyzw
+mad r2.xyzw, cb0[7].xyzw, r2.wwww, r3.xyzw
+mov o0.xyzw, r2.xyzw
+add r0.zw, r2.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
+mad r0.w, -r0.w, l(0.500000), l(1.000000)
+mul r0.z, r0.z, l(0.500000)
+mul r1.xy, r0.wwww, cb0[13].xyxx
+mad r0.zw, cb0[12].xxxy, r0.zzzz, r1.xxxy
+add o1.zw, r0.zzzw, cb0[15].xxxy
+mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 add r0.xy, r0.xyxx, -cb0[11].xyxx
 div r0.xy, r0.xyxx, cb0[11].zwzz
-mul r1.xyz, r1.wwww, r1.xyzx
-mul r2.xyzw, r1.yyyy, cb0[5].xyzw
-mad r2.xyzw, cb0[4].xyzw, r1.xxxx, r2.xyzw
-mad r2.xyzw, cb0[6].xyzw, r1.zzzz, r2.xyzw
-mad r1.xyzw, cb0[7].xyzw, r1.wwww, r2.xyzw
-mov o0.xyzw, r1.xyzw
-add r1.xy, r1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
-mad r1.y, -r1.y, l(0.500000), l(1.000000)
-mul r1.x, r1.x, l(0.500000)
-mul r1.yz, r1.yyyy, cb0[13].xxyx
-mad r1.xy, cb0[12].xyxx, r1.xxxx, r1.yzyy
-add o1.zw, r1.xxxy, cb0[15].xxxy
-mad o1.xy, v0.xyxx, cb0[9].zwzz, cb0[9].xyxx
 mov r0.z, l(1.000000)
-mul o2.xyz, r0.wwww, r0.xyzx
+mul o2.xyz, r1.wwww, r0.xyzx
 ret 
-// Approximately 24 instruction slots used
+// Approximately 25 instruction slots used
 #endif
 
-const BYTE LayerQuadBlendMask3DVS[] =
+const BYTE LayerQuadBlendMaskVS[] =
 {
-     68,  88,  66,  67, 114,  33, 
-    168, 234, 171, 245,  21,  91, 
-    164, 147, 216,  15,  58, 222, 
-     28, 166,   1,   0,   0,   0, 
-    176,   9,   0,   0,   6,   0, 
+     68,  88,  66,  67, 215, 232, 
+    211, 207,  91,  59,  72,  19, 
+    182, 146,  63, 212, 224, 141, 
+    136,  84,   1,   0,   0,   0, 
+    192,   9,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-    140,   2,   0,   0,   8,   6, 
-      0,   0, 132,   6,   0,   0, 
-    244,   8,   0,   0,  40,   9, 
+    136,   2,   0,   0,  24,   6, 
+      0,   0, 148,   6,   0,   0, 
+      4,   9,   0,   0,  56,   9, 
       0,   0,  65, 111, 110,  57, 
-     76,   2,   0,   0,  76,   2, 
+     72,   2,   0,   0,  72,   2, 
       0,   0,   0,   2, 254, 255, 
-      0,   2,   0,   0,  76,   0, 
+    252,   1,   0,   0,  76,   0, 
       0,   0,   3,   0,  36,   0, 
       0,   0,  72,   0,   0,   0, 
      72,   0,   0,   0,  36,   0, 
       1,   0,  72,   0,   0,   0, 
       0,   0,   2,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,  11,   0,   3,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -6712,389 +5392,391 @@ const BYTE LayerQuadBlendMask3DVS[] =
       2,   0,  15, 128,   1,   0, 
      85, 128,   2,   0, 228, 160, 
       4,   0,   0,   4,   1,   0, 
      15, 128,   1,   0, 228, 160, 
       1,   0,   0, 128,   2,   0, 
     228, 128,   2,   0,   0,   3, 
       1,   0,  15, 128,   1,   0, 
     228, 128,   3,   0, 228, 160, 
-      6,   0,   0,   2,   2,   0, 
-      1, 128,   1,   0, 255, 128, 
-      4,   0,   0,   4,   2,   0, 
-      6, 128,   1,   0, 208, 128, 
-      2,   0,   0, 128,  11,   0, 
-    208, 161,   5,   0,   0,   3, 
-      1,   0,   7, 128,   1,   0, 
-    228, 128,   2,   0,   0, 128, 
-      5,   0,   0,   3,   0,   0, 
-      1, 128,   0,   0, 255, 128, 
-      2,   0,  85, 128,   6,   0, 
-      0,   2,   0,   0,   8, 128, 
-     11,   0, 255, 160,   5,   0, 
-      0,   3,   0,   0,   2, 128, 
+      2,   0,   0,   3,   2,   0, 
+      3, 128,   1,   0, 228, 128, 
+     11,   0, 228, 161,   5,   0, 
+      0,   3,   0,   0,   1, 128, 
       0,   0, 255, 128,   2,   0, 
-    170, 128,   5,   0,   0,   3, 
-      1,   0,   7, 224,   0,   0, 
-    228, 128,   1,   0, 255, 128, 
-      2,   0,   0,   3,   0,   0, 
-     15, 128,   1,   0, 228, 128, 
-      8,   0, 228, 161,   4,   0, 
+      0, 128,   6,   0,   0,   2, 
+      0,   0,   8, 128,  11,   0, 
+    255, 160,   5,   0,   0,   3, 
+      0,   0,   2, 128,   0,   0, 
+    255, 128,   2,   0,  85, 128, 
+      5,   0,   0,   3,   1,   0, 
+      7, 224,   0,   0, 228, 128, 
+      1,   0, 255, 128,   4,   0, 
       0,   4,   0,   0,   3, 224, 
       0,   0, 228, 144,   9,   0, 
     238, 160,   9,   0, 228, 160, 
-      5,   0,   0,   3,   0,   0, 
-      7, 128,   0,   0, 255, 128, 
-      0,   0, 228, 128,   5,   0, 
-      0,   3,   1,   0,  15, 128, 
-      0,   0,  85, 128,   5,   0, 
-    228, 160,   4,   0,   0,   4, 
-      1,   0,  15, 128,   4,   0, 
-    228, 160,   0,   0,   0, 128, 
-      1,   0, 228, 128,   4,   0, 
-      0,   4,   1,   0,  15, 128, 
-      6,   0, 228, 160,   0,   0, 
-    170, 128,   1,   0, 228, 128, 
-      4,   0,   0,   4,   0,   0, 
-     15, 128,   7,   0, 228, 160, 
-      0,   0, 255, 128,   1,   0, 
-    228, 128,   2,   0,   0,   3, 
-      1,   0,   3, 128,   0,   0, 
-    228, 128,  15,   0,   0, 160, 
-      4,   0,   0,   4,   1,   0, 
-      2, 128,   1,   0,  85, 128, 
-     15,   0,  85, 161,  15,   0, 
-      0, 160,   5,   0,   0,   3, 
-      1,   0,   1, 128,   1,   0, 
-      0, 128,  15,   0,  85, 160, 
+      6,   0,   0,   2,   0,   0, 
+      1, 128,   1,   0, 255, 128, 
+      5,   0,   0,   3,   1,   0, 
+      7, 128,   0,   0,   0, 128, 
+      1,   0, 228, 128,   2,   0, 
+      0,   3,   0,   0,  15, 128, 
+      1,   0, 228, 128,   8,   0, 
+    228, 161,   5,   0,   0,   3, 
+      0,   0,   7, 128,   0,   0, 
+    255, 128,   0,   0, 228, 128, 
       5,   0,   0,   3,   1,   0, 
-      6, 128,   1,   0,  85, 128, 
-     13,   0, 196, 160,   4,   0, 
-      0,   4,   1,   0,   3, 128, 
-     12,   0, 225, 160,   1,   0, 
-      0, 128,   1,   0, 233, 128, 
-      2,   0,   0,   3,   0,   0, 
-     12, 224,   1,   0,  68, 128, 
-     14,   0,  20, 160,   4,   0, 
-      0,   4,   0,   0,   3, 192, 
-      0,   0, 255, 128,   0,   0, 
-    228, 160,   0,   0, 228, 128, 
-      1,   0,   0,   2,   0,   0, 
-     12, 192,   0,   0, 228, 128, 
-    255, 255,   0,   0,  83,  72, 
-     68,  82, 116,   3,   0,   0, 
-     64,   0,   1,   0, 221,   0, 
-      0,   0,  89,   0,   0,   4, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-     95,   0,   0,   3,  50,  16, 
-     16,   0,   0,   0,   0,   0, 
-    103,   0,   0,   4, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3,  50,  32,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 194,  32,  16,   0, 
-      1,   0,   0,   0, 101,   0, 
-      0,   3, 114,  32,  16,   0, 
-      2,   0,   0,   0, 104,   0, 
-      0,   2,   3,   0,   0,   0, 
-     50,   0,   0,  11,  50,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  16,  16,   0,   0,   0, 
-      0,   0, 230, 138,  32,   0, 
-      0,   0,   0,   0,  10,   0, 
-      0,   0,  70, 128,  32,   0, 
-      0,   0,   0,   0,  10,   0, 
-      0,   0,  56,   0,   0,   8, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  86,   5,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  50,   0, 
-      0,  10, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   6,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,   0,   0,   0,   8, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,  14,   0, 
-      0,   7, 114,   0,  16,   0, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   0,   0,   0,   0, 
-    246,  15,  16,   0,   0,   0, 
-      0,   0,   0,   0,   0,   9, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  70, 142, 
-     32, 128,  65,   0,   0,   0, 
-      0,   0,   0,   0,   8,   0, 
-      0,   0,   0,   0,   0,   9, 
+     15, 128,   0,   0,  85, 128, 
+      5,   0, 228, 160,   4,   0, 
+      0,   4,   1,   0,  15, 128, 
+      4,   0, 228, 160,   0,   0, 
+      0, 128,   1,   0, 228, 128, 
+      4,   0,   0,   4,   1,   0, 
+     15, 128,   6,   0, 228, 160, 
+      0,   0, 170, 128,   1,   0, 
+    228, 128,   4,   0,   0,   4, 
+      0,   0,  15, 128,   7,   0, 
+    228, 160,   0,   0, 255, 128, 
+      1,   0, 228, 128,   2,   0, 
+      0,   3,   1,   0,   3, 128, 
+      0,   0, 228, 128,  15,   0, 
+      0, 160,   4,   0,   0,   4, 
+      1,   0,   2, 128,   1,   0, 
+     85, 128,  15,   0,  85, 161, 
+     15,   0,   0, 160,   5,   0, 
+      0,   3,   1,   0,   1, 128, 
+      1,   0,   0, 128,  15,   0, 
+     85, 160,   5,   0,   0,   3, 
+      1,   0,   6, 128,   1,   0, 
+     85, 128,  13,   0, 196, 160, 
+      4,   0,   0,   4,   1,   0, 
+      3, 128,  12,   0, 225, 160, 
+      1,   0,   0, 128,   1,   0, 
+    233, 128,   2,   0,   0,   3, 
+      0,   0,  12, 224,   1,   0, 
+     68, 128,  14,   0,  20, 160, 
+      4,   0,   0,   4,   0,   0, 
+      3, 192,   0,   0, 255, 128, 
+      0,   0, 228, 160,   0,   0, 
+    228, 128,   1,   0,   0,   2, 
+      0,   0,  12, 192,   0,   0, 
+    228, 128, 255, 255,   0,   0, 
+     83,  72,  68,  82, 136,   3, 
+      0,   0,  64,   0,   1,   0, 
+    226,   0,   0,   0,  89,   0, 
+      0,   4,  70, 142,  32,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,  95,   0,   0,   3, 
+     50,  16,  16,   0,   0,   0, 
+      0,   0, 103,   0,   0,   4, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+    101,   0,   0,   3,  50,  32, 
+     16,   0,   1,   0,   0,   0, 
+    101,   0,   0,   3, 194,  32, 
+     16,   0,   1,   0,   0,   0, 
+    101,   0,   0,   3, 114,  32, 
+     16,   0,   2,   0,   0,   0, 
+    104,   0,   0,   2,   4,   0, 
+      0,   0,  50,   0,   0,  11, 
      50,   0,  16,   0,   0,   0, 
-      0,   0,  70,   0,  16,   0, 
-      0,   0,   0,   0,  70, 128, 
-     32, 128,  65,   0,   0,   0, 
-      0,   0,   0,   0,  11,   0, 
-      0,   0,  14,   0,   0,   8, 
-     50,   0,  16,   0,   0,   0, 
-      0,   0,  70,   0,  16,   0, 
+      0,   0,  70,  16,  16,   0, 
       0,   0,   0,   0, 230, 138, 
      32,   0,   0,   0,   0,   0, 
-     11,   0,   0,   0,  56,   0, 
-      0,   7, 114,   0,  16,   0, 
-      1,   0,   0,   0, 246,  15, 
+     10,   0,   0,   0,  70, 128, 
+     32,   0,   0,   0,   0,   0, 
+     10,   0,   0,   0,  56,   0, 
+      0,   8, 242,   0,  16,   0, 
+      1,   0,   0,   0,  86,   5, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+     50,   0,   0,  10, 242,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      6,   0,  16,   0,   0,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   8, 242,   0,  16,   0, 
+      0,   0,   0,   0,  70,  14, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+     14,   0,   0,   7, 114,   0, 
      16,   0,   1,   0,   0,   0, 
-     70,   2,  16,   0,   1,   0, 
-      0,   0,  56,   0,   0,   8, 
-    242,   0,  16,   0,   2,   0, 
-      0,   0,  86,   5,  16,   0, 
-      1,   0,   0,   0,  70, 142, 
+     70,   2,  16,   0,   0,   0, 
+      0,   0, 246,  15,  16,   0, 
+      0,   0,   0,   0,  54,   0, 
+      0,   5, 130,   0,  16,   0, 
+      1,   0,   0,   0,  58,   0, 
+     16,   0,   0,   0,   0,   0, 
+      0,   0,   0,   9, 242,   0, 
+     16,   0,   2,   0,   0,   0, 
+     70,  14,  16,   0,   1,   0, 
+      0,   0,  70, 142,  32, 128, 
+     65,   0,   0,   0,   0,   0, 
+      0,   0,   8,   0,   0,   0, 
+     56,   0,   0,   7, 114,   0, 
+     16,   0,   1,   0,   0,   0, 
+    246,  15,  16,   0,   2,   0, 
+      0,   0,  70,   2,  16,   0, 
+      2,   0,   0,   0,  56,   0, 
+      0,   8, 242,   0,  16,   0, 
+      3,   0,   0,   0,  86,   5, 
+     16,   0,   1,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   5,   0,   0,   0, 
+     50,   0,   0,  10, 242,   0, 
+     16,   0,   3,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+      6,   0,  16,   0,   1,   0, 
+      0,   0,  70,  14,  16,   0, 
+      3,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      3,   0,   0,   0,  70, 142, 
      32,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  50,   0, 
-      0,  10, 242,   0,  16,   0, 
-      2,   0,   0,   0,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,   6,   0, 
+      6,   0,   0,   0, 166,  10, 
      16,   0,   1,   0,   0,   0, 
-     70,  14,  16,   0,   2,   0, 
+     70,  14,  16,   0,   3,   0, 
       0,   0,  50,   0,   0,  10, 
     242,   0,  16,   0,   2,   0, 
       0,   0,  70, 142,  32,   0, 
-      0,   0,   0,   0,   6,   0, 
-      0,   0, 166,  10,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   2,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  32,   0,   0,   0, 
-      0,   0,   7,   0,   0,   0, 
-    246,  15,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      2,   0,   0,   0,  54,   0, 
-      0,   5, 242,  32,  16,   0, 
-      0,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-      0,   0,   0,  10,  50,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   0,  16,   0,   1,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0,   0,   0, 
-      0,   0,   0,   0,  50,   0, 
-      0,  10,  34,   0,  16,   0, 
-      1,   0,   0,   0,  26,   0, 
-     16, 128,  65,   0,   0,   0, 
-      1,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,  63, 
+      0,   0,   0,   0,   7,   0, 
+      0,   0, 246,  15,  16,   0, 
+      2,   0,   0,   0,  70,  14, 
+     16,   0,   3,   0,   0,   0, 
+     54,   0,   0,   5, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+     70,  14,  16,   0,   2,   0, 
+      0,   0,   0,   0,   0,  10, 
+    194,   0,  16,   0,   0,   0, 
+      0,   0,   6,   4,  16,   0, 
+      2,   0,   0,   0,   2,  64, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    128,  63,   0,   0, 128,  63, 
+     50,   0,   0,  10, 130,   0, 
+     16,   0,   0,   0,   0,   0, 
+     58,   0,  16, 128,  65,   0, 
+      0,   0,   0,   0,   0,   0, 
       1,  64,   0,   0,   0,   0, 
-    128,  63,  56,   0,   0,   7, 
-     18,   0,  16,   0,   1,   0, 
-      0,   0,  10,   0,  16,   0, 
-      1,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0,   0,  63, 
-     56,   0,   0,   8,  98,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,   5,  16,   0,   1,   0, 
-      0,   0,   6, 129,  32,   0, 
-      0,   0,   0,   0,  13,   0, 
-      0,   0,  50,   0,   0,  10, 
+      0,  63,   1,  64,   0,   0, 
+      0,   0, 128,  63,  56,   0, 
+      0,   7,  66,   0,  16,   0, 
+      0,   0,   0,   0,  42,   0, 
+     16,   0,   0,   0,   0,   0, 
+      1,  64,   0,   0,   0,   0, 
+      0,  63,  56,   0,   0,   8, 
      50,   0,  16,   0,   1,   0, 
-      0,   0,  70, 128,  32,   0, 
-      0,   0,   0,   0,  12,   0, 
-      0,   0,   6,   0,  16,   0, 
-      1,   0,   0,   0, 150,   5, 
-     16,   0,   1,   0,   0,   0, 
-      0,   0,   0,   8, 194,  32, 
-     16,   0,   1,   0,   0,   0, 
+      0,   0, 246,  15,  16,   0, 
+      0,   0,   0,   0,  70, 128, 
+     32,   0,   0,   0,   0,   0, 
+     13,   0,   0,   0,  50,   0, 
+      0,  10, 194,   0,  16,   0, 
+      0,   0,   0,   0,   6, 132, 
+     32,   0,   0,   0,   0,   0, 
+     12,   0,   0,   0, 166,  10, 
+     16,   0,   0,   0,   0,   0, 
       6,   4,  16,   0,   1,   0, 
-      0,   0,   6, 132,  32,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0,  50,   0,   0,  11, 
-     50,  32,  16,   0,   1,   0, 
-      0,   0,  70,  16,  16,   0, 
-      0,   0,   0,   0, 230, 138, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  70, 128, 
+      0,   0,   0,   0,   0,   8, 
+    194,  32,  16,   0,   1,   0, 
+      0,   0, 166,  14,  16,   0, 
+      0,   0,   0,   0,   6, 132, 
      32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  54,   0, 
-      0,   5,  66,   0,  16,   0, 
-      0,   0,   0,   0,   1,  64, 
-      0,   0,   0,   0, 128,  63, 
-     56,   0,   0,   7, 114,  32, 
-     16,   0,   2,   0,   0,   0, 
-    246,  15,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      0,   0,   0,   0,  62,   0, 
-      0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,  24,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   5,   0, 
-      0,   0,  21,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70, 104,   2, 
-      0,   0,   1,   0,   0,   0, 
-     72,   0,   0,   0,   1,   0, 
-      0,   0,  28,   0,   0,   0, 
-      0,   4, 254, 255,   0,   1, 
-      0,   0,  52,   2,   0,   0, 
-     60,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  50,   0, 
+      0,  11,  50,  32,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
+     16,   0,   0,   0,   0,   0, 
+    230, 138,  32,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
+     70, 128,  32,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
+      0,   0,   0,   9,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,   0,  16,   0,   0,   0, 
+      0,   0,  70, 128,  32, 128, 
+     65,   0,   0,   0,   0,   0, 
+      0,   0,  11,   0,   0,   0, 
+     14,   0,   0,   8,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,   0,  16,   0,   0,   0, 
+      0,   0, 230, 138,  32,   0, 
+      0,   0,   0,   0,  11,   0, 
+      0,   0,  54,   0,   0,   5, 
+     66,   0,  16,   0,   0,   0, 
+      0,   0,   1,  64,   0,   0, 
+      0,   0, 128,  63,  56,   0, 
+      0,   7, 114,  32,  16,   0, 
+      2,   0,   0,   0, 246,  15, 
+     16,   0,   1,   0,   0,   0, 
+     70,   2,  16,   0,   0,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,  25,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   5,   0,   0,   0, 
+     21,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,   0,  36,  71, 108, 111, 
-     98,  97, 108, 115,   0, 171, 
-    171, 171,  60,   0,   0,   0, 
-     10,   0,   0,   0,  96,   0, 
-      0,   0,  48,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  80,   1,   0,   0, 
-      0,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 112,   1,   0,   0, 
-     64,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 124,   1,   0,   0, 
-    128,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 160,   1,   0,   0, 
-    144,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 192,   1,   0,   0, 
-    160,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 203,   1,   0,   0, 
-    176,   0,   0,   0,  16,   0, 
-      0,   0,   2,   0,   0,   0, 
-    176,   1,   0,   0,   0,   0, 
-      0,   0, 213,   1,   0,   0, 
-    192,   0,   0,   0,  64,   0, 
-      0,   0,   2,   0,   0,   0, 
-     96,   1,   0,   0,   0,   0, 
-      0,   0, 232,   1,   0,   0, 
-      0,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-    144,   1,   0,   0,   0,   0, 
-      0,   0, 244,   1,   0,   0, 
-     16,   1,   0,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   2,   0,   0,   0,   0, 
-      0,   0,  20,   2,   0,   0, 
-     32,   1,   0,   0,  16,   0, 
-      0,   0,   0,   0,   0,   0, 
-     36,   2,   0,   0,   0,   0, 
-      0,   0, 109,  76,  97, 121, 
-    101, 114,  84, 114,  97, 110, 
-    115, 102, 111, 114, 109,   0, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  80, 
-    114, 111, 106, 101,  99, 116, 
-    105, 111, 110,   0, 118,  82, 
-    101, 110, 100, 101, 114,  84, 
-     97, 114, 103, 101, 116,  79, 
-    102, 102, 115, 101, 116,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70, 104,   2,   0,   0, 
+      1,   0,   0,   0,  72,   0, 
+      0,   0,   1,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    254, 255,   0,   1,   0,   0, 
+     52,   2,   0,   0,  60,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+     36,  71, 108, 111,  98,  97, 
+    108, 115,   0, 171, 171, 171, 
+     60,   0,   0,   0,  10,   0, 
+      0,   0,  96,   0,   0,   0, 
+     48,   1,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     80,   1,   0,   0,   0,   0, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    112,   1,   0,   0,  64,   0, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    124,   1,   0,   0, 128,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 144,   1, 
+      0,   0,   0,   0,   0,   0, 
+    160,   1,   0,   0, 144,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    192,   1,   0,   0, 160,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    203,   1,   0,   0, 176,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 176,   1, 
+      0,   0,   0,   0,   0,   0, 
+    213,   1,   0,   0, 192,   0, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,   0,   0,  96,   1, 
+      0,   0,   0,   0,   0,   0, 
+    232,   1,   0,   0,   0,   1, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0, 144,   1, 
+      0,   0,   0,   0,   0,   0, 
+    244,   1,   0,   0,  16,   1, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   4,   2, 
+      0,   0,   0,   0,   0,   0, 
+     20,   2,   0,   0,  32,   1, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0,  36,   2, 
+      0,   0,   0,   0,   0,   0, 
+    109,  76,  97, 121, 101, 114, 
+     84, 114,  97, 110, 115, 102, 
+    111, 114, 109,   0,   3,   0, 
+      3,   0,   4,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 109,  80, 114, 111, 
+    106, 101,  99, 116, 105, 111, 
+    110,   0, 118,  82, 101, 110, 
+    100, 101, 114,  84,  97, 114, 
+    103, 101, 116,  79, 102, 102, 
+    115, 101, 116,   0,   1,   0, 
+      3,   0,   1,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 118,  84, 101, 120, 
+    116, 117, 114, 101,  67, 111, 
+    111, 114, 100, 115,   0, 171, 
       1,   0,   3,   0,   1,   0, 
       4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 118,  84, 
-    101, 120, 116, 117, 114, 101, 
-     67, 111, 111, 114, 100, 115, 
-      0, 171,   1,   0,   3,   0, 
+      0,   0,   0,   0, 118,  76, 
+     97, 121, 101, 114,  81, 117, 
+     97, 100,   0, 118,  77,  97, 
+    115, 107,  81, 117,  97, 100, 
+      0, 109,  66,  97,  99, 107, 
+    100, 114, 111, 112,  84, 114, 
+     97, 110, 115, 102, 111, 114, 
+    109,   0, 102,  76,  97, 121, 
+    101, 114,  67, 111, 108, 111, 
+    114,   0, 102,  76,  97, 121, 
+    101, 114,  79, 112,  97,  99, 
+    105, 116, 121,   0, 171, 171, 
+      0,   0,   3,   0,   1,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 105,  66, 
+    108, 101, 110, 100,  67, 111, 
+    110, 102, 105, 103,   0, 171, 
+    171, 171,   1,   0,  19,   0, 
       1,   0,   4,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    118,  76,  97, 121, 101, 114, 
-     81, 117,  97, 100,   0, 118, 
-     77,  97, 115, 107,  81, 117, 
-     97, 100,   0, 109,  66,  97, 
-     99, 107, 100, 114, 111, 112, 
-     84, 114,  97, 110, 115, 102, 
-    111, 114, 109,   0, 102,  76, 
-     97, 121, 101, 114,  67, 111, 
-    108, 111, 114,   0, 102,  76, 
-     97, 121, 101, 114,  79, 112, 
-     97,  99, 105, 116, 121,   0, 
-    171, 171,   0,   0,   3,   0, 
-      1,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    105,  66, 108, 101, 110, 100, 
-     67, 111, 110, 102, 105, 103, 
-      0, 171, 171, 171,   1,   0, 
-     19,   0,   1,   0,   4,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  54,  46,  51,  46,  57, 
-     54,  48,  48,  46,  49,  54, 
-     51,  56,  52,   0, 171, 171, 
-     73,  83,  71,  78,  44,   0, 
-      0,   0,   1,   0,   0,   0, 
-      8,   0,   0,   0,  32,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   3,   0,   0,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
-      0, 171, 171, 171,  79,  83, 
-     71,  78, 128,   0,   0,   0, 
-      4,   0,   0,   0,   8,   0, 
-      0,   0, 104,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  15,   0, 
-      0,   0, 116,   0,   0,   0, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  48,  46,  49,  48, 
+     48,  49,  49,  46,  49,  54, 
+     51,  56,  52,   0,  73,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   3,  12, 
-      0,   0, 116,   0,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,   3, 
-      0,   0, 116,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      2,   0,   0,   0,   7,   8, 
-      0,   0,  83,  86,  95,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,   0,  84,  69,  88,  67, 
-     79,  79,  82,  68,   0, 171, 
-    171, 171
+      0,   0,   0,   0,   3,   3, 
+      0,   0,  80,  79,  83,  73, 
+     84,  73,  79,  78,   0, 171, 
+    171, 171,  79,  83,  71,  78, 
+    128,   0,   0,   0,   4,   0, 
+      0,   0,   8,   0,   0,   0, 
+    104,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+    116,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,  12,   0,   0, 
+    116,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  12,   3,   0,   0, 
+    116,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   2,   0, 
+      0,   0,   7,   8,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171
 };
-ShaderBytes sLayerQuadBlendMask3DVS = { LayerQuadBlendMask3DVS, sizeof(LayerQuadBlendMask3DVS) };
+ShaderBytes sLayerQuadBlendMaskVS = { LayerQuadBlendMaskVS, sizeof(LayerQuadBlendMaskVS) };
 #if 0
 //
-// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
+// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
 //
 //
 // Buffer Definitions: 
 //
 // cbuffer $Globals
 // {
 //
 //   float4 fLayerColor;                // Offset:    0 Size:    16
@@ -7108,27 +5790,26 @@ ShaderBytes sLayerQuadBlendMask3DVS = { 
 //   float4 vMaskQuad;                  // Offset:  224 Size:    16 [unused]
 //   float4x4 mBackdropTransform;       // Offset:  240 Size:    64 [unused]
 //
 // }
 //
 //
 // Resource Bindings:
 //
-// Name                                 Type  Format         Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// sSampler                          sampler      NA          NA    0        1
-// LayerTextureSamplerLinear         sampler      NA          NA    1        1
-// tRGB                              texture  float4          2d    0        1
-// tY                                texture  float4          2d    1        1
-// tCb                               texture  float4          2d    2        1
-// tCr                               texture  float4          2d    3        1
-// tMask                             texture  float4          2d    5        1
-// tBackdrop                         texture  float4          2d    6        1
-// $Globals                          cbuffer      NA          NA    0        1
+// Name                                 Type  Format         Dim      HLSL Bind  Count
+// ------------------------------ ---------- ------- ----------- -------------- ------
+// sSampler                          sampler      NA          NA             s0      1 
+// tRGB                              texture  float4          2d             t0      1 
+// tY                                texture  float4          2d             t1      1 
+// tCb                               texture  float4          2d             t2      1 
+// tCr                               texture  float4          2d             t3      1 
+// tMask                             texture  float4          2d             t5      1 
+// tBackdrop                         texture  float4          2d             t6      1 
+// $Globals                          cbuffer      NA          NA            cb0      1 
 //
 //
 //
 // Input signature:
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
 // SV_Position              0   xyzw        0      POS   float       
@@ -7157,128 +5838,123 @@ ShaderBytes sLayerQuadBlendMask3DVS = { 
 // Target Sampler Source Sampler  Source Resource
 // -------------- --------------- ----------------
 // s0             s0              t0               
 // s1             s0              t1               
 // s2             s0              t2               
 // s3             s0              t3               
 // s4             s0              t5               
 // s5             s0              t6               
-// s6             s1              t5               
 //
 //
 // Level9 shader bytecode:
 //
     ps_2_x
     def c3, -1, -2, -0.50195998, -0.0627499968
     def c4, 1.59603, 0.812969983, 1.16437995, 2.01723003
-    def c5, -1, -2, -3, -4
-    def c6, -5, -6, -7, -8
+    def c5, -2, -3, -4, -5
+    def c6, -6, -7, -8, -9
     def c7, 1, 0.25, 2, -1
-    def c8, 16, -12, -13, -14
-    def c9, -9, -10, -11, -12
+    def c8, 16, -12, -14, 0
+    def c9, -10, -11, -12, -13
     def c10, 0.300000012, 0.589999974, 0.109999999, 0
     def c11, 0.391759992, -1, -0, -0.5
     dcl t0
     dcl t1.xyz
     dcl_2d s0
     dcl_2d s1
     dcl_2d s2
     dcl_2d s3
     dcl_2d s4
     dcl_2d s5
-    dcl_2d s6
     mov r0.x, -c11.z
     mov r1.x, -c11.z
     mov r2.z, -c11.z
     texld r3, t0, s1
     texld r4, t0, s3
     add r0.w, r4.x, c3.z
     mul r3.yz, r0.w, c4.xxyw
     add r0.w, r3.x, c3.w
     mad r1.w, r0.w, c4.z, -r3.z
     mad r3.x, r0.w, c4.z, r3.y
-    texld r4, t1, s4
+    rcp r2.w, t1.z
+    mul r4.xy, r2.w, t1
     texld r5, t0, s2
+    texld r4, r4, s4
     add r2.w, r5.x, c3.z
     mad r3.y, r2.w, -c11.x, r1.w
     mul r1.w, r2.w, c4.w
     mad r3.z, r0.w, c4.z, r1.w
     mov r3.w, -c3.x
     mul r3, r3, c1.x
     mul r5, r4.x, r3
-    rcp r0.w, t1.z
-    mul r6.xy, r0.w, t1
+    mov r6.xy, t0.wzzw
     texld r7, t0, s0
-    texld r6, r6, s6
+    texld r6, r6, s5
     mul r7, r7, c1.x
     mul r8, r4.x, r7
     mov r9.xy, c3
-    add r10, r9.xyxy, c2.xxyy
+    add r10, r9.xyxx, c2.xxyz
     mul r10, r10, r10
     cmp r5, -r10.x, r8, r5
-    mov r8.xyz, r7
-    mov r8.w, c1.x
-    mul r11, r4.x, r8
+    cmp r3, -r10.x, r7, r3
+    mov r7.w, c1.x
+    mul r8, r4.x, r7
+    cmp r3, -c2.x, r7, r3
     mul r4, r4.x, c0
-    cmp r5, -c2.x, r11, r5
-    cmp r6.yz, -r10.xyww, c11.y, c11.z
-    cmp r6.yz, -r10.xxzw, c3.x, r6
-    cmp r6.yz, -c2.xxyw, r9.x, r6
-    cmp r4, r6.y, r4, r5
-    mul r5, r6.x, r7
-    cmp r3, -r10.x, r7, r3
-    cmp r4, -r10.z, r4, r5
-    cmp r3, -c2.x, r8, r3
-    cmp r3, r6.y, c0, r3
+    cmp r5, -c2.x, r8, r5
+    cmp r7.xy, -r10.yzzw, c11.y, c11.z
+    cmp r0.w, -r10.x, c3.x, r7.x
+    cmp r1.w, -c2.y, r9.x, r7.y
+    cmp r0.w, -c2.x, r9.x, r0.w
+    cmp r4, r0.w, r4, r5
+    cmp r3, r0.w, c0, r3
     cmp r3, -c2.y, r3, r4
-    cmp r3, r6.z, -c11.zzzy, r3
+    cmp r3, r1.w, -c11.zzzy, r3
     rcp r0.w, r3.w
     mul r4.xyz, r0.w, r3
     cmp r4.xyz, -c2.w, r3, r4
     add r5.xy, -r4.yzzw, r4
     cmp r5.zw, r5.x, r4.xyxy, r4.xyyx
     max r0.w, r5.z, r4.z
     min r1.w, r4.z, r5.w
-    add r6.w, r0.w, -r1.w
-    mov r7.xy, t0.wzzw
-    texld r7, r7, s5
-    rcp r0.w, r7.w
-    mul r8.xyz, r0.w, r7
-    mad r5.zw, r7.xyzy, r0.w, -r8.xyxz
-    mul r9.xy, r6.w, r5.zwzw
-    mad r10, r7.yxxz, r0.w, -r8.xzyy
-    rcp r1.w, r10.x
-    mul r6.y, r1.w, r9.x
-    cmp r1.yz, r10.z, -c11.z, r6.xwyw
-    mul r11, r6.w, r10
+    add r7.w, r0.w, -r1.w
+    rcp r0.w, r6.w
+    mul r8.xyz, r0.w, r6
+    mad r5.zw, r6.xyzy, r0.w, -r8.xyxz
+    mul r9.xy, r7.w, r5.zwzw
+    mad r11, r6.yxxz, r0.w, -r8.xzyy
+    rcp r1.w, r11.x
+    mul r7.y, r1.w, r9.x
+    cmp r1.yz, r11.z, -c11.z, r7.xwyw
+    mul r12, r7.w, r11
     rcp r1.w, r5.w
-    mul r6.x, r1.w, r11.y
-    cmp r2.xy, r10.w, -c11.z, r6.xwzw
+    mul r7.x, r1.w, r12.y
+    cmp r2.xy, r11.w, -c11.z, r7.xwzw
     cmp r1.xyz, r5.z, r1, r2
     rcp r1.w, r5.z
-    mul r6.z, r1.w, r11.x
-    cmp r0.yz, r10.y, -c11.z, r6.xzww
-    cmp r0.xyz, r10.w, r0, r1
+    mul r7.z, r1.w, r12.x
+    cmp r0.yz, r11.y, -c11.z, r7.xzww
+    cmp r0.xyz, r11.w, r0, r1
     mov r1.y, -c11.z
     mov r2.y, -c11.z
-    mov r12.z, -c11.z
-    rcp r1.w, r10.z
-    mul r6.y, r1.w, r11.w
-    cmp r2.xz, r10.x, -c11.z, r6.wyyw
-    rcp r1.w, r10.y
-    mul r6.x, r1.w, r9.y
-    cmp r12.xy, r5.z, -c11.z, r6.wxzw
-    cmp r2.xyz, r10.w, r2, r12
-    rcp r1.w, r10.w
-    mul r6.z, r1.w, r11.z
-    cmp r1.xz, r5.w, -c11.z, r6.zyww
+    mov r10.z, -c11.z
+    rcp r1.w, r11.z
+    mul r7.y, r1.w, r12.w
+    cmp r2.xz, r11.x, -c11.z, r7.wyyw
+    rcp r1.w, r11.y
+    mul r7.x, r1.w, r9.y
+    cmp r10.xy, r5.z, -c11.z, r7.wxzw
+    cmp r2.xyz, r11.w, r2, r10
+    rcp r1.w, r11.w
+    mul r7.z, r1.w, r12.z
+    cmp r1.xz, r5.w, -c11.z, r7.zyww
     cmp r1.xyz, r5.z, r1, r2
-    cmp r0.xyz, r10.x, r0, r1
-    cmp r1.xy, r10.z, r8, r8.yxzw
+    cmp r0.xyz, r11.x, r0, r1
+    cmp r1.xy, r11.z, r8, r8.yxzw
     dp3 r4.w, c10, r0
     dp3 r8.w, c10, r8
     add r4.w, -r4.w, r8.w
     add r0.xyz, r0, r4.w
     add r4.w, -r0.y, r0.x
     cmp r1.zw, r4.w, r0.xyyx, r0.xyxy
     min r4.w, r0.z, r1.z
     max r2.x, r1.w, r0.z
@@ -7293,239 +5969,238 @@ ShaderBytes sLayerQuadBlendMask3DVS = { 
     add r1.w, -r1.z, -c3.x
     mul r2.yzw, r1.w, r2
     add r1.w, -r1.z, r2.x
     add r4.w, -r2.x, -c3.x
     rcp r1.w, r1.w
     mad r2.xyz, r2.yzww, r1.w, r1.z
     cmp r0.xyz, r4.w, r0, r2
     mov r4.w, c2.z
-    add r1.zw, r4.w, c8
-    mul r1.zw, r1, r1
-    dp3 r2.x, c10, r4
-    add r2.y, -r8.w, r2.x
-    add r2.x, -r2.x, r8.w
-    add r2.xzw, r2.x, r4.xyyz
-    mad r6.xyz, r7, r0.w, r2.y
-    add r6.w, -r6.y, r6.x
-    cmp r5.zw, r6.w, r6.xyyx, r6.xyxy
-    min r2.y, r6.z, r5.z
-    max r9.x, r5.w, r6.z
-    dp3 r6.w, c10, r6
-    add r5.z, -r2.y, r6.w
+    add r1.z, r4.w, c8.z
+    mul r1.z, r1.z, r1.z
+    dp3 r1.w, c10, r4
+    add r2.x, -r8.w, r1.w
+    add r1.w, -r1.w, r8.w
+    add r2.yzw, r1.w, r4.xxyz
+    mad r7.xyz, r6, r0.w, r2.x
+    add r1.w, -r7.y, r7.x
+    cmp r5.zw, r1.w, r7.xyyx, r7.xyxy
+    min r1.w, r7.z, r5.z
+    max r2.x, r5.w, r7.z
+    dp3 r7.w, c10, r7
+    add r5.z, -r1.w, r7.w
     rcp r5.z, r5.z
-    add r9.yzw, -r6.w, r6.xxyz
-    mul r9.yzw, r6.w, r9
-    mad r9.yzw, r9, r5.z, r6.w
-    cmp r6.xyz, r2.y, r6, r9.yzww
-    add r9.yzw, -r6.w, r6.xxyz
-    add r2.y, -r6.w, -c3.x
-    mul r9.yzw, r2.y, r9
-    add r2.y, -r6.w, r9.x
-    add r5.z, -r9.x, -c3.x
-    rcp r5.w, r2.y
-    mad r9.xyz, r9.yzww, r5.w, r6.w
-    cmp r6.xyz, r5.z, r6, r9
-    cmp r6.xyz, -r1.w, r6, -c11.z
-    add r1.w, -r2.z, r2.x
-    cmp r5.zw, r1.w, r2.xyzx, r2.xyxz
-    min r1.w, r2.w, r5.z
-    max r6.w, r5.w, r2.w
-    dp3 r2.y, c10, r2.xzww
-    add r5.z, -r1.w, r2.y
-    rcp r5.z, r5.z
-    add r9.xyz, -r2.y, r2.xzww
-    mul r9.xyz, r2.y, r9
-    mad r9.xyz, r9, r5.z, r2.y
-    cmp r2.xzw, r1.w, r2, r9.xyyz
-    add r9.xyz, -r2.y, r2.xzww
-    add r1.w, -r2.y, -c3.x
+    add r9.xyz, -r7.w, r7
+    mul r9.xyz, r7.w, r9
+    mad r9.xyz, r9, r5.z, r7.w
+    cmp r7.xyz, r1.w, r7, r9
+    add r9.xyz, -r7.w, r7
+    add r1.w, -r7.w, -c3.x
     mul r9.xyz, r1.w, r9
-    add r1.w, -r2.y, r6.w
-    add r6.w, -r6.w, -c3.x
+    add r1.w, r2.x, -r7.w
+    add r9.w, -r2.x, -c3.x
     rcp r1.w, r1.w
-    mad r9.xyz, r9, r1.w, r2.y
-    cmp r2.xyz, r6.w, r2.xzww, r9
-    cmp r2.xyz, -r1.z, r2, r6
-    add r6, r4.w, c9
-    mul r6, r6, r6
-    cmp r0.xyz, -r6.w, r0, r2
+    mad r9.xyz, r9, r1.w, r7.w
+    cmp r7.xyz, r9.w, r7, r9
+    cmp r7.xyz, -r1.z, r7, -c11.z
+    add r7.w, -r2.z, r2.y
+    cmp r1.zw, r7.w, r2.xyzy, r2.xyyz
+    min r7.w, r2.w, r1.z
+    max r5.z, r1.w, r2.w
+    dp3 r5.w, c10, r2.yzww
+    add r1.z, -r7.w, r5.w
+    rcp r1.z, r1.z
+    add r9.xyz, r2.yzww, -r5.w
+    mul r9.xyz, r5.w, r9
+    mad r9.xyz, r9, r1.z, r5.w
+    cmp r2.xyz, r7.w, r2.yzww, r9
+    add r9.xyz, -r5.w, r2
+    add r2.w, -r5.w, -c3.x
+    mul r9.xyz, r2.w, r9
+    add r2.w, -r5.w, r5.z
+    add r7.w, -r5.z, -c3.x
+    rcp r2.w, r2.w
+    mad r9.xyz, r9, r2.w, r5.w
+    cmp r2.xyz, r7.w, r2, r9
+    add r9, r4.w, c9
+    mul r9, r9, r9
+    cmp r2.xyz, -r9.w, r2, r7
+    cmp r0.xyz, -r9.z, r0, r2
     add r2, -r4.xxzy, r4.yzxz
-    mov r9.y, -c11.z
+    mov r7.y, -c11.z
     mov r10.y, -c11.z
     mov r11.z, -c11.z
-    rcp r6.w, r2.z
-    max r9.w, r1.x, r8.z
-    min r10.w, r8.z, r1.y
-    add r1.w, r9.w, -r10.w
+    rcp r7.w, r2.z
+    max r11.w, r1.x, r8.z
+    min r5.z, r8.z, r1.y
+    add r1.w, -r5.z, r11.w
     mul r5.zw, r1.w, r5.xyxy
-    mul r1.x, r6.w, r5.w
+    mul r1.x, r7.w, r5.w
     cmp r11.xy, r2.y, -c11.z, r1.wxzw
     rcp r5.w, r5.x
     mul r12, r1.w, r2
     mul r1.y, r5.w, r12.w
     cmp r10.xz, r2.x, -c11.z, r1.wyyw
     cmp r10.xyz, r2.w, r10, r11
     rcp r5.w, r2.w
     mul r1.z, r5.w, r5.z
-    cmp r9.xz, r5.y, -c11.z, r1.zyww
-    cmp r9.xyz, r2.y, r9, r10
+    cmp r7.xz, r5.y, -c11.z, r1.zyww
+    cmp r7.xyz, r2.y, r7, r10
     mov r10.x, -c11.z
     mov r11.x, -c11.z
     mov r13.z, -c11.z
-    rcp r6.w, r2.x
-    mul r1.y, r6.w, r12.y
+    rcp r7.w, r2.x
+    mul r1.y, r7.w, r12.y
     cmp r11.yz, r5.x, -c11.z, r1.xwyw
-    rcp r6.w, r5.y
-    mul r1.x, r6.w, r12.z
+    rcp r7.w, r5.y
+    mul r1.x, r7.w, r12.z
     cmp r13.xy, r2.w, -c11.z, r1.xwzw
     cmp r5.xyz, r2.y, r11, r13
     rcp r5.w, r2.y
     mul r1.z, r5.w, r12.x
     cmp r10.yz, r2.z, -c11.z, r1.xzww
     cmp r1.xyz, r2.w, r10, r5
-    cmp r1.xyz, r2.x, r1, r9
+    cmp r1.xyz, r2.x, r1, r7
     dp3 r1.w, c10, r1
     add r1.w, -r1.w, r8.w
     add r1.xyz, r1.w, r1
     add r1.w, -r1.y, r1.x
     cmp r2.xy, r1.w, r1.yxzw, r1
-    min r6.w, r1.z, r2.x
-    max r8.w, r2.y, r1.z
+    min r8.w, r1.z, r2.x
+    max r5.x, r2.y, r1.z
     dp3 r1.w, c10, r1
-    add r2.x, -r6.w, r1.w
+    add r2.x, -r8.w, r1.w
     rcp r2.x, r2.x
     add r2.yzw, -r1.w, r1.xxyz
     mul r2.yzw, r1.w, r2
     mad r2.xyz, r2.yzww, r2.x, r1.w
-    cmp r1.xyz, r6.w, r1, r2
+    cmp r1.xyz, r8.w, r1, r2
     add r2.xyz, -r1.w, r1
     add r2.w, -r1.w, -c3.x
     mul r2.xyz, r2.w, r2
-    add r2.w, -r1.w, r8.w
-    add r6.w, -r8.w, -c3.x
+    add r2.w, -r1.w, r5.x
+    add r8.w, -r5.x, -c3.x
     rcp r2.w, r2.w
     mad r2.xyz, r2, r2.w, r1.w
-    cmp r1.xyz, r6.w, r1, r2
-    cmp r0.xyz, -r6.z, r1, r0
-    mad r1.xyz, r7, r0.w, r4
+    cmp r1.xyz, r8.w, r1, r2
+    cmp r0.xyz, -r9.y, r1, r0
+    mad r1.xyz, r6, r0.w, r4
     mul r2.xyz, r4, r8
     mad r5.xyz, r2, c3.y, r1
     mad r1.xyz, r8, -r4, r1
-    cmp r0.xyz, -r6.y, r5, r0
-    mad r5.xyz, r7, r0.w, -r4
+    cmp r0.xyz, -r9.x, r5, r0
+    mad r5.xyz, r6, r0.w, -r4
     abs r5.xyz, r5
-    cmp r0.xyz, -r6.x, r5, r0
+    add r7, r4.w, c6
+    mul r7, r7, r7
+    cmp r0.xyz, -r7.w, r5, r0
     add r5.xy, -r4.yzzw, -c11.w
-    mad r6.xyz, r4, c7.z, c7.w
-    mad r1.w, r7.z, -r0.w, c7.y
-    mad r9.xyz, r8, c8.x, c8.y
-    mad r9.xyz, r9, r8, -c5.w
-    mul r9.xyz, r8, r9
+    mad r9.xyz, r4, c7.z, c7.w
+    mad r1.w, r6.z, -r0.w, c7.y
+    mad r10.xyz, r8, c8.x, c8.y
+    mad r10.xyz, r10, r8, -c5.z
+    mul r10.xyz, r8, r10
     rsq r2.w, r8.z
     rcp r2.w, r2.w
-    cmp r1.w, r1.w, r9.z, r2.w
-    mad r1.w, r7.z, -r0.w, r1.w
-    mad r1.w, r6.z, r1.w, r8.z
-    mad r10.xyz, r4, c3.y, -c3.x
-    mul r10.xyz, r8, r10
-    mad r11, r7.yzxy, -r0.w, c7.xxyy
-    mad r5.zw, r10.xyyz, -r11.xyxy, r8.xyyz
-    cmp r12.z, r5.y, r5.w, r1.w
+    cmp r1.w, r1.w, r10.z, r2.w
+    mad r1.w, r6.z, -r0.w, r1.w
+    mad r1.w, r9.z, r1.w, r8.z
+    mad r11.xyz, r4, c3.y, -c3.x
+    mul r11.xyz, r8, r11
+    mad r12, r6.yzxy, -r0.w, c7.xxyy
+    mad r5.zw, r11.xyyz, -r12.xyxy, r8.xyyz
+    cmp r13.z, r5.y, r5.w, r1.w
     rsq r1.w, r8.y
     rcp r1.w, r1.w
-    cmp r1.w, r11.w, r9.y, r1.w
-    mad r1.w, r7.y, -r0.w, r1.w
-    mad r1.w, r6.y, r1.w, r8.y
-    cmp r12.y, r5.x, r5.z, r1.w
-    add r13, r4.w, c6
-    mul r13, r13, r13
+    cmp r1.w, r12.w, r10.y, r1.w
+    mad r1.w, r6.y, -r0.w, r1.w
+    mad r1.w, r9.y, r1.w, r8.y
+    cmp r13.y, r5.x, r5.z, r1.w
     add r14, -r4.xyzx, -c11.yyyw
     rsq r1.w, r8.x
     rcp r1.w, r1.w
-    cmp r1.w, r11.z, r9.x, r1.w
-    mad r1.w, r7.x, -r0.w, r1.w
-    mad r1.w, r6.x, r1.w, r8.x
-    mad r6, r7.xyzx, -r0.w, -c11.wwwy
-    mad r9.xyz, r7, r0.w, c3.x
-    mul r9.xyz, r9, r9
-    mad r0.w, r10.x, -r6.w, r8.x
-    cmp r12.x, r14.w, r0.w, r1.w
-    cmp r0.xyz, -r13.w, r12, r0
-    add r10.xyz, r8, r8
-    mad r12.xyz, r4, -c3.y, r10
-    add r12.xyz, r12, c3.x
-    mad r15.xyz, r4, -r10, r12
-    mul r10.xyz, r4, r10
+    cmp r1.w, r12.z, r10.x, r1.w
+    mad r1.w, r6.x, -r0.w, r1.w
+    mad r1.w, r9.x, r1.w, r8.x
+    mad r9, r6.xyzx, -r0.w, -c11.wwwy
+    mad r10.xyz, r6, r0.w, c3.x
+    mul r10.xyz, r10, r10
+    mad r0.w, r11.x, -r9.w, r8.x
+    cmp r13.x, r14.w, r0.w, r1.w
+    cmp r0.xyz, -r7.z, r13, r0
+    add r11.xyz, r8, r8
+    mad r13.xyz, r4, -c3.y, r11
+    add r13.xyz, r13, c3.x
+    mad r15.xyz, r4, -r11, r13
+    mul r11.xyz, r4, r11
     add r16.xyz, r4, r4
     mul r17.xyz, r8, r16
-    mad r12.xyz, r16, -r8, r12
-    cmp r6.xyz, r6, r10, r12
+    mad r13.xyz, r16, -r8, r13
+    cmp r9.xyz, r9, r11, r13
     cmp r5.yz, r5.xxyw, r17, r15
     cmp r5.x, r14.w, r17.x, r15.x
-    cmp r0.xyz, -r13.z, r5, r0
+    cmp r0.xyz, -r7.y, r5, r0
     rcp r0.w, r4.x
-    mad r0.w, r6.w, -r0.w, -c3.x
+    mad r0.w, r9.w, -r0.w, -c3.x
     max r1.w, r0.w, -c11.z
     mul r5.xyz, r4, r4
     cmp r0.w, -r5.x, -c11.z, r1.w
-    cmp r10.x, -r9.x, -c3.x, r0.w
+    cmp r11.x, -r10.x, -c3.x, r0.w
     rcp r0.w, r4.y
-    mad r0.w, r11.x, -r0.w, -c3.x
+    mad r0.w, r12.x, -r0.w, -c3.x
     max r1.w, r0.w, -c11.z
     cmp r0.w, -r5.y, -c11.z, r1.w
-    cmp r10.y, -r9.y, -c3.x, r0.w
+    cmp r11.y, -r10.y, -c3.x, r0.w
     rcp r0.w, r4.z
-    mad r0.w, r11.y, -r0.w, -c3.x
+    mad r0.w, r12.y, -r0.w, -c3.x
     max r1.w, r0.w, -c11.z
     cmp r0.w, -r5.z, -c11.z, r1.w
-    cmp r10.z, -r9.z, -c3.x, r0.w
-    cmp r0.xyz, -r13.y, r10, r0
-    add r5.xyz, r4, c3.x
-    mul r5.xyz, r5, r5
+    cmp r11.z, -r10.z, -c3.x, r0.w
+    cmp r0.xyz, -r7.x, r11, r0
+    add r5, r4.w, c5
+    mul r5, r5, r5
+    add r7.xyz, r4, c3.x
+    mul r7.xyz, r7, r7
     rcp r0.w, r14.x
     mul r0.w, r0.w, r8.x
     min r1.w, r0.w, -c3.x
-    cmp r0.w, -r5.x, -c3.x, r1.w
-    mul r9.xyz, r8, r8
-    cmp r10.x, -r9.x, -c11.z, r0.w
+    cmp r0.w, -r7.x, -c3.x, r1.w
+    mul r10.xyz, r8, r8
+    cmp r11.x, -r10.x, -c11.z, r0.w
     rcp r0.w, r14.y
     rcp r1.w, r14.z
     mul r1.w, r1.w, r8.z
     min r2.w, r1.w, -c3.x
-    cmp r1.w, -r5.z, -c3.x, r2.w
-    cmp r10.z, -r9.z, -c11.z, r1.w
+    cmp r1.w, -r7.z, -c3.x, r2.w
+    cmp r11.z, -r10.z, -c11.z, r1.w
     mul r0.w, r0.w, r8.y
     min r1.w, r0.w, -c3.x
-    cmp r0.w, -r5.y, -c3.x, r1.w
-    cmp r10.y, -r9.y, -c11.z, r0.w
-    cmp r0.xyz, -r13.x, r10, r0
-    add r5, r4.w, c5
-    mul r5, r5, r5
-    max r9.xyz, r8, r4
+    cmp r0.w, -r7.y, -c3.x, r1.w
+    cmp r11.y, -r10.y, -c11.z, r0.w
+    cmp r0.xyz, -r5.w, r11, r0
+    max r7.xyz, r8, r4
     min r10.xyz, r4, r8
-    cmp r0.xyz, -r5.w, r9, r0
-    cmp r0.xyz, -r5.z, r10, r0
-    cmp r0.xyz, -r5.y, r6, r0
-    cmp r0.xyz, -r5.x, r1, r0
+    cmp r0.xyz, -r5.z, r7, r0
+    cmp r0.xyz, -r5.y, r10, r0
+    cmp r0.xyz, -r5.x, r9, r0
+    cmp r0.xyz, -r10.w, r1, r0
     cmp r0.xyz, -c2.z, r2, r0
-    lrp r1.xyz, r7.w, r0, r4
+    lrp r1.xyz, r6.w, r0, r4
     mul r0.xyz, r3.w, r1
     mul r1.x, r3.w, r3.w
     mov r0.w, r3.w
-    cmp r0, -r1.x, r7, r0
-    mul r1.x, r7.w, r7.w
+    cmp r0, -r1.x, r6, r0
+    mul r1.x, r6.w, r6.w
     cmp r0, -r1.x, r3, r0
     mov oC0, r0
 
-// approximately 329 instruction slots used (7 texture, 322 arithmetic)
+// approximately 326 instruction slots used (6 texture, 320 arithmetic)
 ps_4_0
-dcl_constantbuffer cb0[3], immediateIndexed
+dcl_constantbuffer CB0[3], immediateIndexed
 dcl_sampler s0, mode_default
-dcl_sampler s1, mode_default
 dcl_resource_texture2d (float,float,float,float) t0
 dcl_resource_texture2d (float,float,float,float) t1
 dcl_resource_texture2d (float,float,float,float) t2
 dcl_resource_texture2d (float,float,float,float) t3
 dcl_resource_texture2d (float,float,float,float) t5
 dcl_resource_texture2d (float,float,float,float) t6
 dcl_input_ps linear v1.xy
 dcl_input_ps linear v1.zw
@@ -7563,37 +6238,40 @@ if_z cb0[2].y
         mov r4.w, l(1.000000)
         mul r1.xyzw, r4.xyzw, cb0[1].xxxx
       endif 
     endif 
   endif 
   movc r1.xyzw, r2.xxxx, r1.xyzw, cb0[0].xyzw
   mov r2.x, l(-1)
 else 
-  ieq r2.y, l(1), cb0[2].y
-  if_nz r2.y
+  ieq r2.x, l(1), cb0[2].y
+  if_nz r2.x
     if_z cb0[2].x
       sample r3.xyzw, v1.xyxx, t0.xyzw, s0
       mul r3.xyz, r3.xyzx, cb0[1].xxxx
-      sample r4.xyzw, v2.xyxx, t5.xyzw, s0
+      div r2.yz, v2.xxyx, v2.zzzz
+      sample r4.xyzw, r2.yzyy, t5.xyzw, s0
       mov r3.w, cb0[1].x
       mul r1.xyzw, r3.xyzw, r4.xxxx
       mov r2.y, l(-1)
     else 
       ieq r2.z, l(1), cb0[2].x
       if_nz r2.z
-        sample r3.xyzw, v2.xyxx, t5.xyzw, s0
+        div r2.zw, v2.xxxy, v2.zzzz
+        sample r3.xyzw, r2.zwzz, t5.xyzw, s0
         sample r4.xyzw, v1.xyxx, t0.xyzw, s0
         mul r4.xyzw, r4.xyzw, cb0[1].xxxx
         mul r1.xyzw, r3.xxxx, r4.xyzw
         mov r2.y, l(-1)
       else 
         ieq r2.y, l(2), cb0[2].x
         if_nz r2.y
-          sample r3.xyzw, v2.xyxx, t5.xyzw, s0
+          div r2.zw, v2.xxxy, v2.zzzz
+          sample r3.xyzw, r2.zwzz, t5.xyzw, s0
           sample r4.xyzw, v1.xyxx, t3.xyzw, s0
           add r2.z, r4.x, l(-0.501960)
           sample r4.xyzw, v1.xyxx, t1.xyzw, s0
           add r2.w, r4.x, l(-0.062750)
           sample r4.xyzw, v1.xyxx, t2.xyzw, s0
           add r3.y, r4.x, l(-0.501960)
           mul r3.zw, r2.zzzz, l(0.000000, 0.000000, 1.596030, 0.812970)
           mad r4.x, r2.w, l(1.164380), r3.z
@@ -7603,29 +6281,20 @@ else
           mad r4.z, r2.w, l(1.164380), r3.z
           mov r4.w, l(1.000000)
           mul r4.xyzw, r4.xyzw, cb0[1].xxxx
           mul r1.xyzw, r3.xxxx, r4.xyzw
         endif 
       endif 
     endif 
     if_z r2.y
-      sample r3.xyzw, v2.xyxx, t5.xyzw, s0
+      div r2.yz, v2.xxyx, v2.zzzz
+      sample r3.xyzw, r2.yzyy, t5.xyzw, s0
       mul r1.xyzw, r3.xxxx, cb0[0].xyzw
     endif 
-    mov r2.x, l(-1)
-  else 
-    ieq r2.x, l(2), cb0[2].y
-    if_nz r2.x
-      div r2.yz, v2.xxyx, v2.zzzz
-      sample r3.xyzw, r2.yzyy, t5.xyzw, s1
-      sample r4.xyzw, v1.xyxx, t0.xyzw, s0
-      mul r4.xyzw, r4.xyzw, cb0[1].xxxx
-      mul r1.xyzw, r3.xxxx, r4.xyzw
-    endif 
   endif 
 endif 
 movc r1.xyzw, r2.xxxx, r1.xyzw, l(0,0,0,1.000000)
 eq r2.x, r0.w, l(0.000000)
 if_nz r2.x
   mov o0.xyzw, r1.xyzw
   ret 
 endif 
@@ -7872,132 +6541,134 @@ movc r0.xyz, r8.yyyy, r5.xyzx, r0.xyzx
 movc r0.xyz, r8.xxxx, r4.xyzx, r0.xyzx
 movc r0.xyz, cb0[2].zzzz, r0.xyzx, r2.xyzx
 add r2.x, -r0.w, l(1.000000)
 mul r0.xyz, r0.xyzx, r0.wwww
 mad r0.xyz, r2.xxxx, r1.xyzx, r0.xyzx
 mul o0.xyz, r1.wwww, r0.xyzx
 mov o0.w, r1.w
 ret 
-// Approximately 345 instruction slots used
+// Approximately 339 instruction slots used
 #endif
 
 const BYTE BlendShader[] =
 {
-     68,  88,  66,  67, 121,  58, 
-     99, 114, 236,  21, 118, 177, 
-     57, 125, 153, 182,  56, 164, 
-    101, 220,   1,   0,   0,   0, 
-    176,  68,   0,   0,   6,   0, 
+     68,  88,  66,  67, 122, 174, 
+    220,  58, 170,  47,  87,  82, 
+     85,   5, 178,  49, 217, 101, 
+    104, 140,   1,   0,   0,   0, 
+    184,  67,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-    152,  23,   0,   0, 200,  63, 
-      0,   0,  68,  64,   0,   0, 
-    244,  67,   0,   0, 124,  68, 
+     92,  23,   0,   0,   8,  63, 
+      0,   0, 132,  63,   0,   0, 
+    252,  66,   0,   0, 132,  67, 
       0,   0,  65, 111, 110,  57, 
-     88,  23,   0,   0,  88,  23, 
+     28,  23,   0,   0,  28,  23, 
       0,   0,   0,   2, 255, 255, 
-      0,  23,   0,   0,  88,   0, 
-      0,   0,   2,   0,  64,   0, 
-      0,   0,  88,   0,   0,   0, 
-     88,   0,   7,   0,  36,   0, 
-      0,   0,  88,   0,   0,   0, 
+    200,  22,   0,   0,  84,   0, 
+      0,   0,   2,   0,  60,   0, 
+      0,   0,  84,   0,   0,   0, 
+     84,   0,   6,   0,  36,   0, 
+      0,   0,  84,   0,   0,   0, 
       0,   0,   1,   0,   1,   0, 
       2,   0,   2,   0,   3,   0, 
       3,   0,   5,   0,   4,   0, 
-      6,   0,   5,   0,   5,   1, 
-      6,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
-      1,   0,   2,   0,   3,   3, 
-      3,   3,   1,   2, 255, 255, 
-     81,   0,   0,   5,   3,   0, 
-     15, 160,   0,   0, 128, 191, 
-      0,   0,   0, 192, 115, 128, 
-      0, 191,  18, 131, 128, 189, 
-     81,   0,   0,   5,   4,   0, 
-     15, 160, 182,  74, 204,  63, 
-    205,  30,  80,  63, 103,  10, 
-    149,  63,  76,  26,   1,  64, 
-     81,   0,   0,   5,   5,   0, 
-     15, 160,   0,   0, 128, 191, 
-      0,   0,   0, 192,   0,   0, 
-     64, 192,   0,   0, 128, 192, 
-     81,   0,   0,   5,   6,   0, 
-     15, 160,   0,   0, 160, 192, 
-      0,   0, 192, 192,   0,   0, 
-    224, 192,   0,   0,   0, 193, 
-     81,   0,   0,   5,   7,   0, 
-     15, 160,   0,   0, 128,  63, 
-      0,   0, 128,  62,   0,   0, 
-      0,  64,   0,   0, 128, 191, 
-     81,   0,   0,   5,   8,   0, 
-     15, 160,   0,   0, 128,  65, 
+      6,   0,   5,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   1,   0,   2,   0, 
+      3,   3,   3,   3,   1,   2, 
+    255, 255,  81,   0,   0,   5, 
+      3,   0,  15, 160,   0,   0, 
+    128, 191,   0,   0,   0, 192, 
+    115, 128,   0, 191,  18, 131, 
+    128, 189,  81,   0,   0,   5, 
+      4,   0,  15, 160, 182,  74, 
+    204,  63, 205,  30,  80,  63, 
+    103,  10, 149,  63,  76,  26, 
+      1,  64,  81,   0,   0,   5, 
+      5,   0,  15, 160,   0,   0, 
+      0, 192,   0,   0,  64, 192, 
+      0,   0, 128, 192,   0,   0, 
+    160, 192,  81,   0,   0,   5, 
+      6,   0,  15, 160,   0,   0, 
+    192, 192,   0,   0, 224, 192, 
+      0,   0,   0, 193,   0,   0, 
+     16, 193,  81,   0,   0,   5, 
+      7,   0,  15, 160,   0,   0, 
+    128,  63,   0,   0, 128,  62, 
+      0,   0,   0,  64,   0,   0, 
+    128, 191,  81,   0,   0,   5, 
+      8,   0,  15, 160,   0,   0, 
+    128,  65,   0,   0,  64, 193, 
+      0,   0,  96, 193,   0,   0, 
+      0,   0,  81,   0,   0,   5, 
+      9,   0,  15, 160,   0,   0, 
+     32, 193,   0,   0,  48, 193, 
       0,   0,  64, 193,   0,   0, 
-     80, 193,   0,   0,  96, 193, 
-     81,   0,   0,   5,   9,   0, 
-     15, 160,   0,   0,  16, 193, 
-      0,   0,  32, 193,   0,   0, 
-     48, 193,   0,   0,  64, 193, 
-     81,   0,   0,   5,  10,   0, 
-     15, 160, 154, 153, 153,  62, 
-     61,  10,  23,  63, 174,  71, 
-    225,  61,   0,   0,   0,   0, 
-     81,   0,   0,   5,  11,   0, 
-     15, 160, 196, 148, 200,  62, 
-      0,   0, 128, 191,   0,   0, 
-      0, 128,   0,   0,   0, 191, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   0,   0,  15, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 128,   1,   0,   7, 176, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   0,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   1,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   2,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   3,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   4,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   5,   8,  15, 160, 
-     31,   0,   0,   2,   0,   0, 
-      0, 144,   6,   8,  15, 160, 
-      1,   0,   0,   2,   0,   0, 
-      1, 128,  11,   0, 170, 161, 
-      1,   0,   0,   2,   1,   0, 
-      1, 128,  11,   0, 170, 161, 
-      1,   0,   0,   2,   2,   0, 
-      4, 128,  11,   0, 170, 161, 
-     66,   0,   0,   3,   3,   0, 
+     80, 193,  81,   0,   0,   5, 
+     10,   0,  15, 160, 154, 153, 
+    153,  62,  61,  10,  23,  63, 
+    174,  71, 225,  61,   0,   0, 
+      0,   0,  81,   0,   0,   5, 
+     11,   0,  15, 160, 196, 148, 
+    200,  62,   0,   0, 128, 191, 
+      0,   0,   0, 128,   0,   0, 
+      0, 191,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+     15, 176,  31,   0,   0,   2, 
+      0,   0,   0, 128,   1,   0, 
+      7, 176,  31,   0,   0,   2, 
+      0,   0,   0, 144,   0,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   1,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   2,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   3,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   4,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   5,   8, 
+     15, 160,   1,   0,   0,   2, 
+      0,   0,   1, 128,  11,   0, 
+    170, 161,   1,   0,   0,   2, 
+      1,   0,   1, 128,  11,   0, 
+    170, 161,   1,   0,   0,   2, 
+      2,   0,   4, 128,  11,   0, 
+    170, 161,  66,   0,   0,   3, 
+      3,   0,  15, 128,   0,   0, 
+    228, 176,   1,   8, 228, 160, 
+     66,   0,   0,   3,   4,   0, 
      15, 128,   0,   0, 228, 176, 
-      1,   8, 228, 160,  66,   0, 
-      0,   3,   4,   0,  15, 128, 
-      0,   0, 228, 176,   3,   8, 
-    228, 160,   2,   0,   0,   3, 
-      0,   0,   8, 128,   4,   0, 
-      0, 128,   3,   0, 170, 160, 
-      5,   0,   0,   3,   3,   0, 
-      6, 128,   0,   0, 255, 128, 
-      4,   0, 208, 160,   2,   0, 
+      3,   8, 228, 160,   2,   0, 
       0,   3,   0,   0,   8, 128, 
-      3,   0,   0, 128,   3,   0, 
-    255, 160,   4,   0,   0,   4, 
-      1,   0,   8, 128,   0,   0, 
-    255, 128,   4,   0, 170, 160, 
-      3,   0, 170, 129,   4,   0, 
-      0,   4,   3,   0,   1, 128, 
+      4,   0,   0, 128,   3,   0, 
+    170, 160,   5,   0,   0,   3, 
+      3,   0,   6, 128,   0,   0, 
+    255, 128,   4,   0, 208, 160, 
+      2,   0,   0,   3,   0,   0, 
+      8, 128,   3,   0,   0, 128, 
+      3,   0, 255, 160,   4,   0, 
+      0,   4,   1,   0,   8, 128, 
       0,   0, 255, 128,   4,   0, 
-    170, 160,   3,   0,  85, 128, 
-     66,   0,   0,   3,   4,   0, 
-     15, 128,   1,   0, 228, 176, 
-      4,   8, 228, 160,  66,   0, 
-      0,   3,   5,   0,  15, 128, 
-      0,   0, 228, 176,   2,   8, 
+    170, 160,   3,   0, 170, 129, 
+      4,   0,   0,   4,   3,   0, 
+      1, 128,   0,   0, 255, 128, 
+      4,   0, 170, 160,   3,   0, 
+     85, 128,   6,   0,   0,   2, 
+      2,   0,   8, 128,   1,   0, 
+    170, 176,   5,   0,   0,   3, 
+      4,   0,   3, 128,   2,   0, 
+    255, 128,   1,   0, 228, 176, 
+     66,   0,   0,   3,   5,   0, 
+     15, 128,   0,   0, 228, 176, 
+      2,   8, 228, 160,  66,   0, 
+      0,   3,   4,   0,  15, 128, 
+      4,   0, 228, 128,   4,   8, 
     228, 160,   2,   0,   0,   3, 
       2,   0,   8, 128,   5,   0, 
       0, 128,   3,   0, 170, 160, 
       4,   0,   0,   4,   3,   0, 
       2, 128,   2,   0, 255, 128, 
      11,   0,   0, 161,   1,   0, 
     255, 128,   5,   0,   0,   3, 
       1,   0,   8, 128,   2,   0, 
@@ -8007,207 +6678,195 @@ const BYTE BlendShader[] =
       4,   0, 170, 160,   1,   0, 
     255, 128,   1,   0,   0,   2, 
       3,   0,   8, 128,   3,   0, 
       0, 161,   5,   0,   0,   3, 
       3,   0,  15, 128,   3,   0, 
     228, 128,   1,   0,   0, 160, 
       5,   0,   0,   3,   5,   0, 
      15, 128,   4,   0,   0, 128, 
-      3,   0, 228, 128,   6,   0, 
-      0,   2,   0,   0,   8, 128, 
-      1,   0, 170, 176,   5,   0, 
-      0,   3,   6,   0,   3, 128, 
-      0,   0, 255, 128,   1,   0, 
-    228, 176,  66,   0,   0,   3, 
-      7,   0,  15, 128,   0,   0, 
-    228, 176,   0,   8, 228, 160, 
-     66,   0,   0,   3,   6,   0, 
-     15, 128,   6,   0, 228, 128, 
-      6,   8, 228, 160,   5,   0, 
+      3,   0, 228, 128,   1,   0, 
+      0,   2,   6,   0,   3, 128, 
+      0,   0, 235, 176,  66,   0, 
       0,   3,   7,   0,  15, 128, 
-      7,   0, 228, 128,   1,   0, 
+      0,   0, 228, 176,   0,   8, 
+    228, 160,  66,   0,   0,   3, 
+      6,   0,  15, 128,   6,   0, 
+    228, 128,   5,   8, 228, 160, 
+      5,   0,   0,   3,   7,   0, 
+     15, 128,   7,   0, 228, 128, 
+      1,   0,   0, 160,   5,   0, 
+      0,   3,   8,   0,  15, 128, 
+      4,   0,   0, 128,   7,   0, 
+    228, 128,   1,   0,   0,   2, 
+      9,   0,   3, 128,   3,   0, 
+    228, 160,   2,   0,   0,   3, 
+     10,   0,  15, 128,   9,   0, 
+      4, 128,   2,   0, 144, 160, 
+      5,   0,   0,   3,  10,   0, 
+     15, 128,  10,   0, 228, 128, 
+     10,   0, 228, 128,  88,   0, 
+      0,   4,   5,   0,  15, 128, 
+     10,   0,   0, 129,   8,   0, 
+    228, 128,   5,   0, 228, 128, 
+     88,   0,   0,   4,   3,   0, 
+     15, 128,  10,   0,   0, 129, 
+      7,   0, 228, 128,   3,   0, 
+    228, 128,   1,   0,   0,   2, 
+      7,   0,   8, 128,   1,   0, 
       0, 160,   5,   0,   0,   3, 
       8,   0,  15, 128,   4,   0, 
       0, 128,   7,   0, 228, 128, 
-      1,   0,   0,   2,   9,   0, 
-      3, 128,   3,   0, 228, 160, 
-      2,   0,   0,   3,  10,   0, 
-     15, 128,   9,   0,  68, 128, 
-      2,   0,  80, 160,   5,   0, 
-      0,   3,  10,   0,  15, 128, 
-     10,   0, 228, 128,  10,   0, 
-    228, 128,  88,   0,   0,   4, 
-      5,   0,  15, 128,  10,   0, 
-      0, 129,   8,   0, 228, 128, 
-      5,   0, 228, 128,   1,   0, 
-      0,   2,   8,   0,   7, 128, 
-      7,   0, 228, 128,   1,   0, 
-      0,   2,   8,   0,   8, 128, 
-      1,   0,   0, 160,   5,   0, 
-      0,   3,  11,   0,  15, 128, 
-      4,   0,   0, 128,   8,   0, 
+     88,   0,   0,   4,   3,   0, 
+     15, 128,   2,   0,   0, 161, 
+      7,   0, 228, 128,   3,   0, 
     228, 128,   5,   0,   0,   3, 
       4,   0,  15, 128,   4,   0, 
       0, 128,   0,   0, 228, 160, 
      88,   0,   0,   4,   5,   0, 
      15, 128,   2,   0,   0, 161, 
-     11,   0, 228, 128,   5,   0, 
-    228, 128,  88,   0,   0,   4, 
-      6,   0,   6, 128,  10,   0, 
-    244, 129,  11,   0,  85, 160, 
-     11,   0, 170, 160,  88,   0, 
-      0,   4,   6,   0,   6, 128, 
-     10,   0, 224, 129,   3,   0, 
-      0, 160,   6,   0, 228, 128, 
-     88,   0,   0,   4,   6,   0, 
-      6, 128,   2,   0, 208, 161, 
-      9,   0,   0, 128,   6,   0, 
+      8,   0, 228, 128,   5,   0, 
     228, 128,  88,   0,   0,   4, 
-      4,   0,  15, 128,   6,   0, 
-     85, 128,   4,   0, 228, 128, 
-      5,   0, 228, 128,   5,   0, 
-      0,   3,   5,   0,  15, 128, 
-      6,   0,   0, 128,   7,   0, 
-    228, 128,  88,   0,   0,   4, 
-      3,   0,  15, 128,  10,   0, 
-      0, 129,   7,   0, 228, 128, 
-      3,   0, 228, 128,  88,   0, 
+      7,   0,   3, 128,  10,   0, 
+    233, 129,  11,   0,  85, 160, 
+     11,   0, 170, 160,  88,   0, 
+      0,   4,   0,   0,   8, 128, 
+     10,   0,   0, 129,   3,   0, 
+      0, 160,   7,   0,   0, 128, 
+     88,   0,   0,   4,   1,   0, 
+      8, 128,   2,   0,  85, 161, 
+      9,   0,   0, 128,   7,   0, 
+     85, 128,  88,   0,   0,   4, 
+      0,   0,   8, 128,   2,   0, 
+      0, 161,   9,   0,   0, 128, 
+      0,   0, 255, 128,  88,   0, 
       0,   4,   4,   0,  15, 128, 
-     10,   0, 170, 129,   4,   0, 
+      0,   0, 255, 128,   4,   0, 
     228, 128,   5,   0, 228, 128, 
      88,   0,   0,   4,   3,   0, 
-     15, 128,   2,   0,   0, 161, 
-      8,   0, 228, 128,   3,   0, 
+     15, 128,   0,   0, 255, 128, 
+      0,   0, 228, 160,   3,   0, 
     228, 128,  88,   0,   0,   4, 
-      3,   0,  15, 128,   6,   0, 
-     85, 128,   0,   0, 228, 160, 
+      3,   0,  15, 128,   2,   0, 
+     85, 161,   3,   0, 228, 128, 
+      4,   0, 228, 128,  88,   0, 
+      0,   4,   3,   0,  15, 128, 
+      1,   0, 255, 128,  11,   0, 
+    106, 161,   3,   0, 228, 128, 
+      6,   0,   0,   2,   0,   0, 
+      8, 128,   3,   0, 255, 128, 
+      5,   0,   0,   3,   4,   0, 
+      7, 128,   0,   0, 255, 128, 
       3,   0, 228, 128,  88,   0, 
-      0,   4,   3,   0,  15, 128, 
-      2,   0,  85, 161,   3,   0, 
+      0,   4,   4,   0,   7, 128, 
+      2,   0, 255, 161,   3,   0, 
     228, 128,   4,   0, 228, 128, 
-     88,   0,   0,   4,   3,   0, 
-     15, 128,   6,   0, 170, 128, 
-     11,   0, 106, 161,   3,   0, 
-    228, 128,   6,   0,   0,   2, 
-      0,   0,   8, 128,   3,   0, 
-    255, 128,   5,   0,   0,   3, 
-      4,   0,   7, 128,   0,   0, 
-    255, 128,   3,   0, 228, 128, 
-     88,   0,   0,   4,   4,   0, 
-      7, 128,   2,   0, 255, 161, 
-      3,   0, 228, 128,   4,   0, 
-    228, 128,   2,   0,   0,   3, 
-      5,   0,   3, 128,   4,   0, 
-    233, 129,   4,   0, 228, 128, 
-     88,   0,   0,   4,   5,   0, 
-     12, 128,   5,   0,   0, 128, 
-      4,   0,  68, 128,   4,   0, 
-     20, 128,  11,   0,   0,   3, 
-      0,   0,   8, 128,   5,   0, 
-    170, 128,   4,   0, 170, 128, 
-     10,   0,   0,   3,   1,   0, 
-      8, 128,   4,   0, 170, 128, 
-      5,   0, 255, 128,   2,   0, 
-      0,   3,   6,   0,   8, 128, 
-      0,   0, 255, 128,   1,   0, 
-    255, 129,   1,   0,   0,   2, 
-      7,   0,   3, 128,   0,   0, 
-    235, 176,  66,   0,   0,   3, 
-      7,   0,  15, 128,   7,   0, 
-    228, 128,   5,   8, 228, 160, 
+      2,   0,   0,   3,   5,   0, 
+      3, 128,   4,   0, 233, 129, 
+      4,   0, 228, 128,  88,   0, 
+      0,   4,   5,   0,  12, 128, 
+      5,   0,   0, 128,   4,   0, 
+     68, 128,   4,   0,  20, 128, 
+     11,   0,   0,   3,   0,   0, 
+      8, 128,   5,   0, 170, 128, 
+      4,   0, 170, 128,  10,   0, 
+      0,   3,   1,   0,   8, 128, 
+      4,   0, 170, 128,   5,   0, 
+    255, 128,   2,   0,   0,   3, 
+      7,   0,   8, 128,   0,   0, 
+    255, 128,   1,   0, 255, 129, 
       6,   0,   0,   2,   0,   0, 
-      8, 128,   7,   0, 255, 128, 
+      8, 128,   6,   0, 255, 128, 
       5,   0,   0,   3,   8,   0, 
       7, 128,   0,   0, 255, 128, 
-      7,   0, 228, 128,   4,   0, 
+      6,   0, 228, 128,   4,   0, 
       0,   4,   5,   0,  12, 128, 
-      7,   0, 100, 128,   0,   0, 
+      6,   0, 100, 128,   0,   0, 
     255, 128,   8,   0, 132, 129, 
       5,   0,   0,   3,   9,   0, 
-      3, 128,   6,   0, 255, 128, 
+      3, 128,   7,   0, 255, 128, 
       5,   0, 238, 128,   4,   0, 
-      0,   4,  10,   0,  15, 128, 
-      7,   0, 129, 128,   0,   0, 
+      0,   4,  11,   0,  15, 128, 
+      6,   0, 129, 128,   0,   0, 
     255, 128,   8,   0,  88, 129, 
       6,   0,   0,   2,   1,   0, 
-      8, 128,  10,   0,   0, 128, 
-      5,   0,   0,   3,   6,   0, 
+      8, 128,  11,   0,   0, 128, 
+      5,   0,   0,   3,   7,   0, 
       2, 128,   1,   0, 255, 128, 
       9,   0,   0, 128,  88,   0, 
       0,   4,   1,   0,   6, 128, 
-     10,   0, 170, 128,  11,   0, 
-    170, 161,   6,   0, 220, 128, 
-      5,   0,   0,   3,  11,   0, 
-     15, 128,   6,   0, 255, 128, 
-     10,   0, 228, 128,   6,   0, 
+     11,   0, 170, 128,  11,   0, 
+    170, 161,   7,   0, 220, 128, 
+      5,   0,   0,   3,  12,   0, 
+     15, 128,   7,   0, 255, 128, 
+     11,   0, 228, 128,   6,   0, 
       0,   2,   1,   0,   8, 128, 
       5,   0, 255, 128,   5,   0, 
-      0,   3,   6,   0,   1, 128, 
-      1,   0, 255, 128,  11,   0, 
+      0,   3,   7,   0,   1, 128, 
+      1,   0, 255, 128,  12,   0, 
      85, 128,  88,   0,   0,   4, 
-      2,   0,   3, 128,  10,   0, 
+      2,   0,   3, 128,  11,   0, 
     255, 128,  11,   0, 170, 161, 
-      6,   0, 236, 128,  88,   0, 
+      7,   0, 236, 128,  88,   0, 
       0,   4,   1,   0,   7, 128, 
       5,   0, 170, 128,   1,   0, 
     228, 128,   2,   0, 228, 128, 
       6,   0,   0,   2,   1,   0, 
       8, 128,   5,   0, 170, 128, 
-      5,   0,   0,   3,   6,   0, 
+      5,   0,   0,   3,   7,   0, 
       4, 128,   1,   0, 255, 128, 
-     11,   0,   0, 128,  88,   0, 
+     12,   0,   0, 128,  88,   0, 
       0,   4,   0,   0,   6, 128, 
-     10,   0,  85, 128,  11,   0, 
-    170, 161,   6,   0, 248, 128, 
+     11,   0,  85, 128,  11,   0, 
+    170, 161,   7,   0, 248, 128, 
      88,   0,   0,   4,   0,   0, 
-      7, 128,  10,   0, 255, 128, 
+      7, 128,  11,   0, 255, 128, 
       0,   0, 228, 128,   1,   0, 
     228, 128,   1,   0,   0,   2, 
       1,   0,   2, 128,  11,   0, 
     170, 161,   1,   0,   0,   2, 
       2,   0,   2, 128,  11,   0, 
     170, 161,   1,   0,   0,   2, 
-     12,   0,   4, 128,  11,   0, 
+     10,   0,   4, 128,  11,   0, 
     170, 161,   6,   0,   0,   2, 
-      1,   0,   8, 128,  10,   0, 
+      1,   0,   8, 128,  11,   0, 
     170, 128,   5,   0,   0,   3, 
-      6,   0,   2, 128,   1,   0, 
-    255, 128,  11,   0, 255, 128, 
+      7,   0,   2, 128,   1,   0, 
+    255, 128,  12,   0, 255, 128, 
      88,   0,   0,   4,   2,   0, 
-      5, 128,  10,   0,   0, 128, 
-     11,   0, 170, 161,   6,   0, 
+      5, 128,  11,   0,   0, 128, 
+     11,   0, 170, 161,   7,   0, 
     215, 128,   6,   0,   0,   2, 
-      1,   0,   8, 128,  10,   0, 
+      1,   0,   8, 128,  11,   0, 
      85, 128,   5,   0,   0,   3, 
-      6,   0,   1, 128,   1,   0, 
+      7,   0,   1, 128,   1,   0, 
     255, 128,   9,   0,  85, 128, 
-     88,   0,   0,   4,  12,   0, 
+     88,   0,   0,   4,  10,   0, 
       3, 128,   5,   0, 170, 128, 
-     11,   0, 170, 161,   6,   0, 
+     11,   0, 170, 161,   7,   0, 
     227, 128,  88,   0,   0,   4, 
-      2,   0,   7, 128,  10,   0, 
+      2,   0,   7, 128,  11,   0, 
     255, 128,   2,   0, 228, 128, 
-     12,   0, 228, 128,   6,   0, 
+     10,   0, 228, 128,   6,   0, 
       0,   2,   1,   0,   8, 128, 
-     10,   0, 255, 128,   5,   0, 
-      0,   3,   6,   0,   4, 128, 
-      1,   0, 255, 128,  11,   0, 
+     11,   0, 255, 128,   5,   0, 
+      0,   3,   7,   0,   4, 128, 
+      1,   0, 255, 128,  12,   0, 
     170, 128,  88,   0,   0,   4, 
       1,   0,   5, 128,   5,   0, 
     255, 128,  11,   0, 170, 161, 
-      6,   0, 246, 128,  88,   0, 
+      7,   0, 246, 128,  88,   0, 
       0,   4,   1,   0,   7, 128, 
       5,   0, 170, 128,   1,   0, 
     228, 128,   2,   0, 228, 128, 
      88,   0,   0,   4,   0,   0, 
-      7, 128,  10,   0,   0, 128, 
+      7, 128,  11,   0,   0, 128, 
       0,   0, 228, 128,   1,   0, 
     228, 128,  88,   0,   0,   4, 
-      1,   0,   3, 128,  10,   0, 
+      1,   0,   3, 128,  11,   0, 
     170, 128,   8,   0, 228, 128, 
       8,   0, 225, 128,   8,   0, 
       0,   3,   4,   0,   8, 128, 
      10,   0, 228, 160,   0,   0, 
     228, 128,   8,   0,   0,   3, 
       8,   0,   8, 128,  10,   0, 
     228, 160,   8,   0, 228, 128, 
       2,   0,   0,   3,   4,   0, 
@@ -8266,178 +6925,178 @@ const BYTE BlendShader[] =
     249, 128,   1,   0, 255, 128, 
       1,   0, 170, 128,  88,   0, 
       0,   4,   0,   0,   7, 128, 
       4,   0, 255, 128,   0,   0, 
     228, 128,   2,   0, 228, 128, 
       1,   0,   0,   2,   4,   0, 
       8, 128,   2,   0, 170, 160, 
       2,   0,   0,   3,   1,   0, 
-     12, 128,   4,   0, 255, 128, 
-      8,   0, 228, 160,   5,   0, 
-      0,   3,   1,   0,  12, 128, 
-      1,   0, 228, 128,   1,   0, 
-    228, 128,   8,   0,   0,   3, 
-      2,   0,   1, 128,  10,   0, 
+      4, 128,   4,   0, 255, 128, 
+      8,   0, 170, 160,   5,   0, 
+      0,   3,   1,   0,   4, 128, 
+      1,   0, 170, 128,   1,   0, 
+    170, 128,   8,   0,   0,   3, 
+      1,   0,   8, 128,  10,   0, 
     228, 160,   4,   0, 228, 128, 
       2,   0,   0,   3,   2,   0, 
-      2, 128,   8,   0, 255, 129, 
-      2,   0,   0, 128,   2,   0, 
-      0,   3,   2,   0,   1, 128, 
-      2,   0,   0, 129,   8,   0, 
+      1, 128,   8,   0, 255, 129, 
+      1,   0, 255, 128,   2,   0, 
+      0,   3,   1,   0,   8, 128, 
+      1,   0, 255, 129,   8,   0, 
     255, 128,   2,   0,   0,   3, 
-      2,   0,  13, 128,   2,   0, 
-      0, 128,   4,   0, 148, 128, 
-      4,   0,   0,   4,   6,   0, 
-      7, 128,   7,   0, 228, 128, 
+      2,   0,  14, 128,   1,   0, 
+    255, 128,   4,   0, 144, 128, 
+      4,   0,   0,   4,   7,   0, 
+      7, 128,   6,   0, 228, 128, 
       0,   0, 255, 128,   2,   0, 
-     85, 128,   2,   0,   0,   3, 
-      6,   0,   8, 128,   6,   0, 
-     85, 129,   6,   0,   0, 128, 
+      0, 128,   2,   0,   0,   3, 
+      1,   0,   8, 128,   7,   0, 
+     85, 129,   7,   0,   0, 128, 
      88,   0,   0,   4,   5,   0, 
-     12, 128,   6,   0, 255, 128, 
-      6,   0,  20, 128,   6,   0, 
+     12, 128,   1,   0, 255, 128, 
+      7,   0,  20, 128,   7,   0, 
      68, 128,  10,   0,   0,   3, 
-      2,   0,   2, 128,   6,   0, 
+      1,   0,   8, 128,   7,   0, 
     170, 128,   5,   0, 170, 128, 
-     11,   0,   0,   3,   9,   0, 
+     11,   0,   0,   3,   2,   0, 
       1, 128,   5,   0, 255, 128, 
-      6,   0, 170, 128,   8,   0, 
-      0,   3,   6,   0,   8, 128, 
-     10,   0, 228, 160,   6,   0, 
+      7,   0, 170, 128,   8,   0, 
+      0,   3,   7,   0,   8, 128, 
+     10,   0, 228, 160,   7,   0, 
     228, 128,   2,   0,   0,   3, 
-      5,   0,   4, 128,   2,   0, 
-     85, 129,   6,   0, 255, 128, 
+      5,   0,   4, 128,   1,   0, 
+    255, 129,   7,   0, 255, 128, 
       6,   0,   0,   2,   5,   0, 
       4, 128,   5,   0, 170, 128, 
       2,   0,   0,   3,   9,   0, 
-     14, 128,   6,   0, 255, 129, 
-      6,   0, 144, 128,   5,   0, 
-      0,   3,   9,   0,  14, 128, 
-      6,   0, 255, 128,   9,   0, 
-    228, 128,   4,   0,   0,   4, 
-      9,   0,  14, 128,   9,   0, 
-    228, 128,   5,   0, 170, 128, 
-      6,   0, 255, 128,  88,   0, 
-      0,   4,   6,   0,   7, 128, 
-      2,   0,  85, 128,   6,   0, 
-    228, 128,   9,   0, 249, 128, 
-      2,   0,   0,   3,   9,   0, 
-     14, 128,   6,   0, 255, 129, 
-      6,   0, 144, 128,   2,   0, 
-      0,   3,   2,   0,   2, 128, 
-      6,   0, 255, 129,   3,   0, 
-      0, 161,   5,   0,   0,   3, 
-      9,   0,  14, 128,   2,   0, 
-     85, 128,   9,   0, 228, 128, 
-      2,   0,   0,   3,   2,   0, 
-      2, 128,   6,   0, 255, 129, 
-      9,   0,   0, 128,   2,   0, 
-      0,   3,   5,   0,   4, 128, 
-      9,   0,   0, 129,   3,   0, 
-      0, 161,   6,   0,   0,   2, 
-      5,   0,   8, 128,   2,   0, 
-     85, 128,   4,   0,   0,   4, 
-      9,   0,   7, 128,   9,   0, 
-    249, 128,   5,   0, 255, 128, 
-      6,   0, 255, 128,  88,   0, 
-      0,   4,   6,   0,   7, 128, 
-      5,   0, 170, 128,   6,   0, 
-    228, 128,   9,   0, 228, 128, 
-     88,   0,   0,   4,   6,   0, 
-      7, 128,   1,   0, 255, 129, 
-      6,   0, 228, 128,  11,   0, 
-    170, 161,   2,   0,   0,   3, 
-      1,   0,   8, 128,   2,   0, 
-    170, 129,   2,   0,   0, 128, 
-     88,   0,   0,   4,   5,   0, 
-     12, 128,   1,   0, 255, 128, 
-      2,   0,  36, 128,   2,   0, 
-    132, 128,  10,   0,   0,   3, 
-      1,   0,   8, 128,   2,   0, 
-    255, 128,   5,   0, 170, 128, 
-     11,   0,   0,   3,   6,   0, 
-      8, 128,   5,   0, 255, 128, 
-      2,   0, 255, 128,   8,   0, 
-      0,   3,   2,   0,   2, 128, 
-     10,   0, 228, 160,   2,   0, 
-    248, 128,   2,   0,   0,   3, 
-      5,   0,   4, 128,   1,   0, 
-    255, 129,   2,   0,  85, 128, 
-      6,   0,   0,   2,   5,   0, 
-      4, 128,   5,   0, 170, 128, 
-      2,   0,   0,   3,   9,   0, 
-      7, 128,   2,   0,  85, 129, 
-      2,   0, 248, 128,   5,   0, 
+      7, 128,   7,   0, 255, 129, 
+      7,   0, 228, 128,   5,   0, 
       0,   3,   9,   0,   7, 128, 
-      2,   0,  85, 128,   9,   0, 
+      7,   0, 255, 128,   9,   0, 
     228, 128,   4,   0,   0,   4, 
       9,   0,   7, 128,   9,   0, 
     228, 128,   5,   0, 170, 128, 
-      2,   0,  85, 128,  88,   0, 
-      0,   4,   2,   0,  13, 128, 
-      1,   0, 255, 128,   2,   0, 
-    228, 128,   9,   0, 148, 128, 
+      7,   0, 255, 128,  88,   0, 
+      0,   4,   7,   0,   7, 128, 
+      1,   0, 255, 128,   7,   0, 
+    228, 128,   9,   0, 228, 128, 
       2,   0,   0,   3,   9,   0, 
-      7, 128,   2,   0,  85, 129, 
-      2,   0, 248, 128,   2,   0, 
+      7, 128,   7,   0, 255, 129, 
+      7,   0, 228, 128,   2,   0, 
       0,   3,   1,   0,   8, 128, 
-      2,   0,  85, 129,   3,   0, 
+      7,   0, 255, 129,   3,   0, 
       0, 161,   5,   0,   0,   3, 
       9,   0,   7, 128,   1,   0, 
     255, 128,   9,   0, 228, 128, 
       2,   0,   0,   3,   1,   0, 
-      8, 128,   2,   0,  85, 129, 
-      6,   0, 255, 128,   2,   0, 
-      0,   3,   6,   0,   8, 128, 
-      6,   0, 255, 129,   3,   0, 
+      8, 128,   2,   0,   0, 128, 
+      7,   0, 255, 129,   2,   0, 
+      0,   3,   9,   0,   8, 128, 
+      2,   0,   0, 129,   3,   0, 
       0, 161,   6,   0,   0,   2, 
       1,   0,   8, 128,   1,   0, 
     255, 128,   4,   0,   0,   4, 
       9,   0,   7, 128,   9,   0, 
     228, 128,   1,   0, 255, 128, 
-      2,   0,  85, 128,  88,   0, 
-      0,   4,   2,   0,   7, 128, 
-      6,   0, 255, 128,   2,   0, 
-    248, 128,   9,   0, 228, 128, 
-     88,   0,   0,   4,   2,   0, 
+      7,   0, 255, 128,  88,   0, 
+      0,   4,   7,   0,   7, 128, 
+      9,   0, 255, 128,   7,   0, 
+    228, 128,   9,   0, 228, 128, 
+     88,   0,   0,   4,   7,   0, 
       7, 128,   1,   0, 170, 129, 
-      2,   0, 228, 128,   6,   0, 
-    228, 128,   2,   0,   0,   3, 
-      6,   0,  15, 128,   4,   0, 
-    255, 128,   9,   0, 228, 160, 
-      5,   0,   0,   3,   6,   0, 
-     15, 128,   6,   0, 228, 128, 
-      6,   0, 228, 128,  88,   0, 
+      7,   0, 228, 128,  11,   0, 
+    170, 161,   2,   0,   0,   3, 
+      7,   0,   8, 128,   2,   0, 
+    170, 129,   2,   0,  85, 128, 
+     88,   0,   0,   4,   1,   0, 
+     12, 128,   7,   0, 255, 128, 
+      2,   0, 100, 128,   2,   0, 
+    148, 128,  10,   0,   0,   3, 
+      7,   0,   8, 128,   2,   0, 
+    255, 128,   1,   0, 170, 128, 
+     11,   0,   0,   3,   5,   0, 
+      4, 128,   1,   0, 255, 128, 
+      2,   0, 255, 128,   8,   0, 
+      0,   3,   5,   0,   8, 128, 
+     10,   0, 228, 160,   2,   0, 
+    249, 128,   2,   0,   0,   3, 
+      1,   0,   4, 128,   7,   0, 
+    255, 129,   5,   0, 255, 128, 
+      6,   0,   0,   2,   1,   0, 
+      4, 128,   1,   0, 170, 128, 
+      2,   0,   0,   3,   9,   0, 
+      7, 128,   2,   0, 249, 128, 
+      5,   0, 255, 129,   5,   0, 
+      0,   3,   9,   0,   7, 128, 
+      5,   0, 255, 128,   9,   0, 
+    228, 128,   4,   0,   0,   4, 
+      9,   0,   7, 128,   9,   0, 
+    228, 128,   1,   0, 170, 128, 
+      5,   0, 255, 128,  88,   0, 
+      0,   4,   2,   0,   7, 128, 
+      7,   0, 255, 128,   2,   0, 
+    249, 128,   9,   0, 228, 128, 
+      2,   0,   0,   3,   9,   0, 
+      7, 128,   5,   0, 255, 129, 
+      2,   0, 228, 128,   2,   0, 
+      0,   3,   2,   0,   8, 128, 
+      5,   0, 255, 129,   3,   0, 
+      0, 161,   5,   0,   0,   3, 
+      9,   0,   7, 128,   2,   0, 
+    255, 128,   9,   0, 228, 128, 
+      2,   0,   0,   3,   2,   0, 
+      8, 128,   5,   0, 255, 129, 
+      5,   0, 170, 128,   2,   0, 
+      0,   3,   7,   0,   8, 128, 
+      5,   0, 170, 129,   3,   0, 
+      0, 161,   6,   0,   0,   2, 
+      2,   0,   8, 128,   2,   0, 
+    255, 128,   4,   0,   0,   4, 
+      9,   0,   7, 128,   9,   0, 
+    228, 128,   2,   0, 255, 128, 
+      5,   0, 255, 128,  88,   0, 
+      0,   4,   2,   0,   7, 128, 
+      7,   0, 255, 128,   2,   0, 
+    228, 128,   9,   0, 228, 128, 
+      2,   0,   0,   3,   9,   0, 
+     15, 128,   4,   0, 255, 128, 
+      9,   0, 228, 160,   5,   0, 
+      0,   3,   9,   0,  15, 128, 
+      9,   0, 228, 128,   9,   0, 
+    228, 128,  88,   0,   0,   4, 
+      2,   0,   7, 128,   9,   0, 
+    255, 129,   2,   0, 228, 128, 
+      7,   0, 228, 128,  88,   0, 
       0,   4,   0,   0,   7, 128, 
-      6,   0, 255, 129,   0,   0, 
+      9,   0, 170, 129,   0,   0, 
     228, 128,   2,   0, 228, 128, 
       2,   0,   0,   3,   2,   0, 
      15, 128,   4,   0,  96, 129, 
       4,   0, 137, 128,   1,   0, 
-      0,   2,   9,   0,   2, 128, 
+      0,   2,   7,   0,   2, 128, 
      11,   0, 170, 161,   1,   0, 
       0,   2,  10,   0,   2, 128, 
      11,   0, 170, 161,   1,   0, 
       0,   2,  11,   0,   4, 128, 
      11,   0, 170, 161,   6,   0, 
-      0,   2,   6,   0,   8, 128, 
+      0,   2,   7,   0,   8, 128, 
       2,   0, 170, 128,  11,   0, 
-      0,   3,   9,   0,   8, 128, 
+      0,   3,  11,   0,   8, 128, 
       1,   0,   0, 128,   8,   0, 
     170, 128,  10,   0,   0,   3, 
-     10,   0,   8, 128,   8,   0, 
+      5,   0,   4, 128,   8,   0, 
     170, 128,   1,   0,  85, 128, 
       2,   0,   0,   3,   1,   0, 
-      8, 128,   9,   0, 255, 128, 
-     10,   0, 255, 129,   5,   0, 
+      8, 128,   5,   0, 170, 129, 
+     11,   0, 255, 128,   5,   0, 
       0,   3,   5,   0,  12, 128, 
       1,   0, 255, 128,   5,   0, 
      68, 128,   5,   0,   0,   3, 
-      1,   0,   1, 128,   6,   0, 
+      1,   0,   1, 128,   7,   0, 
     255, 128,   5,   0, 255, 128, 
      88,   0,   0,   4,  11,   0, 
       3, 128,   2,   0,  85, 128, 
      11,   0, 170, 161,   1,   0, 
     227, 128,   6,   0,   0,   2, 
       5,   0,   8, 128,   5,   0, 
       0, 128,   5,   0,   0,   3, 
      12,   0,  15, 128,   1,   0, 
@@ -8451,41 +7110,41 @@ const BYTE BlendShader[] =
      88,   0,   0,   4,  10,   0, 
       7, 128,   2,   0, 255, 128, 
      10,   0, 228, 128,  11,   0, 
     228, 128,   6,   0,   0,   2, 
       5,   0,   8, 128,   2,   0, 
     255, 128,   5,   0,   0,   3, 
       1,   0,   4, 128,   5,   0, 
     255, 128,   5,   0, 170, 128, 
-     88,   0,   0,   4,   9,   0, 
+     88,   0,   0,   4,   7,   0, 
       5, 128,   5,   0,  85, 128, 
      11,   0, 170, 161,   1,   0, 
     246, 128,  88,   0,   0,   4, 
-      9,   0,   7, 128,   2,   0, 
-     85, 128,   9,   0, 228, 128, 
+      7,   0,   7, 128,   2,   0, 
+     85, 128,   7,   0, 228, 128, 
      10,   0, 228, 128,   1,   0, 
       0,   2,  10,   0,   1, 128, 
      11,   0, 170, 161,   1,   0, 
       0,   2,  11,   0,   1, 128, 
      11,   0, 170, 161,   1,   0, 
       0,   2,  13,   0,   4, 128, 
      11,   0, 170, 161,   6,   0, 
-      0,   2,   6,   0,   8, 128, 
+      0,   2,   7,   0,   8, 128, 
       2,   0,   0, 128,   5,   0, 
       0,   3,   1,   0,   2, 128, 
-      6,   0, 255, 128,  12,   0, 
+      7,   0, 255, 128,  12,   0, 
      85, 128,  88,   0,   0,   4, 
      11,   0,   6, 128,   5,   0, 
       0, 128,  11,   0, 170, 161, 
       1,   0, 220, 128,   6,   0, 
-      0,   2,   6,   0,   8, 128, 
+      0,   2,   7,   0,   8, 128, 
       5,   0,  85, 128,   5,   0, 
       0,   3,   1,   0,   1, 128, 
-      6,   0, 255, 128,  12,   0, 
+      7,   0, 255, 128,  12,   0, 
     170, 128,  88,   0,   0,   4, 
      13,   0,   3, 128,   2,   0, 
     255, 128,  11,   0, 170, 161, 
       1,   0, 236, 128,  88,   0, 
       0,   4,   5,   0,   7, 128, 
       2,   0,  85, 128,  11,   0, 
     228, 128,  13,   0, 228, 128, 
       6,   0,   0,   2,   5,   0, 
@@ -8497,412 +7156,410 @@ const BYTE BlendShader[] =
       2,   0, 170, 128,  11,   0, 
     170, 161,   1,   0, 248, 128, 
      88,   0,   0,   4,   1,   0, 
       7, 128,   2,   0, 255, 128, 
      10,   0, 228, 128,   5,   0, 
     228, 128,  88,   0,   0,   4, 
       1,   0,   7, 128,   2,   0, 
       0, 128,   1,   0, 228, 128, 
-      9,   0, 228, 128,   8,   0, 
+      7,   0, 228, 128,   8,   0, 
       0,   3,   1,   0,   8, 128, 
      10,   0, 228, 160,   1,   0, 
     228, 128,   2,   0,   0,   3, 
       1,   0,   8, 128,   1,   0, 
     255, 129,   8,   0, 255, 128, 
       2,   0,   0,   3,   1,   0, 
       7, 128,   1,   0, 255, 128, 
       1,   0, 228, 128,   2,   0, 
       0,   3,   1,   0,   8, 128, 
       1,   0,  85, 129,   1,   0, 
       0, 128,  88,   0,   0,   4, 
       2,   0,   3, 128,   1,   0, 
     255, 128,   1,   0, 225, 128, 
       1,   0, 228, 128,  10,   0, 
-      0,   3,   6,   0,   8, 128, 
+      0,   3,   8,   0,   8, 128, 
       1,   0, 170, 128,   2,   0, 
       0, 128,  11,   0,   0,   3, 
-      8,   0,   8, 128,   2,   0, 
+      5,   0,   1, 128,   2,   0, 
      85, 128,   1,   0, 170, 128, 
       8,   0,   0,   3,   1,   0, 
       8, 128,  10,   0, 228, 160, 
       1,   0, 228, 128,   2,   0, 
       0,   3,   2,   0,   1, 128, 
-      6,   0, 255, 129,   1,   0, 
+      8,   0, 255, 129,   1,   0, 
     255, 128,   6,   0,   0,   2, 
       2,   0,   1, 128,   2,   0, 
       0, 128,   2,   0,   0,   3, 
       2,   0,  14, 128,   1,   0, 
     255, 129,   1,   0, 144, 128, 
       5,   0,   0,   3,   2,   0, 
      14, 128,   1,   0, 255, 128, 
       2,   0, 228, 128,   4,   0, 
       0,   4,   2,   0,   7, 128, 
       2,   0, 249, 128,   2,   0, 
       0, 128,   1,   0, 255, 128, 
      88,   0,   0,   4,   1,   0, 
-      7, 128,   6,   0, 255, 128, 
+      7, 128,   8,   0, 255, 128, 
       1,   0, 228, 128,   2,   0, 
     228, 128,   2,   0,   0,   3, 
       2,   0,   7, 128,   1,   0, 
     255, 129,   1,   0, 228, 128, 
       2,   0,   0,   3,   2,   0, 
       8, 128,   1,   0, 255, 129, 
       3,   0,   0, 161,   5,   0, 
       0,   3,   2,   0,   7, 128, 
       2,   0, 255, 128,   2,   0, 
     228, 128,   2,   0,   0,   3, 
       2,   0,   8, 128,   1,   0, 
-    255, 129,   8,   0, 255, 128, 
-      2,   0,   0,   3,   6,   0, 
-      8, 128,   8,   0, 255, 129, 
+    255, 129,   5,   0,   0, 128, 
+      2,   0,   0,   3,   8,   0, 
+      8, 128,   5,   0,   0, 129, 
       3,   0,   0, 161,   6,   0, 
       0,   2,   2,   0,   8, 128, 
       2,   0, 255, 128,   4,   0, 
       0,   4,   2,   0,   7, 128, 
       2,   0, 228, 128,   2,   0, 
     255, 128,   1,   0, 255, 128, 
      88,   0,   0,   4,   1,   0, 
-      7, 128,   6,   0, 255, 128, 
+      7, 128,   8,   0, 255, 128, 
       1,   0, 228, 128,   2,   0, 
     228, 128,  88,   0,   0,   4, 
-      0,   0,   7, 128,   6,   0, 
-    170, 129,   1,   0, 228, 128, 
+      0,   0,   7, 128,   9,   0, 
+     85, 129,   1,   0, 228, 128, 
       0,   0, 228, 128,   4,   0, 
       0,   4,   1,   0,   7, 128, 
-      7,   0, 228, 128,   0,   0, 
+      6,   0, 228, 128,   0,   0, 
     255, 128,   4,   0, 228, 128, 
       5,   0,   0,   3,   2,   0, 
       7, 128,   4,   0, 228, 128, 
       8,   0, 228, 128,   4,   0, 
       0,   4,   5,   0,   7, 128, 
       2,   0, 228, 128,   3,   0, 
      85, 160,   1,   0, 228, 128, 
       4,   0,   0,   4,   1,   0, 
       7, 128,   8,   0, 228, 128, 
       4,   0, 228, 129,   1,   0, 
     228, 128,  88,   0,   0,   4, 
-      0,   0,   7, 128,   6,   0, 
-     85, 129,   5,   0, 228, 128, 
+      0,   0,   7, 128,   9,   0, 
+      0, 129,   5,   0, 228, 128, 
       0,   0, 228, 128,   4,   0, 
       0,   4,   5,   0,   7, 128, 
-      7,   0, 228, 128,   0,   0, 
+      6,   0, 228, 128,   0,   0, 
     255, 128,   4,   0, 228, 129, 
      35,   0,   0,   2,   5,   0, 
       7, 128,   5,   0, 228, 128, 
-     88,   0,   0,   4,   0,   0, 
-      7, 128,   6,   0,   0, 129, 
-      5,   0, 228, 128,   0,   0, 
-    228, 128,   2,   0,   0,   3, 
-      5,   0,   3, 128,   4,   0, 
-    233, 129,  11,   0, 255, 161, 
-      4,   0,   0,   4,   6,   0, 
-      7, 128,   4,   0, 228, 128, 
-      7,   0, 170, 160,   7,   0, 
-    255, 160,   4,   0,   0,   4, 
-      1,   0,   8, 128,   7,   0, 
-    170, 128,   0,   0, 255, 129, 
-      7,   0,  85, 160,   4,   0, 
-      0,   4,   9,   0,   7, 128, 
-      8,   0, 228, 128,   8,   0, 
-      0, 160,   8,   0,  85, 160, 
-      4,   0,   0,   4,   9,   0, 
-      7, 128,   9,   0, 228, 128, 
-      8,   0, 228, 128,   5,   0, 
-    255, 161,   5,   0,   0,   3, 
-      9,   0,   7, 128,   8,   0, 
-    228, 128,   9,   0, 228, 128, 
-      7,   0,   0,   2,   2,   0, 
-      8, 128,   8,   0, 170, 128, 
-      6,   0,   0,   2,   2,   0, 
-      8, 128,   2,   0, 255, 128, 
-     88,   0,   0,   4,   1,   0, 
-      8, 128,   1,   0, 255, 128, 
-      9,   0, 170, 128,   2,   0, 
-    255, 128,   4,   0,   0,   4, 
-      1,   0,   8, 128,   7,   0, 
-    170, 128,   0,   0, 255, 129, 
+      2,   0,   0,   3,   7,   0, 
+     15, 128,   4,   0, 255, 128, 
+      6,   0, 228, 160,   5,   0, 
+      0,   3,   7,   0,  15, 128, 
+      7,   0, 228, 128,   7,   0, 
+    228, 128,  88,   0,   0,   4, 
+      0,   0,   7, 128,   7,   0, 
+    255, 129,   5,   0, 228, 128, 
+      0,   0, 228, 128,   2,   0, 
+      0,   3,   5,   0,   3, 128, 
+      4,   0, 233, 129,  11,   0, 
+    255, 161,   4,   0,   0,   4, 
+      9,   0,   7, 128,   4,   0, 
+    228, 128,   7,   0, 170, 160, 
+      7,   0, 255, 160,   4,   0, 
+      0,   4,   1,   0,   8, 128, 
+      6,   0, 170, 128,   0,   0, 
+    255, 129,   7,   0,  85, 160, 
+      4,   0,   0,   4,  10,   0, 
+      7, 128,   8,   0, 228, 128, 
+      8,   0,   0, 160,   8,   0, 
+     85, 160,   4,   0,   0,   4, 
+     10,   0,   7, 128,  10,   0, 
+    228, 128,   8,   0, 228, 128, 
+      5,   0, 170, 161,   5,   0, 
+      0,   3,  10,   0,   7, 128, 
+      8,   0, 228, 128,  10,   0, 
+    228, 128,   7,   0,   0,   2, 
+      2,   0,   8, 128,   8,   0, 
+    170, 128,   6,   0,   0,   2, 
+      2,   0,   8, 128,   2,   0, 
+    255, 128,  88,   0,   0,   4, 
+      1,   0,   8, 128,   1,   0, 
+    255, 128,  10,   0, 170, 128, 
+      2,   0, 255, 128,   4,   0, 
+      0,   4,   1,   0,   8, 128, 
+      6,   0, 170, 128,   0,   0, 
+    255, 129,   1,   0, 255, 128, 
+      4,   0,   0,   4,   1,   0, 
+      8, 128,   9,   0, 170, 128, 
+      1,   0, 255, 128,   8,   0, 
+    170, 128,   4,   0,   0,   4, 
+     11,   0,   7, 128,   4,   0, 
+    228, 128,   3,   0,  85, 160, 
+      3,   0,   0, 161,   5,   0, 
+      0,   3,  11,   0,   7, 128, 
+      8,   0, 228, 128,  11,   0, 
+    228, 128,   4,   0,   0,   4, 
+     12,   0,  15, 128,   6,   0, 
+     73, 128,   0,   0, 255, 129, 
+      7,   0,  80, 160,   4,   0, 
+      0,   4,   5,   0,  12, 128, 
+     11,   0, 148, 128,  12,   0, 
+     68, 129,   8,   0, 148, 128, 
+     88,   0,   0,   4,  13,   0, 
+      4, 128,   5,   0,  85, 128, 
+      5,   0, 255, 128,   1,   0, 
+    255, 128,   7,   0,   0,   2, 
+      1,   0,   8, 128,   8,   0, 
+     85, 128,   6,   0,   0,   2, 
+      1,   0,   8, 128,   1,   0, 
+    255, 128,  88,   0,   0,   4, 
+      1,   0,   8, 128,  12,   0, 
+    255, 128,  10,   0,  85, 128, 
       1,   0, 255, 128,   4,   0, 
       0,   4,   1,   0,   8, 128, 
-      6,   0, 170, 128,   1,   0, 
-    255, 128,   8,   0, 170, 128, 
-      4,   0,   0,   4,  10,   0, 
-      7, 128,   4,   0, 228, 128, 
-      3,   0,  85, 160,   3,   0, 
-      0, 161,   5,   0,   0,   3, 
-     10,   0,   7, 128,   8,   0, 
-    228, 128,  10,   0, 228, 128, 
-      4,   0,   0,   4,  11,   0, 
-     15, 128,   7,   0,  73, 128, 
-      0,   0, 255, 129,   7,   0, 
-     80, 160,   4,   0,   0,   4, 
-      5,   0,  12, 128,  10,   0, 
-    148, 128,  11,   0,  68, 129, 
-      8,   0, 148, 128,  88,   0, 
-      0,   4,  12,   0,   4, 128, 
-      5,   0,  85, 128,   5,   0, 
-    255, 128,   1,   0, 255, 128, 
-      7,   0,   0,   2,   1,   0, 
-      8, 128,   8,   0,  85, 128, 
-      6,   0,   0,   2,   1,   0, 
-      8, 128,   1,   0, 255, 128, 
-     88,   0,   0,   4,   1,   0, 
-      8, 128,  11,   0, 255, 128, 
-      9,   0,  85, 128,   1,   0, 
-    255, 128,   4,   0,   0,   4, 
-      1,   0,   8, 128,   7,   0, 
-     85, 128,   0,   0, 255, 129, 
-      1,   0, 2