SSbump Generator 5.3 w/ CUDA
SSbump generator is a free GUI based program. The purpose of this program is to generate Self-Shadowed Bump Maps for VALVe's Source game engine. The program can generate normal maps, non-shadowed ssbump maps, or embed directional ambient occlusion into the image. However, if you only want to generate normal maps I have created another tool focused only on generating normal maps. It can be found here.
Height Map (Alpha Channel) + Normal Map
Generated SSbump Map with Ambient Occlusion
A Screenshot of the Program
All shadows generated with this tool will wrap around the image. Below is the same image generated above without the normal map repeated 9 times. (Just the Ambient Occlusion generated with a radius of 0.1)
A 512X512 pixel ssbump map with ambient occlusion in the game Garry's Mod. (Click on the image for a larger picture)
A 4096X2048 pixel ssbump map with ambient occlusion in the game Garry's Mod. (Click the Image for a larger picture)
Download Newest Version Here (Note: This runs on Windows XP, Vista, and Windows 7 32-bit and 64-bit. It has not been tested on any other operating systems)
Change Log Version 5.3 BUGFIX
- Fixed a bug that would cause errors to be thrown if "Generate All" was selected when there were images with "Normal Only" set for the generation type.
- I now use OpenMP to multithread the program, and as a result moved all the non-Windows form code into an external .dll
- Added "Additive" and "Modulate" blend modes to the normal map generator. The "Additive" blend mode is now the default.
- Slightly modified normal map generation.
- Changed the order that normal maps were blended to make more sense. Normal maps are now blended from the top layer down, so the blending settings on the top layer affect how it blends with the second layer, and the blending settings on the second layer affect how it blends witht the third, ect.
- Changed the normal map generator so that height maps of different sizes could be loaded and blended together, if the images are smaller than the first height map, then they will automatically tile.
- Fixed a bug that prevented the bilateral filter from being set below 1.0, it can now be disabled by setting it to 0.0
- Changed default parameters to so that they generate better AO.
- Changed to a 'better' random number generator.
- Modified "alpha" and "theta" sliders to allow 360 degree ray generation (This generates non-directional ambient occlusion)
- Added an option that will save the new blended height map when blending normals together.
- Modified the preview windows so that the preview images are loaded from RAM instead of the hard disk.
- Modified the post process window to dynamically generate a preview image.
- Removed the preview button from the post process window because it is now unnecessary.
- Removed the "Add Folder" button from the main menu because I felt that it was not extremely useful, and it was getting more and more difficult to generalize all the settings to all images in a folder.
- Modified the Normal Map Settings window to allow several different height maps to be blended together to create a normal map and new height map that is used in ssbump generation.
- Changed some button pictures to images that were easier to understand.
- Various other bug fixes and minor modifications.
Version 5.2 BUGFIX 2
- Fixed a bug introduced in the last bugfix that caused the alpha channel of 4 byte capable formats (ex. TGA) to become fully transparent after clicking the 'save' button in the post process window.
- A message box now appears after clicking the 'save' button in the post process window that confirms the success of the save.
Version 5.2 BUGFIX 1
- Fixed a bug that was causing errors in images when the 'save' button was used in the post process window. (All but the blue color channel was being destroyed)
- 8-bit images used to crash the program they no longer crash the program, but do not save correctly. For now 8-bit images cannot be loaded into the program.
- Added a Bilateral Filter option to the SSbump generator and Normal Map Generator.
- Modified GUI to have two different view modes 'simplified' and 'advanced'. Simplified is the default, and reduces the AO generation settings to three sliders. Advanced view will have all the sliders the previous versoin had.
- Fixed minor bugs.
- Added more options to the normal map generator.
- Fixed bug that prevented saving files from the post process window.
- Added more ssbump lighting methods.
- Modified ssbump generation code to prevent over brightening.
- Modified the AO generation code to be more memory efficient on the CPU and GPU.
- Updated GPU code to CUDA version 2.3
- Added a grayscale button for 'estimating' height maps from color images (Thanks to sgtSarge for writing the code.)
- Minor bug fixes
Version 5.0 BUGFIX #3
- Fixed a bug introduced by the first bugfix that caused the program to crash if the normal map generator was opened more than once after adding layers.
Version 5.0 BUGFIX #2
- Fixed a bug introduced by the previous bugfix that prevented the post processing window from loading the generated image if "Generated Selected" had been clicked.
Version 5.0 BUGFIX
- Fixed a bug that caused normal maps generated with a Gaussian blur to have a boarder of incorrect pixels.
- Redirected help to correct web page.
- Fixed a couple bugs that resulted in the loss of selection when exiting and reentering the normal map menu.
- Added an option that will allow fast access to the SourceForge web page to check for updates.
- Added a normal map generator.
- Redesigned User Interface to be more user friendly.
- Added support for 14 different file types.
- Licensed the program under the GPLv3 license.
- Rewrote CUDA SSbump and AO generation code.
- Added CUDA accelerated normal map generation.
- Moved CUDA code into a Dll file and allowed the GPU do handle more of the processing tasks.
- Added a few extra test tools that allow converting of normal maps to DuDv maps or base Specular maps.
- Converted smooth blurs into Gaussian blurs.
- Created a layer based system for blending normal map layers together to create 'bumpier' normal maps.
- Modified how the post process window looks.
- Added option to blend together ssbump and directional ambient occlusion in the post-processing window.
- Changed some default settings.
- Changed how the GPU settings look.
- Modified Status Bar.
- Fixed some bugs with previews.
- Added normal map menu.
- Added a preview window to the normal map menu.
- Moved options into a Settings window.
- Allowed the Disabling of Vertical and/or Horizontal tiling per image.
- Modified some background code in the post process window.
- Added an option that allows the user to select and generate a group of images from the image list. (Instead of generating all the images in the image list at once)
- Changed Image List Saving format. (NOTE: Previously saved image lists will no longer load.) This also prevents the accidental loading of a non-image list file.
Version 4.1 Bugfix
- Fixed a bug with the CUDA extention that prevented rendering images inside folders with spaces in the name.
- Decreased the amount of RAM used by the CUDA extension and the main program.
- Changed the layout of the GUI.
- Added a Post Processing visualizer.
- Fixed some minor bugs with CUDA error messages.
- Added more short cut keys.
- Changed default slider values.
Major Revision 4.0
- Fixed a couple of major bugs in the generator that were causing slow rendering times, and prevented the rendering of high ray count images.
- Comparison of new/old render times:
256X256 Image, Radius 0.1, Height Scale 0.03, Rays 1000 (Per color channel 3000 in total)
1 X CPU (2.5 GHz) 22.93 sec (CUDA 10X faster)
4 X CPU (2.5 GHz) 7.71 sec (CUDA 4X faster)
1 X 9800GTX GPU 2.808 secOld Version 3.1 Rendering Times
1 X CPU (2.5 GHz) 5:00 min 0% Complete. Stopped.
4 X CPU (2.5 GHz) 3:00 min 1% Complete. (Est. ~300 min)
1024X1024, Radius 0.3, Height Scale 0.2, Rays 300 (Per color channel 900 in total)
4 X CPU (2.5 GHz) 28:35.17 min (CUDA 15X faster)
1 X CPU (2.5 GHz) ~114:20.68 min (Est. ~4X 4 CPU Time)
1 X 9800GTX GPU 1:55.33 min Old Version 3.1 Rendering Times: N/A (Too Slow)
-Thanks to jenkins_08 from Interlopers.net for debugging/testing help.
- Added a CUDA extension that allows the use of NVIDIA Geforce 8000 series and newer GPUs to render the images. This offers a speed increase of around 10X - 60X compared to a single CPU. (Calculated using a GPU connected to a monitor display. May get better render times using an unused GPU)
- Added an option to allow/disallow recursive folder searching.
- Removed all older versions from the web.
-CUDA source code and tutorials Copyright ©1993-2007 NVIDIA Corporation
- Fixed minor bug with the status bar.
- Changed the way that the status bar is displayed.
- Cleaned up parts of the source code.
- Minor optimizations.
- Made more parts of the generation process multi-threaded.
- Added a GUI
- Added two brightness options. One for the height map and one for the final image.
- Fixed Bugs
- Optimized more
- Added a multi-threaded option for multi-processor computers.
- Added two contrast options. One for increasing the contrast of the height map and another for increasing the contrast of the final image.
- Added a smoothing option. One for smoothing the height map and another for smoothing the final image.
- Added an option for generating ssbumps without the normal map.
- Added an option to specify the minimum and maximum color values when calculating ambient occlusion.
-Thanks to MrTwoVideoCards from Interlopers.net
for the new option ideas.
-Thanks to Toli from the Paint.NET
forums for the smoothing code.
- Added ambient occlusion generation