Changeset 544

Show
Ignore:
Timestamp:
05/19/08 17:05:39 (8 months ago)
Author:
LeoD
Message:

trying to glow :P

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/run/defend.cfg

    r540 r544  
    3636    // light objects by the terrain lightmap 
    3737    objects_lightmap = 1 
     38     
     39    // object's team colors glow 
     40    objects_glow = 1 
  • trunk/src/defend/Camera.d

    r543 r544  
    195195 
    196196        position = vec3(0, 0, 0); 
    197          
    198197        rotate(vec3(-1, 0.0, 0)); 
    199198    } 
  • trunk/src/defend/Config.d

    r540 r544  
    5454              "int graphics.shadowmapping.samples;" 
    5555              "int graphics.lighting;" 
    56               "int graphics.objects_lightmap;") 
     56              "int graphics.objects_lightmap;" 
     57              "int graphics.objects_glow;") 
    5758               
    5859              defendConfig; 
  • trunk/src/defend/Main.d

    r542 r544  
    306306             
    307307            InputChannel.global.dispatch(); 
    308              
    309             //Stdout(frameTime).newline; 
    310308            taskManager.update(cast(double)frameTime * 0.000001); 
    311309 
     
    316314            timer.stop(); 
    317315            frameTime = timer.microseconds(); 
    318              
    319             //Stdout("frame OVEEEEEEEEEEERRRRRRRRRRRRRRRRRRRRRRR!").newline; 
    320316        } 
    321317    } 
  • trunk/src/defend/game/Game.d

    r541 r544  
    3939import defend.Camera; 
    4040import defend.Map; 
     41import defend.Graphics; 
    4142import defend.MapGenerator; 
    4243import defend.com.Gateway; 
     
    8687    HUD hud; 
    8788 
    88     // Main camera 
    89     MainCamera mainCamera; 
    90  
    9189    // Demo recorder 
    9290    DemoRecorder demoRecorder; 
     
    9492    // Input 
    9593    KeyboardReader keyboard; 
     94 
     95    // Graphics setups 
     96    Graphics graphics; 
    9697 
    9798    // Initializes singleplayer mode 
     
    115116        logger.info("creating client"); 
    116117        gateway = new NetworkClient(address, config.multiplayer.port, config.me); 
    117     } 
    118  
    119     // Shadow mapping test 
    120     void initShadowMapping() 
    121     { 
    122         auto size = defendConfig.graphics.shadowmapping.size; 
    123         auto fb = renderer.createFramebuffer(vec2i(size, size), ImageFormat.A); 
    124          
    125         auto camera = new StaticCamera(vec3(-20, 40, -39), vec3(-0.9, -1.57, 0), 
    126                                        mat4.perspective(70, 1, 50, 200)); 
    127  
    128         sceneGraph.addCamera("shadow", camera, vec3(0, 0, 0), fb, true); 
    129118    } 
    130119 
     
    205194        { 
    206195            renderer.identity(); 
    207             renderer.setMatrix(mainCamera.modelview, MatrixType.Modelview); 
    208             renderer.setMatrix(mainCamera.projection, MatrixType.Projection); 
     196            renderer.setMatrix(graphics.mainCamera.modelview, MatrixType.Modelview); 
     197            renderer.setMatrix(graphics.mainCamera.projection, MatrixType.Projection); 
    209198            vec4 lightPosition = vec4(10.0, 10.0, 0.0, 1); 
    210199            glLightfv(GL_LIGHT0, GL_POSITION, lightPosition.ptr); 
     
    215204            renderer.setRenderState(RenderState.Wireframe, true); 
    216205 
    217         profile!("graph.render") 
    218         ({ 
    219             sceneGraph.render(); 
    220         }); 
    221          
    222         renderer.setMatrix(mainCamera.modelview, MatrixType.Modelview); 
    223         renderer.setMatrix(mainCamera.projection, MatrixType.Projection); 
     206        graphics.render(); 
     207         
     208        renderer.setMatrix(graphics.mainCamera.modelview, MatrixType.Modelview); 
     209        renderer.setMatrix(graphics.mainCamera.projection, MatrixType.Projection); 
    224210        gameObjects.render(); 
    225211 
     
    284270        logObjectUsage(); 
    285271         
    286         // Preallocate objects 
    287         MeshNode.memoryPool.create(2000); 
    288          
    289         // Initialize scene graph 
    290         mainCamera = new MainCamera; 
    291         mainCamera.projection = mat4.perspective(defendConfig("screen").integer("fov"), 
    292                                                  renderer.config.aspect, 1, 300); 
    293         sceneGraph.addCamera("main", mainCamera, vec3(0, 0, 0.2)); 
    294          
    295         if(defendConfig.graphics.shadowmapping.enable) 
    296             initShadowMapping(); 
     272        // Initialize graphics 
     273        graphics = new Graphics; 
     274        graphics.init(); 
    297275 
    298276        logger.info("initializing communication"); 
     
    313291            if(object.owner == gateway.id) 
    314292            { 
    315                 mainCamera.position = terrain.getWorldPos(object.mapPos) + vec3(5, 0, 5); 
     293                graphics.mainCamera.position = terrain.getWorldPos(object.mapPos) + vec3(5, 0, 5); 
    316294                break; 
    317295            } 
     
    320298        // Create HUD and mouse 
    321299        hud = new HUD(gameObjects); 
    322  
    323         particles = new ParticleSystemManager; 
    324         particles.addSystem("smoke", new SmokeParticleSystem("data/textures/smoke.bmp")); 
    325          
     300         
     301        // Disable the GC 
    326302        logMemoryUsage(); 
    327303         
    328         // Disable the GC 
    329304        GC.collect(); 
    330305        GC.disable(); 
     
    378353            delete demoRecorder; 
    379354         
    380         sceneGraph.reset(); 
    381         MeshNode.memoryPool.release(); 
    382  
    383         delete particles; 
     355        graphics.release(); 
    384356 
    385357        GC.enable(); 
  • trunk/src/defend/game/hud/MiniMap.d

    r537 r544  
    7979         
    8080        sprite = new Sprite(texture, Rect(0, 0, width - 1, height - 1), true); 
    81         sprite.scaling = 128.0f / width
     81        sprite.scaling = vec2(128.0f / width, 128.0f / width)
    8282         
    8383        position = vec2i(renderer.width - 150, renderer.height - HUD_HEIGHT + 10); 
  • trunk/src/defend/objects/SceneNode.d

    r543 r544  
    1313import gen.rend.Texture; 
    1414import gen.rend.Renderer; 
     15import gen.rend.Framebuffer; 
    1516 
    1617import defend.Config; 
    1718import defend.terrain.Terrain; 
     19 
     20version = GlowTest; 
    1821 
    1922class GameObjectModel : SceneNode 
     
    7881private: 
    7982    GameObjectModel parent; 
    80  
    8183    Mesh mesh; 
    82      
    8384    CameraData shadowCamera; 
     85     
     86    version(GlowTest) Shader glowShader; 
    8487     
    8588    static int renderPassNormal; 
    8689    static int renderPassShadowMap; 
     90    version(GlowTest) static int renderPassGlow = -1; 
    8791     
    8892    static this() 
     
    154158        ); 
    155159    } 
    156      
     160 
    157161public: 
    158162    mixin MAllocator; 
    159163 
     164    static Framebuffer glowBuffer; 
     165 
    160166    this(GameObjectModel parent, Mesh mesh) 
    161167    { 
     
    166172         
    167173        shader = Shader.acquire("data/shaders/model.cfg"); 
     174        version(GlowTest) glowShader = Shader.acquire("data/shaders/modelglow.cfg"); 
    168175        texture = mesh.texture; 
    169176        renderShadow = true; 
     177         
     178        // get this out of here. 
     179        version(GlowTest) if(renderPassGlow == -1) 
     180        { 
     181            if(glowBuffer is null) 
     182                glowBuffer = renderer.createFramebuffer(vec2i(1024, 1024)); 
     183         
     184            renderPassGlow = sceneGraph.addRenderPass 
     185            ( 
     186                100, 
     187                 
     188                function(NodeHolder[] nodes, Camera camera) 
     189                { 
     190                    auto shader = Shader.acquire("data/shaders/modelglow.cfg"); 
     191                    renderer.setShader(shader); 
     192                }, 
     193                 
     194                function 
     195                { 
     196                    Shader.release(Shader.get("data/shaders/modelglow.cfg")); 
     197                    renderer.setShader(null); 
     198                     
     199                    renderer.setTexture(0, null); 
     200                }, 
     201                 
     202                -1, 
     203                 
     204                glowBuffer 
     205            ); 
     206        } 
    170207    } 
    171208     
     
    173210    { 
    174211        Shader.release(shader); 
     212        version(GlowTest) Shader.release(glowShader); 
    175213    } 
    176214     
    177215    override void process(Camera camera) 
    178216    { 
     217        version(GlowTest) 
     218        { 
     219            sceneGraph.addToRender(renderPassGlow, this, &renderGlow); 
     220            //return; 
     221        } 
     222     
    179223        if(!sceneGraph.cameraData.shadowMap) 
    180224            sceneGraph.addToRender(renderPassNormal, this, &renderNormal); 
     
    220264    } 
    221265 
     266    version(GlowTest) void renderGlow() 
     267    { 
     268        renderer.pushMatrix(); 
     269        renderer.mulMatrix(absoluteModelview); 
     270         
     271        renderer.setTexture(0, texture); 
     272         
     273        glowShader.setUniform("color", parent.color); 
     274        glowShader.setUniform("diffuseTexture", 0); 
     275         
     276        mesh.render(); 
     277         
     278        renderer.popMatrix();    
     279    } 
     280 
    222281    void renderDebug() 
    223282    { 
  • trunk/src/gen/gui/Window.d

    r541 r544  
    2121    void onMouseMove(MouseMoveEvent event) 
    2222    { 
     23        return; 
     24     
    2325        if(mouseDown) 
    2426            localPosition = localPosition + event.delta; 
     
    2729    void onMouseButton(MouseButtonEvent event) 
    2830    { 
     31        return; 
     32     
    2933        if(event.button == MouseButton.Left) 
    3034        { 
     
    117121        super.render(renderer); 
    118122     
    119         renderer.rect(globalRect, backgroundColor); 
     123        //renderer.rect(globalRect, backgroundColor); 
    120124         
    121125        if(font) 
  • trunk/src/gen/rend/Renderer.d

    r541 r544  
    386386     */ 
    387387    void setFramebuffer(Framebuffer framebuffer); 
     388    void unsetFramebuffer(Framebuffer framebuffer); 
    388389     
    389390    /** 
  • trunk/src/gen/rend/opengl/FBO.d

    r529 r544  
    1919    void bind() 
    2020    { 
     21        glPushAttrib(GL_VIEWPORT_BIT); 
     22        glViewport(0, 0, target.width, target.height); 
    2123        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, id); 
    2224    } 
    2325     
    24     static void unbind() 
     26    void unbind() 
    2527    { 
    2628        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 
     29        glPopAttrib(); 
    2730    } 
    2831 
     
    5457            } 
    5558         
     59            GLuint depthbuffer; 
     60            glGenRenderbuffersEXT(1, &depthbuffer); 
     61            glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer); 
     62            glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, texture.width, texture.height); 
     63            glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer); 
    5664            glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, format, GL_TEXTURE_2D, target.id, 0); 
     65         
     66            //glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, format, GL_TEXTURE_2D, target.id, 0); 
    5767        } 
    5868 
  • trunk/src/gen/rend/opengl/Renderer.d

    r542 r544  
    523523    } 
    524524     
    525     Framebuffer createFramebuffer(vec2i dimension, ImageFormat format = ImageFormat.RGB) 
     525    override Framebuffer createFramebuffer(vec2i dimension, ImageFormat format = ImageFormat.RGB) 
    526526    { 
    527527        logger.info("creating {}*{} framebuffer", dimension.x, dimension.y); 
     
    530530    } 
    531531     
    532     void setFramebuffer(Framebuffer framebuffer) 
    533     { 
    534         if(framebuffer is null) 
    535         { 
    536             FBO.unbind(); 
    537             return; 
    538         } 
    539              
     532    override void setFramebuffer(Framebuffer framebuffer) 
     533    { 
    540534        (cast(FBO)framebuffer).bind(); 
     535    } 
     536     
     537    override void unsetFramebuffer(Framebuffer framebuffer) 
     538    { 
     539        (cast(FBO)framebuffer).unbind(); 
    541540    } 
    542541     
  • trunk/src/gen/rend/opengl/Shader.d

    r541 r544  
    107107        glShaderSourceARB(result, T.length, strings.ptr, lengths.ptr); 
    108108        glCompileShaderARB(result); 
    109  
    110         checkError(result, GL_OBJECT_COMPILE_STATUS_ARB); 
    111109         
    112110        glAttachObjectARB(context, result); 
     111         
     112        checkError(result, GL_OBJECT_COMPILE_STATUS_ARB); 
    113113         
    114114        return result; 
  • trunk/src/gen/scene/Graph.d

    r543 r544  
    1818import gen.rend.Framebuffer; 
    1919import gen.rend.Texture; 
     20import gen.rend.opengl.Wrapper; 
    2021import gen.scene.Node; 
    2122import gen.scene.Camera; 
     
    6566    BufferedArray!(NodeHolder) nodes; 
    6667     
     68    Framebuffer framebuffer; // optionally 
     69     
    6770    void function(NodeHolder[], Camera) setup; 
    6871    void function() clean; 
     
    108111                      void function(NodeHolder[], Camera) setup, 
    109112                      void function() clean, 
    110                       int id = -1) 
     113                      int id = -1, 
     114                      Framebuffer framebuffer = null) 
    111115    out(result) 
    112116    { 
     
    137141        pass.setup = setup; 
    138142        pass.clean = clean; 
     143        pass.framebuffer = framebuffer; 
    139144         
    140145        renderPasses ~= pass; 
     
    382387            foreach(ref pass; renderPasses) 
    383388                pass.nodes.reset(); 
    384              
    385             if(cam.framebuffer !is null) 
    386                 renderer.setViewport(Rect(0, 0, cam.framebuffer.texture.width, 
    387                                                 cam.framebuffer.texture.height)); 
    388             else 
    389                 renderer.setViewport(Rect(0, 0, renderer.width, 
    390                                                 renderer.height));  
    391                                                  
    392             renderer.setFramebuffer(cam.framebuffer); 
    393  
    394             renderer.setClearColor(cam.clearColor); 
    395             renderer.clear(); 
    396              
     389 
    397390            // Let nodes register themselves to be rendered 
    398391            profile!("process") 
     
    406399 
    407400            // Go through all render passes 
    408             foreach(ref pass; renderPasses) with(pass) 
    409             { 
    410                 if(nodes.length
     401            for(uint i = 0; i <= 1; i++) // tmp 
     402            { 
     403                if(i == 0
    411404                { 
    412                     if(setup) 
    413                         setup(nodes.toArray, camera); 
     405                    if(cam.framebuffer) 
     406                    { 
     407                        renderer.setFramebuffer(cam.framebuffer); 
     408                        renderer.setClearColor(cam.clearColor); 
     409                        renderer.clear(); 
     410                    } 
     411                } 
     412             
     413                foreach(ref pass; renderPasses) with(pass) 
     414                { 
     415                    if(nodes.length) 
     416                    { 
     417                        if(i == 1) 
     418                        { 
     419                            if(framebuffer) 
     420                            { 
     421                                renderer.setFramebuffer(framebuffer); 
     422                                renderer.clear(); 
     423                            } 
     424                            else 
     425                                continue; 
     426                        } 
     427                        else if(framebuffer) 
     428                            continue; 
     429                     
     430                        if(setup) 
     431                            setup(nodes.toArray, camera); 
     432 
     433                        foreach(node; nodes) 
     434                        { 
     435                            if(node.render) 
     436                                node.render(); 
     437                            else 
     438                                node.node.render(); 
     439                        } 
    414440                         
    415                     foreach(node; nodes) 
    416                     { 
    417                         if(node.render) 
    418                             node.render(); 
    419                         else 
    420                             node.node.render(); 
     441                        if(clean) 
     442                            clean(); 
     443                             
     444                        if(framebuffer) 
     445                            renderer.unsetFramebuffer(framebuffer); 
    421446                    } 
    422                      
    423                     if(clean) 
    424                         clean(); 
    425447                } 
    426448            } 
     449 
     450            if(cam.framebuffer) 
     451                renderer.unsetFramebuffer(cam.framebuffer); 
    427452        } 
    428453    } 
  • trunk/src/gen/util/Sprite.d

    r532 r544  
    1515import gen.rend.VertexFormat; 
    1616 
    17 // will get removed very soon :P 
     17// will get removed very soon :P (not) 
    1818class Sprite 
    1919{ 
     
    2323    Rect area; 
    2424 
    25     float _scaling = 1.f
     25    vec2 _scaling = vec2.one
    2626 
    2727public: 
     
    3333    Rect rect() { return area; } 
    3434 
    35     void scaling(float s) { _scaling = s; } 
     35    void scaling(vec2 s) { _scaling = s; } 
    3636 
    3737    this(char[] file, bool reverse = false) 
     
    9494        renderer.pushMatrix(); 
    9595        renderer.translate(position.x, position.y, 0.0); 
    96         renderer.scale(_scaling); 
     96        renderer.scale(_scaling.tuple, 1); 
    9797         
    9898        render();