anchor.diff:              | _ -> Log.debug "Cannot render text with a non-font asset."
           | _ -> Log.info ("TextDescriptor failed due to unloadable assets for '" + scstring font + "'.")
   
  -    static member private renderTextDescriptor viewAbsolute viewRelative eyeCenter eyeSize (text : TextDescriptor) renderer =
  +    static member private renderTextDescriptor (viewAbsolute : Matrix3x3 inref, viewRelative : Matrix3x3 inref, eyeCenter, eyeSize, text : TextDescriptor, renderer) =
           SdlRenderer.renderText
  -            viewAbsolute viewRelative eyeCenter eyeSize
  -            text.Transform text.Absolute text.Text text.Font text.Color text.Justification
  -            renderer
  +            (&viewAbsolute, &viewRelative, eyeCenter, eyeSize,
  +             &text.Transform, text.Absolute, text.Text, text.Font, &text.Color, text.Justification,
  +             renderer)
   
       /// Render particles.
       static member renderParticles
  -        (viewAbsolute : Matrix3x3)
  -        (viewRelative : Matrix3x3)
  -        (_ : Vector2)
  -        (eyeSize : Vector2)
  -        (_ : single)
  -        (_ : single)
  -        (absolute : bool)
  -        (blend : Blend)
  -        (image : Image AssetTag)
  -        (particles : ParticleDescriptor array)
  -        renderer =
  +        (viewAbsolute : Matrix3x3 inref,
  +         viewRelative : Matrix3x3 inref,
  +         _ : Vector2,
  +         eyeSize : Vector2,
  +         _ : single,
  +         _ : single,
  +         absolute : bool,
  +         blend : Blend,
  +         image : Image AssetTag,
  +         particles : ParticleDescriptor array,
  +         renderer) =
           let view = if absolute then viewAbsolute else viewRelative
           let positionOffset = -(v2Zero * view)
           let blend = Blend.toSdlBlendMode blend
  
positive.code:             | _ -> Log.trace "Cannot render particle with a non-texture asset."
          | _ -> Log.info ("RenderDescriptors failed to render due to unloadable assets for '" + scstring image + "'.")
  
      static member private renderParticlesDescriptor viewAbsolute viewRelative eyeCenter eyeSize (particles : ParticlesDescriptor) renderer =
          SdlRenderer.renderParticles
              viewAbsolute viewRelative eyeCenter eyeSize
              particles.Elevation particles.PositionY particles.Absolute particles.Blend particles.Image particles.Particles
              renderer
  
      static member private renderDescriptor
          (viewAbsolute : Matrix3x3)
          (viewRelative : Matrix3x3)
          (eyeCenter : Vector2)
          (eyeSize : Vector2)
          descriptor
          renderer =
          match descriptor with
          | SpriteDescriptor sprite -> SdlRenderer.renderSpriteDescriptor viewAbsolute viewRelative eyeCenter eyeSize sprite renderer
          | SpritesDescriptor sprites -> SdlRenderer.renderSpriteDescriptors viewAbsolute viewRelative eyeCenter eyeSize sprites renderer
          | TileLayerDescriptor descriptor -> SdlRenderer.renderTileLayerDescriptor viewAbsolute viewRelative eyeCenter eyeSize descriptor renderer
          | TextDescriptor descriptor -> SdlRenderer.renderTextDescriptor viewAbsolute viewRelative eyeCenter eyeSize descriptor renderer
          | ParticlesDescriptor descriptor -> SdlRenderer.renderParticlesDescriptor viewAbsolute viewRelative eyeCenter eyeSize descriptor renderer
          | RenderCallback callback -> callback viewAbsolute viewRelative eyeCenter eyeSize renderer
  
      static member private renderLayeredMessages eyeCenter eyeSize (messages : RenderLayeredMessage List) renderer =
  
negative.code:             | _ -> Log.trace "Cannot render sprite with a non-texture asset."
          | _ -> Log.info ("SpriteDescriptor failed to render due to unloadable assets for '" + scstring image + "'.")
  
      static member private renderSpriteDescriptor (viewAbsolute : Matrix3x3 inref, viewRelative : Matrix3x3 inref, eyeCenter, eyeSize, sprite : SpriteDescriptor, renderer) =
          SdlRenderer.renderSprite
              (&viewAbsolute, &viewRelative, eyeCenter, eyeSize,
               &sprite.Transform, sprite.Absolute, sprite.Offset, sprite.InsetOpt, sprite.Image, &sprite.Color, sprite.Blend, &sprite.Glow, sprite.Flip,
               renderer)
  
      static member private renderSpriteDescriptors (viewAbsolute : Matrix3x3 inref, viewRelative : Matrix3x3 inref, eyeCenter, eyeSize, sprites, renderer) =
          for sprite in sprites do
              SdlRenderer.renderSpriteDescriptor (&viewAbsolute, &viewRelative, eyeCenter, eyeSize, sprite, renderer)
  
      /// Render tile layer.
      static member renderTileLayer
          (viewAbsolute : Matrix3x3 inref,
           viewRelative : Matrix3x3 inref,
           _ : Vector2,
           eyeSize : Vector2,
           transform : Transform inref,
           absolute : bool,
           color : Color inref,
           glow : Color inref,
           mapSize : Vector2i,
           tiles : TmxLayerTile array,
           tileSourceSize : Vector2i,
           tileSize : Vector2,
           tileAssets : (TmxTileset * Image AssetTag) array,
           renderer) =
          let view = if absolute then viewAbsolute else viewRelative
          let positionView = transform.Position * view
          let sizeView = transform.Size * view.ExtractScaleMatrix ()
  