Changeset 513

Show
Ignore:
Timestamp:
04/13/08 08:40:40 (9 months ago)
Author:
LeoD
Message:

lighting game objects with the terrain lightmap

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/run/config.ini

    r440 r513  
    1616 
    1717# port for multiplayer 
    18 port=64344 
     18port=31337 
    1919 
    2020# number of threads for the thread pool (which isn't used yet) 
  • trunk/run/data/shaders/model.pixel.glsl

    r511 r513  
    1 uniform sampler2D texture; 
     1uniform sampler2D diffuseTexture; 
     2uniform sampler2D lightTexture; 
     3 
    24uniform vec3 color;  
    35 
    46void main() 
    57{ 
    6     vec4 tex = texture2D(texture, vec2(gl_TexCoord[0])); 
    7     gl_FragColor = vec4(tex.rgb * (tex.a) + color * (1 - tex.a), 1.0) * gl_Color; 
     8    vec4 tex = texture2D(diffuseTexture, vec2(gl_TexCoord[0])); 
     9    vec4 light = texture2D(lightTexture, vec2(gl_TexCoord[1])); 
     10     
     11    gl_FragColor = vec4(tex.rgb * tex.a + color * (1 - tex.a), 1.0) * gl_Color * (light * 2); 
    812} 
  • trunk/run/data/shaders/model.vertex.glsl

    r511 r513  
    11#define LIGHT_POSITION vec4(10.0, 10.0, 0.0, 1.0) 
    2 #define LIGHT_AMBIENT vec4(0.9, 0.9, 0.9, 1.0) 
     2#define LIGHT_AMBIENT vec4(2.0, 2.0, 2.0, 1.0) 
    33#define LIGHT_DIFFUSE vec4(1.0, 1.0, 1.0, 1.0) 
     4 
     5uniform vec3 mapPos; 
     6uniform vec3 mapSize; 
    47 
    58void main(void) 
    69{ 
    7     gl_Position = ftransform(); 
     10    vec4 worldPos = gl_ModelViewMatrix * gl_Vertex; 
     11    gl_Position = gl_ProjectionMatrix * worldPos; 
     12    //gl_Position = ftransform(); 
     13     
    814    gl_TexCoord[0] = gl_MultiTexCoord0; 
     15    gl_TexCoord[1] = vec4(mapPos.x / mapSize.x, -mapPos.z / mapSize.y, 0.0, 0.0); 
    916     
    1017    // Lighting 
  • trunk/src/defend/Main.d

    r512 r513  
    254254    } 
    255255     
    256     renderer.setClearColor(vec3(0)); 
    257      
    258256    scope(exit) 
    259257        delete renderer; 
  • trunk/src/defend/game/Game.d

    r512 r513  
    3838import defend.Map; 
    3939import defend.MapGenerator; 
     40import defend.MiniMap; 
    4041import defend.Loop; 
    4142import defend.com.Gateway; 
     
    9192    StaticCamera miniScreenCamera; 
    9293    Sprite miniScreenSprite; 
     94     
     95    MiniMap miniMap; 
    9396 
    9497    // Demo recorder 
     
    207210            sceneGraph.render(); 
    208211        }); 
    209          
    210         // tmp 
    211         { 
    212             glDisable(GL_LIGHTING); 
    213         } 
    214  
    215212        renderer.setMatrix(mainCamera.modelview, MatrixType.Modelview); 
    216213        renderer.setMatrix(mainCamera.projection, MatrixType.Projection); 
     
    227224            renderer.identity(); 
    228225            hud.render(); 
     226            miniMap.render(vec2i(renderer.width - 150, renderer.height - HUD_HEIGHT + 10)); 
    229227            renderer.setRenderState(RenderState.DepthTest, true); 
    230228        }); 
     
    268266    mainCamera = new MainCamera; 
    269267    mainCamera.projection = mat4.projection(aspect, fov, 1, 100); 
    270     sceneGraph.addCamera("main", mainCamera, vec3(0)); 
     268    sceneGraph.addCamera("main", mainCamera, vec3(0, 0, 0.2)); 
    271269 
    272270    logger.info("initializing communication"); 
     
    289287    particles = new ParticleSystemManager; 
    290288    particles.addSystem("smoke", new SmokeParticleSystem("data/textures/smoke.bmp")); 
    291  
    292     /+// Create some houses to start with <- fu 
    293     if(gateway.id == 0) 
    294         gateway.createObject("house", ObjectPos(32, 30)); 
    295     else if(gateway.id == 1) 
    296         gateway.createObject("house", ObjectPos(37, 30));+/ 
    297289     
    298290    logMemoryUsage(); 
     
    301293    GC.collect(); 
    302294    GC.disable(); 
     295     
     296    // Mini map 
     297    miniMap = new MiniMap; 
    303298     
    304299    // Initialize input 
     
    363358    delete hud; 
    364359    delete miniScreenSprite; 
     360    delete miniMap; 
    365361     
    366362    keyboard.remove(); 
  • trunk/src/defend/game/net/Server.d

    r512 r513  
    638638        phaseMutex = new Mutex(); 
    639639 
    640         listener = new ServerSocket(new InternetAddress("0.0.0.0", config.multiplayer.port)); 
     640        logger.info("creating server socket"); 
     641        listener = new ServerSocket(new InternetAddress("0.0.0.0", config.multiplayer.port) /*, 32, true*/); 
     642        logger.info("server socket created"); 
    641643 
    642644        logger.info("created on port {}", config.multiplayer.port); 
  • trunk/src/defend/objects/SceneNode.d

    r511 r513  
    11module defend.objects.SceneNode; 
    22 
     3import gen.util.Memory; 
    34import gen.math.Vector; 
    45import gen.math.BoundingBox; 
     
    1112import gen.rend.Texture; 
    1213import gen.rend.Renderer; 
     14 
     15import defend.terrain.Terrain; 
    1316 
    1417class GameObjectModel : SceneNode 
     
    3235     
    3336public: 
     37    mixin MAllocator; 
     38     
    3439    this(SceneNode parent, char[] file, vec3 color) 
    3540    { 
     
    7479     
    7580public: 
     81    mixin MAllocator; 
     82 
    7683    this(GameObjectModel parent, Mesh mesh) 
    7784    { 
     
    101108        renderer.setShader(shader); 
    102109        shader.setUniform("color", parent.color); 
     110        shader.setUniform("mapPos", absolutePosition); 
     111        shader.setUniform("mapSize", vec3(terrain.dimension.x, terrain.dimension.y, 0)); 
     112        shader.setUniform("diffuseTexture", 0); 
     113        shader.setUniform("lightTexture", 1); 
     114        renderer.setTexture(1, terrain.lightmapTexture); 
    103115         
    104116        mesh.render(); 
    105117 
    106118        renderer.popMatrix(); 
     119         
     120        renderer.setTexture(1, null); 
    107121    } 
    108122} 
  • trunk/src/defend/terrain/Terrain.d

    r511 r513  
    4949    void heightmap(TerrainHeightmap h) { _heightmap = h; } 
    5050 
    51     Texture lightmapTexture; 
    5251    Texture detailTexture; 
    5352 
     
    172171                 
    173172                vec3 normal = getNormalForImage(x, z, size); 
    174                 vec3 col = vec3(.1, 0.15, .3) * normal.y; // ambient 
     173                vec3 col = vec3(.15, 0.20, .35) * normal.y; // ambient 
    175174                 
    176175                if(!rayIntersection(ray)) 
     
    326325    mixin MAllocator; 
    327326 
     327    Texture lightmapTexture; // tmp public 
    328328    TerrainHeightmap heightmap() { return _heightmap; } 
    329329 
     
    446446     
    447447    void renderOrthogonal() // for mini map 
    448     {    
    449         renderer.setRenderState(RenderState.Blending, true); 
    450         renderer.setRenderState(RenderState.ZWrite, true); 
    451         //renderer.setRenderState(RenderState.BackfaceCulling, true); 
    452         renderer.setBlendFunc(BlendFunc.SrcAlpha, BlendFunc.OneMinusScrAlpha); 
    453          
    454         renderer.setTextureMode(1, TextureMode.Replace); 
    455         renderer.setTexture(2, lightmapTexture); 
    456  
    457         /*for(uint i = 0; i < alphaMaps.length; i++) 
    458         { 
    459             renderer.setTexture(0, alphaMaps[i]); 
    460             renderer.setTexture(1, diffuseMaps[i]); 
    461              
    462             foreach(patch; patches) 
    463                 patch.render(); 
    464         }*/ 
     448    { 
     449        renderer.setShader(shader); 
     450         
     451        renderer.setTexture(0, alphaMap); 
     452        renderer.setTexture(1, diffuseMaps[0]); 
     453        renderer.setTexture(2, diffuseMaps[1]); 
     454        renderer.setTexture(3, diffuseMaps[2]); 
     455        renderer.setTexture(4, lightmapTexture); 
     456         
     457        shader.setUniform("alpha", 0); 
     458        shader.setUniform("texture1", 1); 
     459        shader.setUniform("texture2", 2); 
     460        shader.setUniform("texture3", 3); 
     461        shader.setUniform("lightmap", 4); 
     462         
     463        foreach(patch; patches) 
     464            patch.render(); 
     465         
     466        renderer.setShader(null); 
    465467 
    466468        renderer.setTexture(3, null); 
  • trunk/src/gen/scene/Graph.d

    r511 r513  
    127127 
    128128        foreach(ref pass; data.renderPasses) 
    129             pass.create(1024); 
     129            pass.create(16); 
    130130 
    131131        cameras[name] = data; 
  • trunk/src/windefend.cbp

    r507 r513  
    105105        <Unit filename="defend\Map.d" /> 
    106106        <Unit filename="defend\MapGenerator.d" /> 
     107        <Unit filename="defend\MiniMap.d" /> 
    107108        <Unit filename="defend\Simulation.d" /> 
    108109        <Unit filename="defend\com\Gateway.d" /> 
     
    126127        <Unit filename="defend\objects\Effector.d" /> 
    127128        <Unit filename="defend\objects\Import.d" /> 
     129        <Unit filename="defend\objects\SceneNode.d" /> 
    128130        <Unit filename="defend\objects\civs\Neutral.d" /> 
    129131        <Unit filename="defend\objects\civs\Test.d" />