RTShader System

Hoy he dedicado un rato a estudiar el nuevo sistema de Ogre para generación de shaders en tiempo real. Para decirlo de una forma rápida, ofrece una especie de plantillas para generar materiales basados en shaders durante la ejecución. Incluye una biblioteca de shaders comunes, como mapeo normal, que son los que justo  ahora estoy tratando de utilizar y otros muy curiosos para emular la Fixed Function Pipeline en renderers que no la soportan como DirectX 10/11 y OpenGL ES 2.0. Esta biblioteca se puede extender escribiendo tus propias extensiones.
La idea es sacrificar la personalización/optimización al detalle del shader a cambio de lograr facilidad y rapidez de desarrollo, lo cual no es un mal negocio si tienes docenas de materiales distintos y muy pocos desarrolladores expertos en lenguajes de shaders. A primera vista es fácil de utilizar y definir un material es algo tan sencillo como esto:

material ChessBody
    {
       technique
       {
          pass
          {
             ambient 0.55 0.55 0.55 1
             diffuse 0.55 0.55 0.55 1
             specular 0.135 0.135 0.135 31 0

             texture_unit
             {
                texture SmallChess.jpg
             }
             rtshader_system
             {
                lighting_stage normal_map SmallChessNor.jpg tangent_space 0
             }
          }
       }
    }


No obstante, me queda algún detalle por pulir, porque no veo que funcione.

Comentarios