Changeset 462 for trunk


Ignore:
Timestamp:
08/25/15 18:47:28 (10 years ago)
Author:
epyon
Message:
  • camera/device/uniform - modelview_inv added
  • image_data/context/texture/device/enum - DEPTH format support added
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/interface/camera.hh

    r454 r462  
    7979                mat4 get_mvp()        const { return m_camera.get_projection() * get_modelview(); }
    8080
    81                 mat4 get_view_inv()   const { return math::inverse( get_view() ); }
    82                 mat4 get_model_inv()  const { return math::inverse( get_model() ); }
    83                 mat3 get_normal()     const { return math::transpose( math::inverse( mat3( get_modelview() ) ) ); }
     81                mat4 get_view_inv()      const { return math::inverse( get_view() ); }
     82                mat4 get_model_inv()     const { return math::inverse( get_model() ); }
     83                mat4 get_modelview_inv() const { return math::inverse( get_modelview() ); }
     84                mat3 get_normal()        const { return math::transpose( math::inverse( mat3( get_modelview() ) ) ); }
    8485        protected:
    8586                mat4   m_model;
  • trunk/nv/interface/device.hh

    r461 r462  
    271271                {
    272272                        engine_uniform_factory_map& factory_map = get_uniform_factory();
    273                         factory_map[ "nv_m_view" ]       = new engine_uniform_factory< engine_uniform_m_view >();
    274                         factory_map[ "nv_m_view_inv" ]   = new engine_uniform_factory< engine_uniform_m_view_inv >();
    275                         factory_map[ "nv_m_model" ]      = new engine_uniform_factory< engine_uniform_m_model >();
    276                         factory_map[ "nv_m_model_inv" ]  = new engine_uniform_factory< engine_uniform_m_model_inv >();
    277                         factory_map[ "nv_m_modelview" ]  = new engine_uniform_factory< engine_uniform_m_modelview >();
    278                         factory_map[ "nv_m_projection" ] = new engine_uniform_factory< engine_uniform_m_projection >();
    279                         factory_map[ "nv_m_normal" ]     = new engine_uniform_factory< engine_uniform_m_normal >();
    280                         factory_map[ "nv_m_mvp" ]        = new engine_uniform_factory< engine_uniform_m_mvp >();
     273                        factory_map[ "nv_m_view" ]          = new engine_uniform_factory< engine_uniform_m_view >();
     274                        factory_map[ "nv_m_view_inv" ]      = new engine_uniform_factory< engine_uniform_m_view_inv >();
     275                        factory_map[ "nv_m_model" ]         = new engine_uniform_factory< engine_uniform_m_model >();
     276                        factory_map[ "nv_m_model_inv" ]     = new engine_uniform_factory< engine_uniform_m_model_inv >();
     277                        factory_map[ "nv_m_modelview" ]     = new engine_uniform_factory< engine_uniform_m_modelview >();
     278                        factory_map[ "nv_m_modelview_inv" ] = new engine_uniform_factory< engine_uniform_m_modelview_inv >();
     279                        factory_map[ "nv_m_projection" ]    = new engine_uniform_factory< engine_uniform_m_projection >();
     280                        factory_map[ "nv_m_normal" ]        = new engine_uniform_factory< engine_uniform_m_normal >();
     281                        factory_map[ "nv_m_mvp" ]           = new engine_uniform_factory< engine_uniform_m_mvp >();
    281282                        factory_map[ "nv_v_camera_position" ]  = new engine_uniform_factory< engine_uniform_v_camera_position >();
    282283                        factory_map[ "nv_v_camera_direction" ] = new engine_uniform_factory< engine_uniform_v_camera_direction >();
  • trunk/nv/interface/image_data.hh

    r461 r462  
    3131                BGRA,
    3232                RED,
     33                DEPTH16,
     34                DEPTH24,
     35                DEPTH32,
    3336        };
    3437       
  • trunk/nv/interface/uniform.hh

    r440 r462  
    192192        };
    193193
     194        class engine_uniform_m_modelview_inv : public engine_uniform< mat4 >
     195        {
     196        public:
     197                engine_uniform_m_modelview_inv( uniform_base* u ) : engine_uniform( u ) {}
     198                virtual void set( const context*, const scene_state* s ) { m_uniform->set_value( s->get_modelview() ); }
     199        };
     200
    194201        class engine_uniform_m_projection : public engine_uniform< mat4 >
    195202        {
  • trunk/src/gl/gl_context.cc

    r406 r462  
    121121                glBindFramebuffer( GL_FRAMEBUFFER, info->glid );
    122122                unsigned gl_type = texture_type_to_enum( tinfo->type );
    123 
    124123                if ( tinfo )
    125124                {
     
    141140        {
    142141                glBindFramebuffer( GL_FRAMEBUFFER, info->glid );
    143                 if ( info->depth_rb_glid ) glDeleteRenderbuffers( 1, &(info->depth_rb_glid) );
     142                if ( info->depth_rb_glid )
     143                        glDeleteRenderbuffers( 1, &(info->depth_rb_glid) );
    144144                glGenRenderbuffers( 1, &(info->depth_rb_glid) );
    145145                glBindRenderbuffer( GL_RENDERBUFFER, info->depth_rb_glid );
     
    165165bool nv::gl_context::check( framebuffer_slot ft )
    166166{
     167        glDrawBuffer( 0 );
     168        glReadBuffer( 0 );
    167169        if ( is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_OBJECT ) && is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_BLIT ) )
    168170        {
     
    185187                NV_LOG_ERROR( "gl_context::check : Framebuffer extensions not loaded!" );
    186188        }
     189        glDrawBuffer( GL_BACK );
     190        glReadBuffer( GL_BACK );
    187191        return false;
    188192}
     
    592596                if ( m_render_state.culling.face != cull.face )
    593597                {
    594                         glCullFace( culling_face_type_to_enum(cull.face) );
     598                        glCullFace( culling_face_type_to_enum( cull.face ) );
    595599                        m_render_state.culling.face = cull.face;
    596600                }
    597 
    598                 if ( m_render_state.culling.order != cull.order )
    599                 {
    600                         glFrontFace( culling_order_type_to_enum( cull.order ) );
    601                         m_render_state.culling.order = cull.order;
    602                 }
     601        }
     602
     603        if ( m_render_state.culling.order != cull.order )
     604        {
     605                glFrontFace( culling_order_type_to_enum( cull.order ) );
     606                m_render_state.culling.order = cull.order;
    603607        }
    604608}
     
    688692        load_gl_extensions( GL_EXT_FRAMEBUFFER_BLIT | GL_EXT_FRAMEBUFFER_OBJECT );
    689693        force_apply_render_state( m_render_state );
     694
    690695}
    691696
  • trunk/src/gl/gl_enum.cc

    r461 r462  
    185185        case BGRA    : return GL_BGRA;
    186186        case RED     : return GL_RED;
     187        case DEPTH16 : return GL_DEPTH_COMPONENT;
     188        case DEPTH24 : return GL_DEPTH_COMPONENT;
     189        case DEPTH32 : return GL_DEPTH_COMPONENT;
    187190        NV_RETURN_COVERED_DEFAULT( 0 );
    188191        }
     
    202205        case BGRA    : return GL_RGBA8;
    203206        case RED     : return 0x8040; // GL_LUMINANCE8; // TODO: change to GL_R8!
    204 
     207        case DEPTH16 : return GL_DEPTH_COMPONENT16;
     208        case DEPTH24 : return GL_DEPTH_COMPONENT24;
     209        case DEPTH32:  return GL_DEPTH_COMPONENT32;
    205210        NV_RETURN_COVERED_DEFAULT( 0 );
    206211        }
Note: See TracChangeset for help on using the changeset viewer.