Announcement

Collapse
No announcement yet.

Better settings for the Heaven 4.0 benchmark

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Better settings for the Heaven 4.0 benchmark

    (edit / TLDR): Antialiasing is disabled on Openbenchmarking (but it shouldn't be), and also Tessellation:Normal is used instead of Tessellation:Extreme.

    As I have said in another thread, I have noticed a problem with the Heaven 4.0 benchmark on openbenchmarking.org .

    The benchmark settings that openbenchmarking.org is using are non-standard, non-comparable to other results on the Internet, and those settings do not produce "sufficiently fair" results across architectures and generations of GPUs. There also a few other issues. I really like the Heaven benchmark otherwise, so I thought I could help there.

    Here I give better settings for the Heaven 4.0 benchmark, for anyone who would like to use them.

    "Heaven 4.0 Extreme FHD" setting is the most widely used one on the Internet, with results on multiple websites; it is what "people want" to test. Note that this is a non-standard setting, it matches the "Extreme" preset, but uses a higher resolution.
    Code:
    Name:          Heaven 4.0 Extreme FHD (1920x1080)
    APIs:          DirectX 11 or OpenGL
    Settings:      1920x1080, Quality:Ultra, Tessellation:Extreme, 8xAA
    GPU memory requirements:    1120 MB,  plus approx. 130 MB for a 3D-accelerated desktop compositor
    Command line:
    ./heaven_x64 -project_name "Heaven" -data_path "../" -engine_config "../data/heaven_4.0.cfg" -system_script "heaven/unigine.cpp" -sound_app null -video_app opengl -video_multisample 3 -video_fullscreen 0 -video_mode 6  -video_vsync 0  -extern_define ",RELEASE,LANGUAGE_EN,QUALITY_ULTRA,TESSELLATION_EXTREME" -extern_plugin ",GPUMonitor"
    Code:
    Name:          Heaven 4.0 Preset Extreme (1600x900)
    Note:          this is a standard preset from the benchmark
    APIs:          DirectX 11 or OpenGL (DirectX 11 is preset standard on Windows, OpenGL on Linux)
    Settings:      1600x900, Quality:Ultra, Tessellation:Extreme, 8xAA
    GPU memory requirements:    970 MB,  plus approx. 130 MB for a 3D-accelerated desktop compositor
    Command line:
    ./heaven_x64 -project_name "Heaven" -data_path "../" -engine_config "../data/heaven_4.0.cfg" -system_script "heaven/unigine.cpp" -sound_app null -video_app opengl -video_multisample 3 -video_fullscreen 0 -video_mode 5  -video_vsync 0  -extern_define ",RELEASE,LANGUAGE_EN,QUALITY_ULTRA,TESSELLATION_EXTREME" -extern_plugin ",GPUMonitor"

    A few notes/comments/instructions:

    - The command line executes a 64-bit version of Heaven. To execute a 32-bit version (it produces the same results) , replace ./heaven_x64" with ./heaven_x86; also you will probably need to set: export LD_LIBRARY_PATH=./x86:$LD_LIBRARY_PATH

    - "windowed" mode is used instead of "fullscreen". This is important for several reasons. First, when using "fullscreen", Heaven benchmark may automatically switch to a lower or higher resolution if the requested resolution is unavailable. Second, it allows for benchmarking even some resolutions above the monitor's native resolution. Finally, the results are usually identical (or very close) to the "fullscreen" mode.

    - sound is set to null (I think it is more appropriate that way), but the results are no different when sound is enabled.

    - extern_plugin ",GPUMonitor" -- this can also be ommited. Users usually like it, so I suggest keeping it.

    - in the given command lines, renderer is set to OpenGL; adjust as required (opengl / direct3d9 / direct3d11)

    - There are three APIs that Heaven 4.0 can use on Windows: DirectX 11, DirectX 9, and OpenGL. Those settings are also valid for WinE translation.

    - There is a native Heaven 4.0 benchmark for Linux, I suspect that it produces up to 5% higher scores on most video cards. The native Heaven benchmark should be included, and all 7 versions of Heaven should be clearly disambiguated: LinuxNative64/OpenGL, WinE/OpenGL, WinE/D3D11, WinE/D3D9, Windows/OpenGL, Windows/D3D11, Windows/D3D9. The difference between LinuxNative64/OpenGL and Windows/OpenGL is sometimes minor (if the drivers are good), and sometimes huge. The difference between Windows/OpenGL and Windows/D3D11 ranges from 0% to 7% better results for D3D11.

    - If multiple runs of Heaven are performed, the best one should be selected as the correct result. The slower runs can only be a result of anomalies, for example if some other application is running in the background. When there are no other applications running, then the results of Heaven are quite consistent, and there is virtually no need to perform multiple runs. Another possible reason for getting a lower result is if the GPU is too hot at the start, but in most cases Heaven does not cause the GPU to exceed the temperature limits (except maybe on some laptops).

    - (note for users) About GPU memory requirements: If more GPU memory is available than required, it will not affect the final score in any way; most new GPUs have plenty of RAM for running Heaven. To lower the memory requirements (for old GPUs with 1 GB memory or less), disable the 3D accelerated "Aero" compositor on Windows. On Linux, use a CPU-based compositor (like Xfce). Heaven does not tolerate too small amounts of video memory; the framerate decreases drastically with just a 1% reduction in available video RAM. DirectX renderers will use 6% less memory than specified; native OpenGL renderer matches the specified value.

    Code:
    Name:          Heaven 4.0 Preset Basic (1280x720)
    Note:          this is a standard preset from the benchmark
    APIs:          All APIs, but D3D9 is the standard in the preset, OpenGL is standard on Linux
    Settings:      1280x720, Quality:Medium, Tessellation:Disabled, 2xAA
    GPU memory requirements:    600 MB,  plus approx. 130 MB for a 3D-accelerated desktop compositor
    Command line:
    ./heaven_x64  -project_name "Heaven"  -data_path "../"  -engine_config "../data/heaven_4.0.cfg" -system_script "heaven/unigine.cpp"  -sound_app null  -video_app opengl  -video_multisample 1 -video_fullscreen 0  -video_mode 3  -video_vsync 0  -extern_define ",RELEASE,LANGUAGE_EN,QUALITY_MEDIUM,TESSELLATION_DISABLED" -extern_plugin ",GPUMonitor"
    Code:
    Name:           Heaven 4.0 Low (1024x576)
    Note:           this setting is for old GPUs with less than 512 MB of video-RAM.
    APIs:           All, but D3D9 or OpenGL is recommended for compatibility reasons
    Settings:       1024x576, Quality:Low, Tessellation:Disabled, AA off
    GPU memory requirements:   295 MB,  plus approx. 130 MB for a 3D-accelerated desktop compositor
    Command line:
    ./heaven_x64  -project_name "Heaven"  -data_path "../"  -engine_config "../data/heaven_4.0.cfg" -system_script "heaven/unigine.cpp"  -sound_app null  -video_app opengl  -video_multisample 0 -video_fullscreen 0  -video_mode 2  -video_vsync 0  -extern_define ",RELEASE,LANGUAGE_EN,QUALITY_LOW,TESSELLATION_DISABLED" -extern_plugin ",GPUMonitor"

    Somewhat related note: the difference in scores between cards of the same manufacturer (i.e. ASUS, MSI, Sapphire, etc...) with the same GPU depend on the clock setting, and are usually not much different than differences between manufacturers. So I suggest that the manufacturer name should be removed when aggregating the results (i.e. agregate based on the GPU only, not based on manufacturer and GPU). That should result in more reliable results, for more different GPUs.


    Perhaps I will also write some additional info about the Heaven benchmark for the users, if I get some spare time.​
    Last edited by drastic; 22 October 2023, 07:37 PM.

  • #2
    Additional notes:
    - if you want the sound, use "openal" instead of null in the command line
    - if you want DirectX 11 instead of OpenGL, use direct3d11 in the command line instead of opengl
    - the command should be executed from the "bin" subdirectory, where file heaven_x64 is located

    Comment


    • #3
      Here is another command line, for easily testing 512 MB video cards (like Geforce GT 440). I tried to enable as many options as possible, while still keeping within the 512 MB limit.

      Code:
      Name:           Heaven 4.0 512 MB (1024x768)
      Note:           tries to stay within the 512 MB limit
      APIs:           DirectX 11 or OpenGL
      Settings:       1024x768, Quality:Low, Tessellation: Normal, 4xAA
      GPU memory requirements:   371 MB,   plus approx. 130 MB for a 3D-accelerated desktop compositor
      Command line:
      ./heaven_x64 -project_name "Heaven" -data_path "../" -engine_config "../data/heaven_4.0.cfg" -system_script "heaven/unigine.cpp" -sound_app null -video_app opengl -video_multisample 2 -video_fullscreen 0 -video_mode 18 -video_vsync 0  -extern_define ",RELEASE,LANGUAGE_EN,QUALITY_LOW,TESSELLATION_NORMAL" -extern_plugin ",GPUMonitor"
      
      ​
      Last edited by drastic; 22 October 2023, 07:48 PM.

      Comment


      • #4
        For anyone wondering why is it important to stay within Heaven's memory limits? It's because Heaven is basically testing the pure GPU processing power. If there is insufficient video memory, then the result will not reflect the "pure processing power" concept (i.e. the result will depend on the amount of installed video RAM, and the CPU-GPU texture swapping speed).

        Testing GPU speed is analogous to testing CPU speed: when you do the testing, the amount of RAM shouldn't affect the results; the amount of RAM is a different concern (not the same as speed), with different consequences.
        Last edited by drastic; 07 October 2023, 10:56 AM.

        Comment


        • #5
          Originally posted by drastic View Post
          For anyone wondering why is it important to stay within Heaven's memory limits? It's because Heaven is basically testing the pure GPU processing power. If there is insufficient video memory, then the result will not reflect the "pure processing power" concept (i.e. the result will depend on the amount of installed video RAM, and the CPU-GPU texture swapping speed).

          Testing GPU speed is analogous to testing CPU speed: when you do the testing, the amount of RAM shouldn't affect the results; the amount of RAM is a different concern (not the same as speed), with different consequences.
          Awesome! Have you uploaded this as a separate test? I'm not sure how it works for you to be a maintainer but it sounds like you are most of the way there!

          Otherwise, do you have a link to some benchmarks so we can run the test based on those settings?

          Any other optimized tests youve been working on?

          Comment


          • #6
            Originally posted by Eirikr1848 View Post
            Awesome! Have you uploaded this as a separate test? I'm not sure how it works for you to be a maintainer but it sounds like you are most of the way there!
            Otherwise, do you have a link to some benchmarks so we can run the test based on those settings?
            Any other optimized tests youve been working on?
            I don't have the Phoronix test suite downloaded. I'm testing Heaven on an air-gapped machine (security, you know...), so no Internet connections allowed.

            I have tried over 50 different command lines for Heaven on several GPUs. I have definitively found some improvements compared to the Phoronix suite. Also found many issues.

            Here are some notes:

            a) I got several anomalous results, and I'm suspecting it is due to Vsync getting enabled. Use the option:
            -video_vsync 0
            to guarantee that vsync is disabled.

            b) use the option
            -console_command "render_occlusion 1 && render_refraction 1 && render_volumetric 1 && render_restart"
            to guarantee that proper options are set

            c) use the option
            -video_multisample X
            to set antialiasing level (X: 0 = 0xAA, 3 = 8xAA)

            d) I think that on Windows, if Aero is disabled AND Heaven is run windowed, some anomalous results may appear, but I guess that such combination is rare.

            e) I got memory requrements tabulated. Heaven 4.0 starts from minimum 260 MB VRAM (720p, 0xAA, quality low, no tess.).

            f) Heaven 3.0 is also usefull. Starts from minimum 204 MB VRAM.
            - it is generally slower than Heaven 4.0 (about 20% for comparable settings)
            - more command line options are available: texture quality, shaders, filter, anisotropy can all be set separately.
            - requires approx. 50 MB VRAM less than Heaven 4.0 to run

            g) I'm now also testing Tropics 1.3. Lots of options available, but also many problems. Tropics starts at minimum 170 MB VRAM.

            -------------- Heaven 4.0 quality settings ---------------------------------------------

            Code:
                                  Occlusion  AA   Anisotropy      Filter     Shaders    Textures (volumetric ON)
                   Quality Low:       off   0=off    1=2x      0=bilinear     0=low      1=med    refraction off
                   Quality Med:       on    1=2x     2=4x      1=trilinear    1=med      2=high   refraction on
                   Quality High:      on    3=8x     4=16x     1=trilinear    2=high     2=high
                   Quality Ultra:       !!! all the same as High !!!                             (volumetric ON)​​

            Comment


            • #7
              BTW, the reason why Heaven (whether 4.0 or 3.0) is the benchmark of choice is that it is entirely GPU-bound; it essentially tests the GPU "speed" (more precisely, photorealistic rendering speed, without raytracing). The results are applicable to a wide variety of use-cases, and the results are consistent accross many generations of GPUs, ranging at least a decade back, and still valid. A sentence from the developer:

              "Accurate results due to 100% GPU-bound benchmarking"

              Comment


              • #8
                Tropics 1.3 is also a good benchmark if you know how to use it. On Windows, use the DirectX 9 renderer. Other renderers on Windows are terrible. On Linux, OpenGL results are generally comparable to DirectX 9.

                Also, the tropics.zip / tropics.cpp gets compiled at runtime, so Tropics has ultimate configurability.

                However, I'm stuck with a problem: the Linux version of Tropics has some stupid FPS limiter which limits the rendering speed to 60 FPS. If someone knows how to turn it off (or whether it is even possible to turn it off), I'll be glad to hear.
                Last edited by drastic; 15 October 2023, 12:41 AM.

                Comment


                • #9
                  I have been analyzing the differences between Tropics 1.3 and Heaven 3.0.

                  Heaven 3.0 has virtually the same amount of options as Tropics 1.3 (plus tesselation), and it also suffers from the 60 FPS frame limiter on Linux.

                  Tropics 1.3 works on Ubuntu, but not on Debian. Heaven 3.0 doesn't work correctly on either one.

                  Tropics 1.3 is smaller, starts faster, has twice the framerate for comparable settings, and completes faster. The disadvantages are: the FPS limiter on Linux, lack of tesselation, and, on Windows, only the DirectX 9 renderer works well.
                  Last edited by drastic; 22 October 2023, 07:45 PM.

                  Comment


                  • #10
                    It just dawned on me that the "Unigine Tropics 1.3" test on Openbenchmarking is essentialy broken due to following resons:

                    (results at: https://openbenchmarking.org/test/pt...-tropics-1.6.4
                    which lists the obviously incorrect results for the fastest 12 GPUs )

                    - uses the "wrong" renderer on Windows (OpenGL instead of DirectX 9)
                    (the OpenGL renderer on WIndows produces sub-par framerates)

                    - the Linux version of the test should be dissalowed due to the FPS limiter affecting the results.

                    The command line at https://openbenchmarking.org/innhold...55f5baa2554260
                    (from pts/unigine-tropics-1.6.4 - 27 February 2018 )
                    (from files install_windows.sh test-definition.xml )

                    Tropics.exe -video_app opengl -data_path ./ -sound_app null -engine_config data/unigine.cfg -system_script tropics/unigine.cpp -video_mode -1 -extern_define PHORONIX -video_width 1920 -video_height 1080 -video_fullscreen 1

                    - starts Tropics in OpenGL mode
                    - uses 397 MB video RAM (with 3D desktop compositor disabled)
                    - other settings: Anisotropy 4x, Anti-aliasing off, everything else maxed out

                    It is a shame since Tropics 1.3 actually produces quite sensible results on Windows when DirectX 9 renderer is used.

                    Comment

                    Working...
                    X