Changeset 592
- Timestamp:
- 06/01/08 10:42:15 (7 months ago)
- Files:
-
- trunk/run/defend.cfg (modified) (1 diff)
- trunk/src/defend/Config.d (modified) (1 diff)
- trunk/src/defend/game/Game.d (modified) (3 diffs)
- trunk/src/defend/game/hud/MiniMap.d (modified) (3 diffs)
- trunk/src/defend/sim/obj/Unit.d (modified) (7 diffs)
- trunk/src/defend/terrain/Terrain.d (modified) (8 diffs)
- trunk/src/engine/rend/Renderer.d (modified) (1 diff)
- trunk/src/engine/rend/opengl/Renderer.d (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/run/defend.cfg
r548 r592 39 39 // object's team colors glow 40 40 objects_glow = 0 41 42 // use a shader for rendering the terrain? 43 terrain_use_shaders = 0 trunk/src/defend/Config.d
r583 r592 55 55 "int graphics.lighting;" 56 56 "int graphics.objects_lightmap;" 57 "int graphics.objects_glow;") 57 "int graphics.objects_glow;" 58 "int graphics.terrain_use_shaders;") 58 59 59 60 defendConfig; trunk/src/defend/game/Game.d
r590 r592 209 209 void logMemoryUsage() 210 210 { 211 logger.trace("manual memory usage {}b ({}kb), gc usage {}b ({}kb)", 212 getMemoryUsage(), 211 logger.trace("manual memory {}kb, gc {}kb, overall {}kb", 213 212 getMemoryUsage() / 1024, 214 gc_stats().usedsize ,215 gc_stats().usedsize/ 1024);213 gc_stats().usedsize / 1024, 214 (getMemoryUsage() + gc_stats().usedsize) / 1024); 216 215 } 217 216 … … 275 274 276 275 // Fog of war 277 fogOfWar = new FogOfWar(gameObjects, terrain.lightmapTexture, vec2i.from(terrain.dimension), true);276 fogOfWar = new FogOfWar(gameObjects, terrain.lightmapTexture, vec2i.from(terrain.dimension), false); 278 277 279 278 // Create the HUD … … 295 294 //dumpGCStats(); 296 295 297 sceneGraph.debugVisible = true;296 //sceneGraph.debugVisible = true; 298 297 299 298 taskManager.addRepeatedTask(&InputChannel.global.update, 100); trunk/src/defend/game/hud/MiniMap.d
r583 r592 3 3 import tango.io.Stdout; 4 4 5 import engine.util.Debug; 5 6 import engine.core.TaskManager; 6 7 import engine.image.Image; … … 107 108 renderer.setTexture(1, fogOfWar.texture); 108 109 110 int a, b; 111 glGetIntegerv(GL_BLEND_SRC, &a); 112 glGetIntegerv(GL_BLEND_DST, &b); 113 109 114 for(uint i = 0; i < 2; i++) 110 115 { … … 130 135 renderer.setTexture(0, null); 131 136 renderer.setTexture(1, null); 132 133 /+sprite.render(position);134 135 renderer.setBlendFunc(BlendFunc.DstColor, BlendFunc.OneMinusDstColor);136 sprite.render(position, fogOfWar.texture);+/137 137 138 138 renderer.setRenderState(RenderState.Blending, false); trunk/src/defend/sim/obj/Unit.d
r590 r592 402 402 bool considerObjects = false, bool isFinalGoal = true) 403 403 { 404 if(p == mapPos) 405 return; 406 404 407 pause = 0; 405 408 406 409 debug(gameobjects) 407 410 logger.trace("moving to [{}|{}] (order: {})", … … 426 429 if(path.length) 427 430 { 431 assert(path[$ - 1] == p); 432 428 433 if(!checkCollision(path[0])) 429 434 { … … 431 436 432 437 status = Status.Moving; 433 438 434 439 moveToPoint(path[0]); 435 440 … … 768 773 { 769 774 debug(gameobjects) 770 logger.spam("path finished ");771 775 logger.spam("path finished, reached {}", mapPos); 776 772 777 status = Status.Idle; 773 778 path = null; … … 778 783 { 779 784 debug(gameobjects) 780 logger.spam("moving to the final goal now");785 logger.spam("moving to the final goal ({}) now", finalGoal); 781 786 782 787 move(finalGoal, false, false, true); … … 793 798 path = path[1 .. $]; 794 799 moveToPoint(path[0]); 800 assert(mapPos == path[0]); 795 801 } 796 802 } … … 801 807 assert(percent >= 0.0f && percent <= 1.0f); 802 808 809 // interpolation 803 810 currentRealPos = lastWayPoint * (1.0 - percent) + nextWayPoint * percent; 804 //realPos = currentRealPos; 805 } 806 807 // interpolation 808 calcNextRealPos(); 811 calcNextRealPos(); 812 } 809 813 810 814 break; trunk/src/defend/terrain/Terrain.d
r589 r592 6 6 import derelict.opengl.extension.arb.multitexture; 7 7 8 import engine.util.Debug; 8 9 import engine.math.Ray; 9 10 import engine.math.Misc; … … 56 57 Texture[3] diffuseMaps; 57 58 Texture alphaMap; 59 Texture[3] alphaMaps; 58 60 59 61 Shader shader; … … 247 249 { 248 250 Image map = new Image(128, 128, ImageFormat.RGB); 249 251 250 252 foreach(i, diffuseMap; diffuseMaps) 251 253 { 254 Image alphaMap = new Image(128, 128, ImageFormat.A); 255 252 256 for(uint x = 0; x < map.width; x++) 253 257 { … … 255 259 { 256 260 auto height = getHeightForImage(x, y, 128); 257 258 map.setByte(x, y, i, 259 ((height >= terrainMinRange[i] && 260 height <= terrainMaxRange[i]) ? 255 : 0)); 261 auto value = ((height >= terrainMinRange[i] && 262 height <= terrainMaxRange[i]) ? 255 : 0); 263 264 map.setByte(x, y, i, value); 265 alphaMap.setAlpha(x, y, value); 261 266 } 262 267 } 268 269 alphaMaps[i] = renderer.createTexture(alphaMap); 263 270 } 264 271 … … 329 336 mixin MAllocator; 330 337 331 Texture lightmapTexture; // tmp public338 Texture lightmapTexture; 332 339 TerrainHeightmap heightmap() { return _heightmap; } 333 340 … … 381 388 override void process(Camera camera) 382 389 { 383 sceneGraph.addToRender(RenderPass.Solid, this); 390 if(defendConfig.graphics.terrain_use_shaders) 391 sceneGraph.addToRender(RenderPass.Solid, this); 392 else 393 sceneGraph.addToRender(RenderPass.Solid, this, &renderNoShaders); 394 395 debug if(sceneGraph.debugNodeVisible(this)) 396 sceneGraph.addToRender(RenderPass.Debug, this, &renderDebug); 384 397 } 385 398 … … 429 442 renderer.setTexture(1, null); 430 443 renderer.setTexture(0, null); 431 432 debug if(sceneGraph.debugNodeVisible(this))433 {434 //foreach(patch; patches) if(patch.visible)435 // renderer.drawBoundingBox(patch.boundingBox, vec3(0, 0.7, 1));436 437 renderer.setRenderState(RenderState.Wireframe, true);438 renderer.setRenderState(RenderState.Blending, true);439 renderer.setColor(vec4(1, 1, 1, 0.5));440 441 renderer.translate(0, 0.1, 0);442 443 foreach(patch; patches)444 if(patch.visible) patch.render();445 446 renderer.setRenderState(RenderState.Blending, false);447 renderer.setRenderState(RenderState.Wireframe, false);448 449 version(none) for(uint x = 0; x < dimension.x; x++)450 {451 for(uint y = 0; y < dimension.y; y++)452 {453 auto visible = fogOfWar.isVisible(x, y);454 455 if(visible)456 {457 auto pos = getWorldPos(x, y);458 renderer.drawLine(pos, pos + vec3(0, 0.1, 0), vec3(1, 0, 0));459 }460 }461 }462 }463 444 464 445 renderer.popMatrix(); … … 467 448 renderer.setRenderState(RenderState.BackfaceCulling, false); 468 449 }); 450 } 451 452 void renderNoShaders() 453 { 454 profile!("terrain render") 455 ({ 456 renderer.pushMatrix(); 457 renderer.mulMatrix(absoluteModelview); 458 459 renderer.setRenderState(RenderState.Blending, false); 460 renderer.setRenderState(RenderState.BackfaceCulling, true); 461 462 renderer.setBlendFunc(BlendFunc.SrcAlpha, BlendFunc.OneMinusSrcAlpha); 463 //renderer.setBlendFunc(BlendFunc.SrcAlpha, BlendFunc.One); 464 465 renderer.setTexture(3, null); 466 renderer.setTexture(2, null); 467 renderer.setTexture(1, null); 468 renderer.setTexture(0, null); 469 470 //renderer.setTextureMode(1, TextureMode.Replace); 471 //renderer.setTexture(2, fogOfWar.texture); 472 473 uint k = 0; 474 475 void renderPatches() 476 { 477 /+for(uint i_ = 0; i_ < alphaMaps.length * 2; i_++) 478 { 479 int i = i_ / 2; 480 481 if(i_ & 1) 482 renderer.setBlendFunc(BlendFunc.SrcAlpha, BlendFunc.One); 483 else 484 renderer.setBlendFunc(BlendFunc.SrcAlpha, BlendFunc.OneMinusSrcAlpha); 485 486 renderer.setTexture(0, alphaMaps[1]); 487 renderer.setTexture(1, diffuseMaps[1]); 488 489 foreach(patch; patches) 490 { 491 if(patch.visible //&& 492 /+ patch.maxHeight[i] != -10_000 && 493 patch.minHeight[i] != 10_000 && 494 patch.maxHeight[i] >= terrainMinRange[i] && 495 patch.maxHeight[i] <= terrainMaxRange[i]+/) 496 { 497 patch.render(); 498 k++; 499 } 500 } 501 }+/ 502 503 renderer.setTexture(0, alphaMaps[1]); 504 renderer.setTexture(1, diffuseMaps[1]); 505 506 foreach(patch; patches) patch.render(); 507 508 renderer.setTexture(0, alphaMaps[0]); 509 renderer.setTexture(1, diffuseMaps[0]); 510 511 foreach(patch; patches) patch.render(); 512 } 513 514 renderPatches(); 515 516 renderer.setTexture(3, null); 517 renderer.setTexture(2, null); 518 renderer.setTexture(1, null); 519 renderer.setTexture(0, null); 520 521 renderer.popMatrix(); 522 523 //renderer.setRenderState(RenderState.Blending, false); 524 renderer.setRenderState(RenderState.BackfaceCulling, false); 525 }); 526 } 527 528 debug void renderDebug() 529 { 530 //foreach(patch; patches) if(patch.visible) 531 // renderer.drawBoundingBox(patch.boundingBox, vec3(0, 0.7, 1)); 532 533 renderer.setRenderState(RenderState.Wireframe, true); 534 renderer.setRenderState(RenderState.Blending, true); 535 renderer.setColor(vec4(1, 1, 1, 0.5)); 536 537 renderer.translate(0, 0.1, 0); 538 539 foreach(patch; patches) 540 if(patch.visible) patch.render(); 541 542 renderer.setRenderState(RenderState.Blending, false); 543 renderer.setRenderState(RenderState.Wireframe, false); 544 545 version(none) for(uint x = 0; x < dimension.x; x++) 546 { 547 for(uint y = 0; y < dimension.y; y++) 548 { 549 auto visible = fogOfWar.isVisible(x, y); 550 551 if(visible) 552 { 553 auto pos = getWorldPos(x, y); 554 renderer.drawLine(pos, pos + vec3(0, 0.1, 0), vec3(1, 0, 0)); 555 } 556 } 557 } 469 558 } 470 559 trunk/src/engine/rend/Renderer.d
r583 r592 106 106 Zero, 107 107 One, 108 SrcColor, 109 OneMinusSrcColor, 108 110 DstColor, 109 111 OneMinusDstColor, trunk/src/engine/rend/opengl/Renderer.d
r583 r592 79 79 blendFuncMap[BlendFunc.Zero] = GL_ZERO; 80 80 blendFuncMap[BlendFunc.One] = GL_ONE; 81 blendFuncMap[BlendFunc.SrcColor] = GL_SRC_COLOR; 82 blendFuncMap[BlendFunc.OneMinusSrcColor] = GL_ONE_MINUS_SRC_COLOR; 81 83 blendFuncMap[BlendFunc.DstColor] = GL_DST_COLOR; 82 84 blendFuncMap[BlendFunc.OneMinusDstColor] = GL_ONE_MINUS_DST_COLOR; … … 262 264 setRenderState(RenderState.DepthTest, true); 263 265 setRenderState(RenderState.Texture, true); 264 glDepthFunc(GL_LE SS);266 glDepthFunc(GL_LEQUAL); 265 267 } 266 268
