Created by kaputtnik and last modified
Get this branch:
bzr branch lp:~widelands-dev/widelands/cricket_frog_sounds
Members of Widelands Developers can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Widelands Developers

Recent revisions

7718. By kaputtnik

merged with trunk

7717. By kaputtnik

added soundfiles

7716. By kaputtnik

added cricket and frog sounds

7715. By Tino

- added two missing dlls
- added missing scripting directory

7714. By Tino

update without confirm

7713. By SirVer

Selecting long, long way crashed the font renderer.

7712. By Tino

- switch msys2 repositories
- ninja already installed

7711. By Wideland's Bunnybot <email address hidden>

Merged lp:~widelands-dev/widelands/fix_zip_filesystem:
Use std::shared_ptr to properly share zip files between classes.

ZipFilesystem, any child filesystems created by make_sub_file_system, and any ZipStream[Write|Read] created from such a filesystem access the same physical zip file and corresponding state. If one wrote while the other read, the outcome was undefined.

This changes the code to move the zip file abstraction into a wrapper class that properly reopens files for the correct access.

This also get's rid of the improper (and deprecated) use of the implicit copy constructor - the state was copied, but not properly shared before.

7710. By Wideland's Bunnybot <email address hidden>

Merged lp:~widelands-dev/widelands/png_fix_only_relevant:
Fixing warning "known incorrect sRGB profile" only to the files which are causing this warning.

Finding images with wrong profile:

find -name '*.png' -exec pngfix -q -w {} \;

pngfix is part of libpng.

Corrections could be done with imagmagicks convert program:

convert path/to/input.png path/to/output.png

Where input.png and output.png the same image is.

7709. By Wideland's Bunnybot <email address hidden>

Merged lp:~widelands-dev/widelands/use_image_cache:
- Build a texture atlas with the most commonly used images on startup.
- Mild refactorings in the graphic initialization.
- Add a caching mechanism to remember OpenGL state like bound textures, framebuffers, and so on. Use this to avoid unneeded calls into the driver.
- Combine all different blit programs into one and use a if in the fragment shader. This allows for more batching, taking load from the CPU and transferring it to the GPU.
- Apply suggestion by nha: Recreate buffers on the GPU on each frame instead of trying to reuse the memory.

These are the improvements that this buys: All benchmarks where run at 60 FPS, 3440x1440 resolution & fullscreen, on a map with lots of buildings, lots of textures on the screen, lots of different map objects. The game was paused, so that no logic code ate CPU. Census & statistics were disabled since they do not benefit from the texture atlas at all.

pre renderqueue (revision 7691): ~90% CPU load, 41000 OpenGL calls per frame.
post renderqueue (revision 7695): ~65% CPU load, 18300 OpenGL calls per frame.
This commit: 28% CPU load, 3000 OpenGL calls per frame.

An experimental version that loaded every image in Widelands into one 16kx16k texture atlas (1 GB of GPU RAMs was needed): 18% CPU load, 209 OpenGL calls. This proved unsustainable for most GPUs so it was dropped again.

Worst to best rendering now only takes 32% CPU and 8% GL calls of what it used to.

Possible improvements: The atlas creating could also compress the images by finding unchanging areas in animation. This would drastically reduce the size of the atlas and the use of GPU memory. This is described in bug 1121982. I am not motivated to work on this now though and I only consider it a nice to have.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.