Es igual que como hacía Klein con las sombras. Sería algo como (tampoco le he dado muchas vueltas así que no creo que funcione, pero @NeoGeo te puede servir de referencia):
class CustomSprite
def initialize(image,x,y,z,opacity,viewport=nil)
@sprite=Sprite.new(viewport)...