Changeset 321 for trunk/tests


Ignore:
Timestamp:
08/25/14 02:43:30 (11 years ago)
Author:
epyon
Message:
  • updated all tests to new nova
  • cleaned up tests paths
  • general cleanup of tests and test data
Location:
trunk/tests
Files:
10 added
1 deleted
15 edited
8 moved

Legend:

Unmodified
Added
Removed
  • trunk/tests/cachebuf_test/cachebuf_test.lua

    r102 r321  
    33        files { "nv_cachebuf_test.cc" }
    44        includedirs { "../../" }
    5         targetname "nv_gui_test"
    6         links { "nv" }
     5        links { "nv-core", "nv-gl", "nv-gfx" }
     6        targetdir "../../bin"
     7        targetname "nv_cachebuf_test"
    78 
  • trunk/tests/cachebuf_test/nv_cachebuf_test.cc

    r319 r321  
    55#include <nv/core/logging.hh>
    66#include <nv/core/logger.hh>
    7 #include <glm/glm.hpp>
    8 #include <glm/gtc/matrix_transform.hpp>
    9 #include <glm/gtc/type_ptr.hpp>
    107#include <nv/core/string.hh>
    11 #include <cstdlib> // rand
    12 #include <ctime> // time
    13 
     8#include <nv/core/random.hh>
    149#include <nv/gfx/sliced_buffer.hh>
    1510
     
    259254                nv::buffer buffer = m_quad_cache->get_vertex_buffer();
    260255                #else
    261                 m_quad_cache = new gcache( m_context, nv::DYNAMIC_DRAW, 20, true );
     256                m_quad_cache = new gcache( m_context, nv::VERTEX_BUFFER, nv::DYNAMIC_DRAW, 20 );
    262257                nv::buffer buffer = m_quad_cache->get_buffer();
    263258                #endif
     
    286281                        m_context->set_index_buffer( m_va, m_quad_cache->get_index_buffer(), nv::USHORT, false );
    287282                        nv::buffer buffer = m_quad_cache->get_vertex_buffer();
     283                        m_context->replace_vertex_buffer( m_va, buffer, nv::slot::POSITION, false );
    288284                        #else
    289285                        nv::buffer buffer = m_quad_cache->get_buffer();
     286                        m_context->replace_vertex_buffer( m_va, buffer, false );
    290287                        #endif
    291288                }
    292289
    293290                m_window->get_context()->clear( m_clear_state );
    294 //              m_program->set_uniform( "tex", 0 );
    295291                #ifdef INDEXED_TEST
    296292                size_t draw_size = m_quad_cache->get_index_size();
     
    330326void application::spawn_window()
    331327{
    332         glm::ivec2 a( std::rand() % 600, std::rand() % 400 );
    333         glm::ivec2 b( std::rand() % 200, std::rand() % 200 );
     328        glm::ivec2 a = nv::random::get().range( nv::ivec2(), nv::ivec2( 600, 400 ) );
     329        glm::ivec2 b = nv::random::get().range( nv::ivec2(), nv::ivec2( 200, 200 ) );
    334330        NV_LOG( nv::LOG_INFO, "Spawn (" << a.x << "," << a.y << "x" << b.x << "," << b.y << ")" );
    335331        m_windows.emplace_back( m_quad_cache, a, a + b, glm::vec4( 0, 0, 1, 1 ) );
     
    339335{
    340336        if ( m_windows.size() == 0 ) return;
    341         size_t index = rand() % m_windows.size();
     337        size_t index = nv::random::get().urand( m_windows.size() );
    342338        m_windows.erase( m_windows.begin() + index );
    343339}
     
    346342{
    347343        if ( m_windows.size() == 0 ) return;
    348         size_t index = rand() % m_windows.size();
     344        size_t index = nv::random::get().urand( m_windows.size() );
    349345        m_windows[ index ].change_color( nv::vec4( (float)rand() / float(RAND_MAX), (float)rand() / float(RAND_MAX), (float)rand() / float(RAND_MAX), 1.0 ) );
    350346}
     
    353349{
    354350        if ( m_windows.size() == 0 ) return;
    355         size_t index = rand() % m_windows.size();
     351        size_t index = nv::random::get().urand( m_windows.size() );
    356352        NV_LOG( nv::LOG_INFO, "Simplify " << index );
    357353        m_windows[ index ].simplify_toggle();
     
    372368int main(int, char* [])
    373369{
    374         std::srand((unsigned int) std::time(0) );
     370        nv::random::get().randomize();
    375371        nv::logger log(nv::LOG_TRACE);
    376372        log.add_sink( new nv::log_file_sink("log.txt"), nv::LOG_TRACE );
  • trunk/tests/cachebuf_test/premake4.lua

    r102 r321  
    55        flags { "ExtraWarnings", "NoPCH" }
    66
    7         configuration "gmake"   
    8                 buildoptions "-std=c++11"
    9 
    107        configuration "debug"
    118                defines { "DEBUG" }
    129                flags { "Symbols", "StaticRuntime" }
    13                 objdir (_ACTION.."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1411
    1512        configuration "release"
    1613                defines { "NDEBUG" }
    1714                flags { "Optimize", "StaticRuntime" }
    18                 objdir (_ACTION.."/release")
     15                objdir ("../../".._ACTION.."/release")
    1916
    2017        dofile("cachebuf_test.lua")
    2118        dofile("../../nv.lua")
    2219
    23 if _ACTION == "clean" then
    24         for action in premake.action.each() do
    25                 os.rmdir(action.trigger)
    26         end
    27 end
  • trunk/tests/gui_test/gui_test.lua

    r127 r321  
    44        includedirs { "../../" }
    55        targetname "nv_gui_test"
    6         links { "nv" }
     6        links { "nv-core", "nv-gl", "nv-gui" }
     7        targetdir "../../bin"   
    78 
  • trunk/tests/gui_test/nv_gui_test.cc

    r319 r321  
    44#include <nv/core/logging.hh>
    55#include <nv/core/logger.hh>
    6 #include <cstdlib> // rand
    7 #include <ctime> // time
     6#include <nv/core/random.hh>
    87
    98class application
     
    8483void application::spawn_window()
    8584{
    86         glm::ivec2 a( std::rand() % 600, std::rand() % 400 );
    87         glm::ivec2 b( std::rand() % 200 + 40, std::rand() % 200 + 40 );
     85        nv::ivec2 a = nv::random::get().range( nv::ivec2(), nv::ivec2( 600, 400 ) );
     86        nv::ivec2 b = nv::random::get().range( nv::ivec2( 40, 40 ), nv::ivec2( 240, 240 ) );
    8887        nv::gui::handle e = m_guienv->create_element( nv::rectangle(a).dim(b) );
    8988        m_guienv->set_class( e, "window" );
     
    9695{
    9796        if ( m_windows.size() == 0 ) return;
    98         size_t index = rand() % m_windows.size();
     97        size_t index = nv::random::get().urand( m_windows.size() );
    9998        m_guienv->destroy_element( m_windows[index] );
    10099        m_windows.erase( m_windows.begin() + index );
     
    118117int main(int, char* [])
    119118{
    120         std::srand((unsigned int) std::time(0) );
     119        nv::random::get().randomize();
    121120        nv::logger log(nv::LOG_TRACE);
    122121        log.add_sink( new nv::log_file_sink("log.txt"), nv::LOG_TRACE );
  • trunk/tests/gui_test/premake4.lua

    r127 r321  
    55        flags { "ExtraWarnings", "NoPCH" }
    66
    7         configuration "gmake"   
    8                 buildoptions "-std=c++11"
    9 
    107        configuration "debug"
    118                defines { "DEBUG" }
    129                flags { "Symbols", "StaticRuntime" }
    13                 objdir (_ACTION.."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1411
    1512        configuration "release"
    1613                defines { "NDEBUG" }
    1714                flags { "Optimize", "StaticRuntime" }
    18                 objdir (_ACTION.."/release")
     15                objdir ("../../".._ACTION.."/release")
    1916
    2017        dofile("gui_test.lua")
    2118        dofile("../../nv.lua")
    22 
    23 if _ACTION == "clean" then
    24         for action in premake.action.each() do
    25                 os.rmdir(action.trigger)
    26         end
    27 end
  • trunk/tests/lualib_test/nv_lualib_test.cc

    r214 r321  
    44#include <nv/lua/lua_raw.hh>
    55#include <nv/lua/lua_glm.hh>
    6 #include <nv/logger.hh>
    7 #include <nv/math.hh>
    8 #include <nv/object.hh>
    9 #include <string>
     6#include <nv/core/logger.hh>
     7#include <nv/core/math.hh>
     8#include <nv/core/string.hh>
    109#include <iostream>
    1110#include <functional>
    12 #include <nv/gui/gui_element.hh>
    1311
    1412void hello( const std::string& h )
     
    3129                nv::lua::register_glm( state );
    3230                // run the Lua script
    33                 state.register_function<decltype(hello),&hello>( "hello" );
     31                state.register_function<decltype(&hello),&hello>( "hello" );
    3432                state.do_file( "init.lua" );
    3533                //std::cout << nv::function_traits<decltype(hello)>::arg_count << std::endl;
  • trunk/tests/lualib_test/premake4.lua

    r52 r321  
    88                defines { "DEBUG" }
    99                flags { "Symbols", "StaticRuntime" }
    10                 objdir (_ACTION.."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1111
    1212        configuration "release"
    1313                defines { "NDEBUG" }
    1414                flags { "Optimize", "StaticRuntime" }
    15                 objdir (_ACTION.."/release")
     15                objdir ("../../".._ACTION.."/release")
    1616
    1717        dofile("lualib_test.lua")
    1818        dofile("../../nv.lua")
    19 
    20 if _ACTION == "clean" then
    21         for action in premake.action.each() do
    22                 os.rmdir(action.trigger)
    23         end
    24 end
  • trunk/tests/md2_test/md2_test.lua

    r189 r321  
    1 -- md2 load test project definition
    2 project "md2_test"
     1project "nv_md2_test"
    32        kind "ConsoleApp"
    4         files { "md2_test.cc" }
     3        files { "nv_md2_test.cc" }
    54        includedirs { "../../" }
    6         targetname "md2_test"
    7         links { "nv" }
    8  
     5        targetname "nv_md2_test"
     6        links { "nv-core", "nv-gl", "nv-formats" }
     7        targetdir "../../bin"   
     8 
  • trunk/tests/md2_test/nv_md2_test.cc

    r239 r321  
    1 #include <nv/common.hh>
    21#include <nv/gfx/keyframed_mesh.hh>
    3 #include <nv/interface/vertex_buffer.hh>
    42#include <nv/gl/gl_device.hh>
    53#include <nv/gfx/image.hh>
    64#include <nv/interface/context.hh>
    75#include <nv/interface/window.hh>
    8 #include <nv/interface/program.hh>
    9 #include <nv/interface/texture2d.hh>
    106#include <nv/interface/mesh_loader.hh>
    117#include <nv/io/c_file_system.hh>
    128#include <nv/formats/md2_loader.hh>
    13 #include <nv/profiler.hh>
    14 #include <nv/logging.hh>
    15 #include <nv/logger.hh>
    16 #include <nv/math.hh>
    17 #include <nv/time.hh>
    18 #include <nv/string.hh>
     9#include <nv/core/profiler.hh>
     10#include <nv/core/logging.hh>
     11#include <nv/core/logger.hh>
     12#include <nv/core/math.hh>
     13#include <nv/core/time.hh>
     14#include <nv/core/string.hh>
    1915#include <glm/gtx/rotate_vector.hpp>
    2016
     
    2723        ~application();
    2824protected:
    29         nv::device*       m_device;
    30         nv::window*       m_window;
    31         nv::texture2d*    m_diffuse;
    32         nv::program*      m_program;
     25        nv::device*  m_device;
     26        nv::window*  m_window;
     27        nv::context* m_context;
     28        nv::texture  m_diffuse;
     29        nv::program  m_program;
    3330
    3431        nv::clear_state   m_clear_state;
     
    3633        nv::scene_state   m_scene_state;
    3734
    38         nv::mesh_data*      m_mesh_data;
    39         nv::keyframed_mesh* m_mesh;
     35        nv::mesh_data*       m_mesh_data;
     36        nv::keyframed_mesh*  m_mesh;
     37        nv::animation_entry* m_animation;
    4038};
    4139
     
    4341{
    4442        NV_PROFILE( "app_construct" );
    45         m_device = new nv::gl_device();
    46         m_window = m_device->create_window( 800, 600, false );
     43        m_device  = new nv::gl_device();
     44        m_window  = m_device->create_window( 800, 600, false );
     45        m_context = m_window->get_context();
    4746
    4847        nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT );
    4948        nv::image_data* data = m_device->create_image_data( "data/manc.png" );
    50         m_diffuse  = m_device->create_texture2d( data->get_size(), nv::RGB, nv::UBYTE, sampler, (void*)data->get_data() );
     49        m_diffuse  = m_device->create_texture( data, sampler );
    5150        delete data;
    5251
     
    6463{
    6564        NV_PROFILE( "app_initialize" );
    66         m_program = m_device->create_program( nv::slurp( "obj.vert" ), nv::slurp( "obj.frag" ) );
     65        m_program = m_device->create_program( nv::slurp( "md2.vert" ), nv::slurp( "md2.frag" ) );
    6766
    6867        nv::md2_loader* loader;
     
    8079        {
    8180                NV_PROFILE("create_mesh");
    82                 m_mesh      = new nv::keyframed_mesh_gpu( m_window->get_context(), m_mesh_data, nullptr, m_program );
     81                m_mesh      = new nv::keyframed_mesh_gpu( m_context, m_mesh_data, nullptr );
    8382        }
    8483
     
    9695        nv::fps_counter_class< nv::system_us_timer > fps_counter;
    9796
    98         m_mesh->setup_animation( 0, m_mesh->get_max_frames(), 2, true );
     97        m_animation = new nv::animation_entry( "", true, 5, 0.0f, m_mesh->get_max_frames()-1 );
     98        m_mesh->run_animation( m_animation );
    9999
    100100        while(!keypress)
     
    103103                ticks      = m_device->get_ticks();
    104104                nv::uint32 elapsed = ticks - last_ticks;
    105                 m_window->get_context()->clear( m_clear_state );
    106                 m_mesh->update( elapsed );
     105                m_context->clear( m_clear_state );
    107106                glm::vec3 eye = glm::rotate( glm::vec3( 100.0f, 25.0f, 0.0f ), (ticks / 20.f), glm::vec3( 0.0,1.0,0.0 ) );
    108107
     
    111110                m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f);
    112111
    113                 m_diffuse->bind( 0 );
    114                 m_program->set_opt_uniform( "light_position", glm::vec3(120.0, 120.0, 0) );
    115                 m_program->set_opt_uniform( "light_diffuse",  glm::vec4(1.0,1.0,1.0,1.0) );
    116                 m_program->set_opt_uniform( "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
     112                m_context->bind( m_diffuse, nv::TEX_DIFFUSE );
     113                m_device->set_opt_uniform( m_program, "light_position", glm::vec3(120.0, 120.0, 0) );
     114                m_device->set_opt_uniform( m_program, "light_diffuse",  glm::vec4(1.0,1.0,1.0,1.0) );
     115                m_device->set_opt_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
     116                m_mesh->update_animation( m_animation, ticks );
    117117                m_mesh->update( m_program );
    118                 m_window->get_context()->draw( m_render_state, m_scene_state, m_program, m_mesh );
     118                m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_mesh->get_vertex_array(), m_mesh->get_index_count() );
    119119                m_window->swap_buffers();
    120120
     
    148148application::~application()
    149149{
    150         delete m_program;
     150        m_device->release( m_program );
    151151        delete m_mesh_data;
    152152        delete m_mesh;
    153         delete m_diffuse;
     153        delete m_animation;
     154        m_device->release( m_diffuse );
    154155        delete m_window;
    155156        delete m_device;
  • trunk/tests/md2_test/premake4.lua

    r189 r321  
    88                defines { "DEBUG" }
    99                flags { "Symbols", "StaticRuntime" }
    10                 objdir (_ACTION or "".."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1111
    1212        configuration "release"
    1313                defines { "NDEBUG" }
    1414                flags { "Optimize", "StaticRuntime" }
    15                 objdir (_ACTION or "".."/release")
     15                objdir ("../../".._ACTION.."/release")
    1616
    1717        dofile("md2_test.lua")
    1818        dofile("../../nv.lua")
    19 
    20 if _ACTION == "clean" then
    21         for action in premake.action.each() do
    22                 os.rmdir(action.trigger)
    23         end
    24 end
  • trunk/tests/md3_test/nv_md3_test.cc

    r319 r321  
    6565        }
    6666
    67         void update( nv::uint32 ms, nv::program program )
     67        void update( nv::uint32 ms )
    6868        {
    6969                m_mesh->update_animation( m_entry, ms );
     70        }
     71
     72        void update( nv::program program )
     73        {
    7074                m_mesh->update( program );
    7175        }
     
    144148        NV_PROFILE( "app_initialize" );
    145149        m_program = m_device->create_program(
    146                 nv::slurp( GPU_ANIMATION ? "obj_gpu.vert" : "obj_cpu.vert" ),
    147                 nv::slurp( "obj.frag" )
     150                nv::slurp( GPU_ANIMATION ? "md3_gpu.vert" : "md3_cpu.vert" ),
     151                nv::slurp( "md3.frag" )
    148152        );
    149153        m_torso   = new mesh_part( "data/upper.md3", m_window );
     
    174178                last_ticks = ticks;
    175179                ticks      = m_device->get_ticks();
    176                 nv::uint32 elapsed = ticks - last_ticks;
    177                 m_torso->update( ticks, m_program );
    178                 m_legs->update( ticks, m_program );
     180                m_torso->update( ticks );
     181                m_legs->update( ticks );
    179182                {
    180183                        NV_PROFILE( "clear" );
     
    204207
    205208                        m_scene_state.set_model( model );
     209                        m_legs->update( m_program );
    206210                        m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_legs->get_mesh()->get_vertex_array(), m_legs->get_mesh()->get_index_count() );
    207211
     
    209213                        model = m_legs->get_transform( 0 );
    210214                        m_scene_state.set_model( model );
     215                        m_torso->update( m_program );
    211216                        m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_torso->get_mesh()->get_vertex_array(), m_torso->get_mesh()->get_index_count() );
    212217
    213218                        glm::mat4 head = model * m_torso->get_transform( 0 ); //, last_torso_frame, torso_frame, torso_interpolate );
    214219                        m_scene_state.set_model( head );
     220                        m_head->update( m_program );
    215221                        m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_head->get_mesh()->get_vertex_array(), m_head->get_mesh()->get_index_count() );
    216222
    217223                        glm::mat4 weapon = model * m_torso->get_transform( 2 ); //, last_torso_frame, torso_frame, torso_interpolate );
     224                        m_weapon->update( m_program );
    218225                        m_scene_state.set_model( weapon );
    219226                        m_context->bind( m_diffuse_weapon, nv::TEX_DIFFUSE );
  • trunk/tests/md5_test/nv_md5_test.cc

    r261 r321  
    1 #include <nv/common.hh>
     1#include <nv/core/common.hh>
    22#include <iomanip>
    33#include <nv/gfx/keyframed_mesh.hh>
    4 #include <nv/interface/vertex_buffer.hh>
    54#include <nv/gl/gl_device.hh>
    65#include <nv/gfx/image.hh>
    76#include <nv/interface/context.hh>
    87#include <nv/interface/window.hh>
    9 #include <nv/interface/program.hh>
    10 #include <nv/interface/texture2d.hh>
    118#include <nv/interface/mesh_loader.hh>
    129#include <nv/io/c_file_system.hh>
    1310#include <nv/formats/md5_loader.hh>
    14 #include <nv/profiler.hh>
    15 #include <nv/logging.hh>
    16 #include <nv/logger.hh>
    17 #include <nv/math.hh>
    18 #include <nv/time.hh>
    19 #include <nv/string.hh>
     11#include <nv/core/profiler.hh>
     12#include <nv/core/logging.hh>
     13#include <nv/core/logger.hh>
     14#include <nv/core/math.hh>
     15#include <nv/core/time.hh>
     16#include <nv/core/string.hh>
    2017#include <nv/gfx/skeletal_mesh.hh>
    2118#include <glm/gtx/rotate_vector.hpp>
     
    3734        nv::device*       m_device;
    3835        nv::window*       m_window;
    39         nv::texture2d*    m_diffuse;
    40         nv::texture2d*    m_specular;
    41         nv::texture2d*    m_normal;
     36        nv::context*      m_context;
     37        nv::texture       m_diffuse;
     38        nv::texture       m_specular;
     39        nv::texture       m_normal;
    4240        nv::clear_state   m_clear_state;
    4341        nv::render_state  m_render_state;
     
    4543
    4644        nv::skeletal_mesh* m_mesh;
    47         nv::program*       m_program;
    48         nv::md5_mesh_data* m_mesh_data;
    49         nv::md5_animation* m_animation;
     45        nv::program        m_program;
     46        nv::mesh_data*      m_mesh_data;
     47        nv::animation_entry* m_animation;
    5048
    5149};
     
    5452{
    5553        NV_PROFILE( "app_construct" );
    56         m_device = new nv::gl_device();
    57         m_window = m_device->create_window( 800, 600, false );
     54        m_device  = new nv::gl_device();
     55        m_window  = m_device->create_window( 800, 600, false );
     56        m_context = m_window->get_context();
    5857        m_animation = nullptr;
    5958
    6059        nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT );
    6160        nv::image_data* data = m_device->create_image_data( "data/qshambler_d.png" );
    62         m_diffuse  = m_device->create_texture2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data() );
     61        m_diffuse  = m_device->create_texture( data, sampler );
    6362        delete data;
    6463        data = m_device->create_image_data( "data/qshambler_s.png" );
    65         m_specular = m_device->create_texture2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data() );
     64        m_specular = m_device->create_texture( data, sampler );
    6665        delete data;
    6766
    6867        data = m_device->create_image_data( "data/qshambler_local.png" );
    69         m_normal = m_device->create_texture2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data() );
     68        m_normal = m_device->create_texture( data, sampler );
    7069        delete data;
    7170
     
    9897        {
    9998                NV_PROFILE("create_mesh");
    100                 m_mesh_data = (nv::md5_mesh_data*)loader->release_mesh_data();
    101                 m_mesh = new nv::skeletal_mesh( m_window->get_context(), m_mesh_data );
     99                m_mesh_data = loader->release_mesh_data();
     100                m_mesh = new nv::skeletal_mesh_cpu( m_context, m_mesh_data, loader->release_mesh_nodes_data() );
    102101                delete loader;
    103102        }
     
    125124                last_ticks = ticks;
    126125                ticks      = m_device->get_ticks();
    127                 nv::uint32 elapsed = ticks - last_ticks;
    128                 m_mesh->update( elapsed );
    129                 {
    130                         NV_PROFILE( "clear" );
    131                         m_window->get_context()->clear( m_clear_state );
    132                 }
     126                m_mesh->update_animation( m_animation, ticks );
     127                m_context->clear( m_clear_state );
    133128
    134129                {
     
    141136                        m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f);
    142137
    143                         m_diffuse ->bind( 0 );
    144                         m_specular->bind( 1 );
    145                         m_normal  ->bind( 2 );
    146                         m_program->set_opt_uniform( "light_position", glm::vec3(180.0, 180.0, 0) );
    147                         m_program->set_opt_uniform( "light_diffuse",  glm::vec4(0.7,0.7,0.7,1.0) );
    148                         m_program->set_opt_uniform( "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
     138                        m_context->bind( m_diffuse,  nv::TEX_DIFFUSE );
     139                        m_context->bind( m_specular, nv::TEX_SPECULAR );
     140                        m_context->bind( m_normal,   nv::TEX_NORMAL );
     141                        m_device->set_opt_uniform( m_program, "light_position", glm::vec3(180.0, 180.0, 0) );
     142                        m_device->set_opt_uniform( m_program, "light_diffuse",  glm::vec4(0.7,0.7,0.7,1.0) );
     143                        m_device->set_opt_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
    149144                }
    150145
     
    158153                        ) );
    159154
    160                         m_window->get_context()->draw( m_render_state, m_scene_state, m_program, m_mesh );
     155                        m_mesh->update( m_program );
     156                        m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_mesh->get_vertex_array(), m_mesh->get_index_count() );
    161157                }
    162158
     
    206202        if ( anim_file != nullptr )
    207203        {
    208                 m_animation = new nv::md5_animation();
    209                 if ( !m_animation->load_animation(*anim_file) )
    210                 {
    211                         delete m_animation;
    212                         m_animation = nullptr;
    213                 }
    214                 m_mesh->setup_animation( m_animation );
     204                nv::md5_loader* loader = new nv::md5_loader();
     205                loader->load( *anim_file );
    215206                delete anim_file;
     207                m_animation = new nv::skeletal_animation_entry_cpu( "", loader->release_mesh_nodes_data(), true );
     208                m_mesh->run_animation( m_animation );
     209                delete loader;
    216210        }
    217211}
     
    220214application::~application()
    221215{
    222         delete m_program;
     216        m_device->release( m_program );
    223217        delete m_mesh;
    224         delete m_diffuse;
     218        m_device->release( m_diffuse );
    225219        delete m_window;
    226220        delete m_device;
  • trunk/tests/objload_test/nv_objload_test.cc

    r239 r321  
    1 #include <nv/interface/vertex_buffer.hh>
    21#include <nv/gl/gl_device.hh>
    32#include <nv/gfx/image.hh>
    43#include <nv/interface/context.hh>
    54#include <nv/interface/window.hh>
    6 #include <nv/interface/program.hh>
    7 #include <nv/interface/texture2d.hh>
    85#include <nv/interface/mesh_loader.hh>
    96#include <nv/io/c_file_system.hh>
    107#include <nv/formats/obj_loader.hh>
    11 #include <nv/logging.hh>
    12 #include <nv/logger.hh>
    13 #include <nv/math.hh>
    14 #include <nv/string.hh>
     8#include <nv/core/logging.hh>
     9#include <nv/core/logger.hh>
     10#include <nv/core/math.hh>
     11#include <nv/core/string.hh>
    1512
    1613class application
     
    2320protected:
    2421        nv::device*       m_device;
     22        nv::context*      m_context;
    2523        nv::window*       m_window;
    26         nv::texture2d*    m_diffuse;
    27         nv::texture2d*    m_specular;
     24        nv::texture       m_diffuse;
     25        nv::texture       m_specular;
     26        nv::scene_state   m_scene_state;
    2827        nv::clear_state   m_clear_state;
    2928        nv::render_state  m_render_state;
    3029
    31         nv::vertex_array* m_va;
    32         nv::program*      m_program;
     30        nv::vertex_array  m_va;
     31        nv::program       m_program;
    3332        nv::mesh_data*    m_mesh;
    3433};
     
    3837        m_device = new nv::gl_device();
    3938        m_window = m_device->create_window( 800, 600, false );
     39        m_context = m_window->get_context();
     40
    4041        nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT );
    41        
    42         nv::image_data* sprites = m_device->create_image_data( "diffuse.png" );
    43         m_diffuse  = m_device->create_texture2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data() );
    44         delete sprites;
    4542
    46         sprites    = m_device->create_image_data( "specular.png" );
    47         m_specular = m_device->create_texture2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data() );
    48         delete sprites;
     43        nv::image_data* image = m_device->create_image_data( "diffuse.png" );
     44        m_diffuse  = m_device->create_texture( image, sampler );
     45        delete image;
     46
     47        image      = m_device->create_image_data( "specular.png" );
     48        m_specular = m_device->create_texture( image, sampler );
     49        delete image;
    4950
    5051        m_clear_state.buffers = nv::clear_state::COLOR_AND_DEPTH_BUFFER;
     
    6364        nv::stream* mesh_file = fs.open( "mesh.obj" );
    6465
    65 //              nv::mesh_loader* loader = new nv::obj_loader();
    66 //              loader->load( *mesh_file );
    67 //              nv::mesh_data_old* mesh = loader->release_mesh_data();
    68 //              m_count = loader->get_size();
    69 //              delete mesh_file;
    70 //              delete loader;
    71 
    7266        nv::obj_loader* loader = new nv::obj_loader();
    7367        loader->load( *mesh_file );
     
    7771
    7872        m_program = m_device->create_program( nv::slurp( "obj.vert" ), nv::slurp( "obj.frag" ) );
    79 
    80 //      nv::vertex_buffer* vb = nullptr;
    81         m_va = m_device->create_vertex_array( m_mesh, nv::STATIC_DRAW );
     73        m_va = m_context->create_vertex_array( m_mesh, nv::STATIC_DRAW );
    8274
    8375        return true;
     
    9385        {
    9486                m_window->get_context()->clear( m_clear_state );
     87                m_scene_state.set_model( glm::mat4() );
     88                m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f);
     89                m_scene_state.get_camera().set_lookat(glm::vec3(6.0f, 8.0f, 6.0f) + move, glm::vec3(0.0f, 4.0f, 0.0f) + move, glm::vec3(0.0, 1.0, 0.0));
    9590
    96                 glm::mat4 model = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, 0.0f));
    97                 glm::mat4 view  = glm::lookAt(glm::vec3(6.0f, 8.0f, 6.0f) + move, glm::vec3(0.0f, 4.0f, 0.0f) + move, glm::vec3(0.0, 1.0, 0.0));
    98                 glm::mat4 projection = glm::perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f);
    99                 glm::mat4 mv         = view * model;
    100                 glm::mat3 normal_matrix = glm::transpose(glm::inverse(glm::mat3(mv)));
    101 
    102                 m_diffuse->bind( 0 );
    103                 m_specular->bind( 1 );
    104                 m_program->set_opt_uniform( "nv_m_modelview", mv );
    105                 m_program->set_opt_uniform( "nv_m_projection", projection );
    106                 m_program->set_opt_uniform( "nv_m_normal", normal_matrix );
    107                 m_program->set_uniform( "matrix_mvp", projection * mv );
    108                 m_program->set_uniform( "light_position", glm::vec3(12.0, 12.0, 0) );
    109                 m_program->set_uniform( "light_diffuse",  glm::vec4(0.7,0.7,0.7,1.0) );
    110                 m_program->set_uniform( "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
    111                 m_program->set_uniform( "custom_color_1", glm::vec3(1.0,0.0,0.0) );
    112                 m_program->set_uniform( "custom_color_2", glm::vec3(0.0,0.0,1.0) );
    113                 m_program->set_uniform( "diffuse", 0 );
    114                 m_program->set_uniform( "specular", 1 );
    115                 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_program, m_va, m_mesh->get_count() );
     91                m_context->bind( m_diffuse, nv::TEX_DIFFUSE );
     92                m_context->bind( m_specular, nv::TEX_SPECULAR );
     93                m_device->set_uniform( m_program, "light_position", glm::vec3(12.0, 12.0, 0) );
     94                m_device->set_uniform( m_program, "light_diffuse",  glm::vec4(0.7,0.7,0.7,1.0) );
     95                m_device->set_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) );
     96                m_device->set_uniform( m_program, "custom_color_1", glm::vec3(1.0,0.0,0.0) );
     97                m_device->set_uniform( m_program, "custom_color_2", glm::vec3(0.0,0.0,1.0) );
     98                m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_va, m_mesh->get_count() );
    11699                m_window->swap_buffers();
    117100
     
    148131{
    149132        delete m_mesh;
    150         delete m_program;
    151         delete m_diffuse;
    152         delete m_specular;
     133        m_device->release( m_program );
     134        m_device->release( m_diffuse );
     135        m_device->release( m_specular );
    153136        delete m_window;
    154137        delete m_device;
  • trunk/tests/objload_test/obj.frag

    r139 r321  
    11#version 120
    22
    3 uniform sampler2D diffuse;
    4 uniform sampler2D specular;
     3uniform sampler2D nv_diffuse;
     4uniform sampler2D nv_specular;
    55uniform vec4 light_diffuse;
    66uniform vec4 light_specular;
     
    2323        float diffuse_value  = max( dot( nlight_vector, nnormal ), 0.0 );
    2424
    25         vec3 diff_texel      = vec3( texture2D( diffuse, v_texcoord ) );       
    26         vec4 spec_texel      = texture2D( specular, v_texcoord );
     25        vec3 diff_texel      = vec3( texture2D( nv_diffuse, v_texcoord ) );     
     26        vec4 spec_texel      = texture2D( nv_specular, v_texcoord );
    2727       
    2828        float specular_amount = spec_texel.x;
  • trunk/tests/objload_test/obj.vert

    r161 r321  
    1010varying vec2 v_texcoord;
    1111
    12 uniform mat4 matrix_mvp;
     12uniform mat4 nv_m_mvp;
    1313uniform mat4 nv_m_modelview;
    1414uniform mat4 nv_m_projection;
     
    2424
    2525        v_texcoord      = nv_texcoord;
    26         gl_Position     = matrix_mvp * vertex;
     26        gl_Position     = nv_m_mvp * vertex;
    2727}
  • trunk/tests/objload_test/objload_test.lua

    r137 r321  
    1 -- obj load test project definition
    2 project "objload_test"
     1project "nv_objload_test"
    32        kind "ConsoleApp"
    4         files { "objload_test.cc" }
     3        files { "nv_objload_test.cc" }
    54        includedirs { "../../" }
    6         targetname "objload_test"
    7         links { "nv" }
    8 
     5        targetname "nv_objload_test"
     6        links { "nv-core", "nv-gl", "nv-gfx", "nv-formats" }
     7        targetdir "../../bin"   
  • trunk/tests/objload_test/premake4.lua

    r137 r321  
    88                defines { "DEBUG" }
    99                flags { "Symbols", "StaticRuntime" }
    10                 objdir (_ACTION or "".."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1111
    1212        configuration "release"
    1313                defines { "NDEBUG" }
    1414                flags { "Optimize", "StaticRuntime" }
    15                 objdir (_ACTION or "".."/release")
     15                objdir ("../../".._ACTION.."/release")
    1616
    1717        dofile("objload_test.lua")
    1818        dofile("../../nv.lua")
    19 
    20 if _ACTION == "clean" then
    21         for action in premake.action.each() do
    22                 os.rmdir(action.trigger)
    23         end
    24 end
  • trunk/tests/render_test/nv_render_test.cc

    r239 r321  
    1 #include <nv/interface/vertex_buffer.hh>
    21#include <nv/gl/gl_device.hh>
    32#include <nv/gfx/image.hh>
    43#include <nv/interface/context.hh>
    54#include <nv/interface/window.hh>
    6 #include <nv/interface/program.hh>
    7 #include <nv/interface/texture2d.hh>
    8 #include <nv/logging.hh>
    9 #include <nv/logger.hh>
    10 #include <nv/math.hh>
    11 #include <nv/string.hh>
     5#include <nv/core/logging.hh>
     6#include <nv/core/logger.hh>
     7#include <nv/core/math.hh>
     8#include <nv/core/string.hh>
    129
    1310const nv::uint16 size_x  = 16;
     
    6360        ~application();
    6461protected:
    65         nv::device* m_device;
    66         nv::window* m_window;
    67         nv::texture2d* m_texture;
     62        nv::device*  m_device;
     63        nv::context* m_context;
     64        nv::window*  m_window;
     65        nv::texture  m_texture;
    6866
    6967        nv::clear_state  m_clear_state;
     
    7169        nv::scene_state  m_scene_state;
    7270
    73         nv::program* m_char_program;
    74         nv::program* m_box_program;
    75         nv::vertex_array* m_char_va;
    76         nv::vertex_array* m_box_va;
     71        nv::program m_char_program;
     72        nv::program m_box_program;
     73        nv::vertex_array m_char_va;
     74        nv::vertex_array m_box_va;
    7775        unsigned int m_count;
    7876};
     
    8987application::application()
    9088{
    91         m_device = new nv::gl_device();
    92         m_window = m_device->create_window( 800, 600, false );
     89        m_device  = new nv::gl_device();
     90        m_window  = m_device->create_window( 800, 600, false );
     91        m_context = m_window->get_context();
    9392       
    9493        nv::image_data* sprites = m_device->create_image_data( "spritesheet.png" );
    9594        nv::sampler sampler( nv::sampler::NEAREST, nv::sampler::REPEAT );
    96         m_texture = m_device->create_texture2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data() );
     95        m_texture = m_device->create_texture( sprites, sampler );
    9796        delete sprites;
    9897
     
    119118                v.emplace_back( nv::i8vec3( x,   h, y ), mt ); 
    120119                m_char_program = m_device->create_program( nv::slurp( "char.vert" ), nv::slurp( "char.frag" ) );
    121                 m_char_va      = m_device->create_vertex_array( v, nv::STATIC_DRAW );
     120                m_char_va      = m_context->create_vertex_array( v, nv::STATIC_DRAW );
    122121        }
    123122
     
    176175                m_count       = v.size();
    177176                m_box_program = m_device->create_program( nv::slurp( "box.vert" ), nv::slurp( "box.frag" ) );
    178                 m_box_va      = m_device->create_vertex_array( v, nv::STATIC_DRAW );
     177                m_box_va      = m_context->create_vertex_array( v, nv::STATIC_DRAW );
    179178        }
    180179
     
    194193                m_scene_state.get_camera().set_lookat(glm::vec3(0.0, 20.0, 5.0) + move, glm::vec3(0.0, 4.0, 0.0) + move, glm::vec3(0.0, 1.0, 0.0));
    195194
    196                 m_window->get_context()->clear( m_clear_state );
    197                 m_texture->bind( 0 );
    198                 m_box_program->set_uniform( "light", glm::vec3(8.5, 4.5, 6.5) + move );
    199                 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_box_program, m_box_va, m_count );
    200 
    201                 m_char_program->set_uniform( "pos", move + glm::vec3( 8, 4.1, 6 ) );
    202                 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_char_program, m_char_va, 6 );
     195                m_context->clear( m_clear_state );
     196                m_context->bind( m_texture, nv::TEXTURE_0 );
     197                m_device->set_uniform( m_box_program, "light", glm::vec3(8.5, 4.5, 6.5) + move );
     198                m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_box_program, m_box_va, m_count );
     199
     200                m_device->set_uniform( m_char_program, "pos", move + glm::vec3( 8, 4.1, 6 ) );
     201                m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_char_program, m_char_va, 6 );
    203202                m_window->swap_buffers();
    204203
     
    234233application::~application()
    235234{
    236         delete m_char_program;
    237         delete m_box_program;
    238         delete m_char_va;
    239         delete m_box_va;
    240         delete m_texture;
     235        m_device->release( m_char_program );
     236        m_device->release( m_box_program );
     237        m_context->release( m_char_va );
     238        m_context->release( m_box_va );
     239        m_device->release( m_texture );
    241240        delete m_window;
    242241        delete m_device;
  • trunk/tests/render_test/premake4.lua

    r120 r321  
    88                defines { "DEBUG" }
    99                flags { "Symbols", "StaticRuntime" }
    10                 objdir (_ACTION or "".."/debug")
     10                objdir ("../../".._ACTION.."/debug")
    1111
    1212        configuration "release"
    1313                defines { "NDEBUG" }
    1414                flags { "Optimize", "StaticRuntime" }
    15                 objdir (_ACTION or "".."/release")
     15                objdir ("../../".._ACTION.."/release")
    1616
    1717        dofile("render_test.lua")
    1818        dofile("../../nv.lua")
    19 
    20 if _ACTION == "clean" then
    21         for action in premake.action.each() do
    22                 os.rmdir(action.trigger)
    23         end
    24 end
  • trunk/tests/render_test/render_test.lua

    r120 r321  
    1 -- RL project definition
    2 project "rl"
     1project "nv_render_test"
    32        kind "ConsoleApp"
    4         files { "rl.cc" }
     3        files { "nv_render_test.cc" }
    54        includedirs { "../../" }
    6         targetname "rl"
    7         links { "nv" }
     5        targetname "nv_render_test"
     6        links { "nv-core", "nv-gl" }
     7        targetdir "../../bin"   
    88 
Note: See TracChangeset for help on using the changeset viewer.