changed render_textures to that now they derive from render_target, which provides the interface that device uses to apply them. Also adds viewports
stuff got better