code: func (txt *Text) DrawColorMask(t pixel.Target, matrix pixel.Matrix, mask color.Color) {
  	if matrix != txt.mat {
  		txt.mat = matrix
  		txt.dirty = true
  	}
  	if mask == nil {
  		mask = pixel.Alpha(1)
  	}
  	rgba := pixel.ToRGBA(mask)
  	if rgba != txt.col {
  		txt.col = rgba
  		txt.dirty = true
  	}
  
  	if txt.dirty {
  		txt.trans.SetLen(txt.tris.Len())
  		txt.trans.Update(&txt.tris)
  
  		for i := range txt.trans {
  			txt.trans[i].Position = txt.mat.Project(txt.trans[i].Position)
  			txt.trans[i].Color = txt.trans[i].Color.Mul(txt.col)
  		}
  
  		txt.transD.Dirty()
  		txt.dirty = false
  	}
  
  	txt.transD.Draw(t)
  }
docs: // DrawColorMask draws all text written to the Text to the provided Target. The text is transformed
  // by the provided Matrix and masked by the provided color mask.
  //
  // If there's a lot of text written to the Text, changing a matrix or a color mask often might hurt
  // performance. Consider using your Target's SetMatrix or SetColorMask methods if available.