1. Forums
  2. Discord
  3. About Mapcore
  4. Patreon Supporters
  • Login
  • Register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • More Options
  1. Mapcore
  2. Discussions
  3. Level Design

Hammer Map Visleaf Optimization Questions

  • MrSkellyBones
  • August 5, 2013 at 6:01 AM
  • MrSkellyBones
    • August 5, 2013 at 6:01 AM
    • #1

    Recently, while working on my map I compiled and noted a frame rate drop while exiting my CT spawn to Mid-A side of the map. After turning on mat_wireframe 1 I noted the map appears to be drawing nearly in it's entirety regardless of my position on it. From Mid I could see nearly all of B was being drawn despite a wall blocking view of the visleafs there, a skybox separating the two zones and a hint brush cuttings the ceiling in such a way as there's no chance I'm seeing leaves above that side of the map.


    I know this is something I should be able to solve with hint brushes but I'm not experienced with then enough and I can't figure out exactly where they should be placed. This is really hurting my map's performance. Are there any advanced resources or tutorials out there that might give me some insight on what's going on? Most of my walls are func-details because of the cuts for texturing, then they have with a solid block behind them for cutting the visleafs. Is this an incorrect way of going about this or have I screwed up something else entirely?


    Some Pic's in the spoiler

    Quote

    Here you can see right before the performance hit happens, all of the actual B Site is not being drawn.

    [Blocked Image: http://i.imgur.com/DW5FL3Q.jpg]


    Moving up mid a little bit causes all of it to suddenly render.

    [Blocked Image: http://i.imgur.com/sMyS8F5.jpg]


    Most of the rest of the map is also rendered.

    [Blocked Image: http://i.imgur.com/2Qq4Ou8.jpg]


    Here's the hint brush cutting through the B site. You can see it's well below the buildings opposite of mid. There's only a hint texture on the one plane, the others all have skips on them. The Brush was created by grabbing, cloning and retexturing the skybox celing group.

    [Blocked Image: http://i.imgur.com/NWfmUGYh.jpg]

    Display More


    All assistance offered is greatly appreciated. This is driving me nuts.


    Edit. Compile code. The viscluster bit.

    1157 portalclusters
    3409 numportals
    BasePortalVis: 0...1...2...3...4...5...6...7...8...9...10 (0)
    Optimized: 36157 visible clusters (0.00%)
    Total clusters visible: 1121668
    Average clusters visible: 969
    Building PAS...
    Average clusters audible: 1155
    visdatasize:341573 compressed from 351728

    Code
    -------------------------------------------------------------------------------
    Running command: cd "D:SteamsteamappscommonCounter-Strike Global Offensiveb
    in"
    -------------------------------------------------------------------------------
    
    
    
    
    -------------------------------------------------------------------------------
    Running command: "D:SteamsteamappscommonCounter-Strike Global Offensivebin
    vbsp.exe" -game "D:SteamsteamappscommonCounter-Strike Global Offensivecsgo"
     "D:SteamsteamappscommonCounter-Strike Global Offensivesdk_contentmapsNew
     folderde_sake_066a.vmf"
    -------------------------------------------------------------------------------
    
    
    Valve Software - vbsp.exe (May 20 2013)
    4 threads
    materialPath: D:SteamsteamappscommonCounter-Strike Global Offensivecsgomat
    erials
    Loading D:SteamsteamappscommonCounter-Strike Global Offensivesdk_contentma
    psNew folderde_sake_066a.vmf
    Map revision 787
    ConVarRef gpu_level doesn't point to an existing ConVar
    Patching WVT material: maps/de_sake_066a/dev/dev_blendmeasure2_wvt_patch
    Patching WVT material: maps/de_sake_066a/dev/dev_blendmeasure_wvt_patch
    fixing up env_cubemap materials on brush sides...
    ProcessBlock_Thread: 0...1...2...3...4...5...6...7...8...9...10 (0)
    ProcessBlock_Thread: 0...1...2...3...4...5...6...7...8...9...10 (0)
    Processing areas...done (0)
    Building Faces...done (0)
    Chop Details...done (0)
    Find Visible Detail Sides...
    Merged 620 detail faces...done (0)
    Merging details...done (0)
    FixTjuncs...
    PruneNodes...
    WriteBSP...
    NODRAW on terrain surface!
    done (0)
    writing D:SteamsteamappscommonCounter-Strike Global Offensivesdk_contentma
    psNew folderde_sake_066a.prt...Building visibility clusters...
    done (0)
    Finding displacement neighbors...
    Finding lightmap sample positions...
    Displacement Alpha : 0...1...2...3...4...5...6...7...8...9...10
    Building Physics collision data...
    done (1) (494583 bytes)
    Placing detail props : 0...1...2...3...4...5...6...7...8...9...10
    Water found with no water_lod_control entity, creating a default one.
    Compacting texture/material tables...
    Reduced 2635 texinfos to 1664
    Reduced 199 texdatas to 189 (4758 bytes to 4469)
    Writing D:SteamsteamappscommonCounter-Strike Global Offensivesdk_contentma
    psNew folderde_sake_066a.bsp
    3 seconds elapsed
    Reference Count for Material ___error (1) != 0
    
    
    -------------------------------------------------------------------------------
    Running command: cd "D:SteamsteamappscommonCounter-Strike Global Offensiveb
    in"
    -------------------------------------------------------------------------------
    
    
    
    
    -------------------------------------------------------------------------------
    Running command: "D:SteamsteamappscommonCounter-Strike Global Offensivebin
    vvis.exe" -game "D:SteamsteamappscommonCounter-Strike Global Offensivecsgo"
     -fast "D:SteamsteamappscommonCounter-Strike Global Offensivesdk_contentma
    psNew folderde_sake_066a"
    -------------------------------------------------------------------------------
    
    
    Valve Software - vvis.exe (May 20 2013)
    fastvis = true
    4 threads
    reading d:steamsteamappscommoncounter-strike global offensivesdk_contentma
    psnew folderde_sake_066a.bsp
    reading d:steamsteamappscommoncounter-strike global offensivesdk_contentma
    psnew folderde_sake_066a.prt
    1157 portalclusters
    3409 numportals
    BasePortalVis:       0...1...2...3...4...5...6...7...8...9...10 (0)
    Optimized: 36157 visible clusters (0.00%)
    Total clusters visible: 1121668
    Average clusters visible: 969
    Building PAS...
    Average clusters audible: 1155
    visdatasize:341573  compressed from 351728
    writing d:steamsteamappscommoncounter-strike global offensivesdk_contentma
    psnew folderde_sake_066a.bsp
    0 seconds elapsed
    
    
    -------------------------------------------------------------------------------
    Running command: cd "D:SteamsteamappscommonCounter-Strike Global Offensiveb
    in"
    -------------------------------------------------------------------------------
    
    
    
    
    -------------------------------------------------------------------------------
    Running command: "D:SteamsteamappscommonCounter-Strike Global Offensivebin
    vrad.exe"  -game "D:SteamsteamappscommonCounter-Strike Global Offensivecsgo
    " -noextra "D:SteamsteamappscommonCounter-Strike Global Offensivesdk_conten
    tmapsNew folderde_sake_066a"
    -------------------------------------------------------------------------------
    
    
    Valve Software - vrad.exe SSE (May 20 2013)
    
    
          Valve Radiosity Simulator
    4 threads
    [Reading texlights from 'lights.rad']
    [2 texlights parsed from 'lights.rad']
    
    
    Loading d:steamsteamappscommoncounter-strike global offensivesdk_contentma
    psnew folderde_sake_066a.bsp
    Setting up ray-trace acceleration structure... Done (1.38 seconds)
    4444 faces
    6 degenerate faces
    532177 square feet [76633608.00 square inches]
    17 Displacements
    8009 Square Feet [1153321.38 Square Inches]
    4438 patches before subdivision
    55274 patches after subdivision
    light has _fifty_percent_distance of 100.000000 but _zero_percent_distance of 0.
    000000
    light has _fifty_percent_distance of 92.000000 but _zero_percent_distance of 74.
    000000
    47 direct lights
    BuildFacelights:     0...1...2...3...4...5...6...7...8...9...10 (18)
    BuildVisLeafs:       0...1...2...3...4...5...6...7...8...9...10 (10)
    transfers 4277898, max 763
    transfer lists:  32.6 megs
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #1 added RGB(139013, 125661, 107132)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #2 added RGB(23027, 19288, 14146)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #3 added RGB(4408, 3518, 2221)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #4 added RGB(976, 745, 406)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #5 added RGB(236, 171, 81)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #6 added RGB(61, 42, 17)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #7 added RGB(17, 11, 4)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #8 added RGB(5, 3, 1)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #9 added RGB(1, 1, 0)
    GatherLight:         0...1...2...3...4...5...6...7...8...9...10 (0)
            Bounce #10 added RGB(0, 0, 0)
    Build Patch/Sample Hash Table(s).....Done<0.0175 sec>
    FinalLightFace:      0...1...2...3...4...5...6...7...8...9...10 (3)
    FinalLightFace Done
    0 of 0 (0% of) surface lights went in leaf ambient cubes.
    ThreadComputeLeafAmbient: 0...1...2...3...4...5...6...7...8...9...10 (5)
    Writing leaf ambient...done
    Ready to Finish
    
    
    Object names       Objects/Maxobjs  Memory / Maxmem  Fullness
    ------------       ---------------  ---------------  --------
    models                  15/1024          720/49152    ( 1.5%)
    brushes               1376/8192        16512/98304    (16.8%)
    brushsides            9687/65536       77496/524288   (14.8%)
    planes                5394/65536      107880/1310720  ( 8.2%)
    vertexes              9084/65536      109008/786432   (13.9%)
    nodes                 2203/65536       70496/2097152  ( 3.4%)
    texinfos              1664/12288      119808/884736   (13.5%)
    texdata                189/2048         6048/65536    ( 9.2%)
    dispinfos               17/0            2992/0        ( 0.0%)
    disp_verts            1513/0           30260/0        ( 0.0%)
    disp_tris             2464/0            4928/0        ( 0.0%)
    disp_multiblend          0/0               0/0        ( 0.0%)
    disp_lmsamples       23839/0           23839/0        ( 0.0%)
    faces                 4444/65536      248864/3670016  ( 6.8%)
    hdr faces                0/65536           0/3670016  ( 0.0%)
    origfaces             3263/65536      182728/3670016  ( 5.0%)
    facebrushes            696/0            1392/0        ( 0.0%)
    facebrushlists        4444/0           17776/0        ( 0.0%)
    leaves                2219/65536       71008/2097152  ( 3.4%)
    leaffaces             6724/65536       13448/131072   (10.3%)
    leafbrushes           4308/65536        8616/131072   ( 6.6%)
    areas                    3/256            24/2048     ( 1.2%)
    surfedges            36316/512000     145264/2048000  ( 7.1%)
    edges                23907/256000      95628/1024000  ( 9.3%)
    LDR worldlights         47/8192         4700/819200   ( 0.6%)
    HDR worldlights          0/8192            0/819200   ( 0.0%)
    leafwaterdata            1/32768          12/393216   ( 0.0%)
    waterstrips            757/32768        7570/327680   ( 2.3%)
    waterverts               0/65536           0/786432   ( 0.0%)
    waterindices         15018/65536       30036/131072   (22.9%)
    cubemapsamples           0/1024            0/16384    ( 0.0%)
    overlays               138/512         48576/180224   (27.0%)
    LDR lightdata         [variable]     2570651/0        ( 0.0%)
    HDR lightdata         [variable]           0/0        ( 0.0%)
    visdata               [variable]      341573/16777216 ( 2.0%)
    entdata               [variable]       34029/393216   ( 8.7%)
    LDR ambient table     2219/65536        8876/262144   ( 3.4%)
    HDR ambient table     2219/65536        8876/262144   ( 3.4%)
    LDR leaf ambient     11610/65536      325080/1835008  (17.7%)
    HDR leaf ambient      2219/65536       62132/1835008  ( 3.4%)
    occluders                0/0               0/0        ( 0.0%)
    occluder polygons        0/0               0/0        ( 0.0%)
    occluder vert ind        0/0               0/0        ( 0.0%)
    detail props          [variable]           1/12       ( 8.3%)
    static props          [variable]           1/29680    ( 0.0%)
    pakfile               [variable]      150446/0        ( 0.0%)
    physics               [variable]      494583/4194304  (11.8%)
    physics terrain       [variable]        2677/1048576  ( 0.3%)
    
    
    Level flags = 4
    
    
    Total triangle count: 14312
    Writing d:steamsteamappscommoncounter-strike global offensivesdk_contentma
    psnew folderde_sake_066a.bsp
    37 seconds elapsed
    
    
    -------------------------------------------------------------------------------
    Running command: copy "D:SteamsteamappscommonCounter-Strike Global Offensive
    sdk_contentmapsNew folderde_sake_066a.bsp" "D:SteamsteamappscommonCounte
    r-Strike Global Offensivecsgomapsde_sake_066a.bsp"
    -------------------------------------------------------------------------------
    
    
    Finished. Press a key to close.
    Display More
  • blackdog
    • August 5, 2013 at 8:03 AM
    • #2

    Are you sure your hint brush is completely sealing off the area? I dunno much about it, but that is crucial from what i've read/watched, otherwise you are just adding leaves without optimizing.

  • MrSkellyBones
    • August 5, 2013 at 9:12 AM
    • #3
    Quote from blackdog

    Are you sure your hint brush is completely sealing off the area? I dunno much about it, but that is crucial from what i've read/watched, otherwise you are just adding leaves without optimizing.

    Hello! Thanks for the reply. Just to be sure I made a fresh brush and pulled it completely through the map. It doesn't seem to be the issue.

  • Tschoppo
    • August 5, 2013 at 10:25 AM
    • #4

    http://rvanhoorn.ruhosting.nl/optimization.php?chapter=intro

    This has all the info you need

  • Vilham
    • August 5, 2013 at 10:53 AM
    • #5

    the link above taught me everything you need to know.

  • MrSkellyBones
    • August 6, 2013 at 5:30 PM
    • #6

    Hey guys thanks for the link! It was very helpful understanding what was going on in the visleaf section. It took me a while to figure out what to do and I'm still not good at it but by cutting two low visleafs the map stops the bottom one's from seeing the top leafs on other parts of the map. Also compiling vis on normal instead of fast helps quite a bit it seems. I'll have to practice with it and figure out where to put more of them. Also I didn't realize the valve maps use a fair number of these (20 - 30). I looked around de_dust2 and de_nuke to get some idea how they split those maps as they have significant out door areas like my map and that helped me figure out what to do with my hint brushes. Thank you! =D

  • Squad
    • August 6, 2013 at 6:07 PM
    • #7

    Never compile your map with fast VIS if you want to check its performance. I usually never do a fast compile anyway (unless it's for checking some simple things.

  • MrSkellyBones
    • August 6, 2013 at 6:09 PM
    • #8
    Quote from Squad

    Never compile your map with fast VIS if you want to check its performance. I usually never do a fast compile anyway (unless it's for checking some simple things.

    Ah I wasn't aware of that. I didn't realize it would have affected performance so much when I had done it. I compile fast most of the time because I'm constantly adding little things here and there and like to hop in and check them out on and off. I probably compile 20 to 30 times a day while working on the map so if I did full compile every time then I'll be waiting upwards to 2 hours on it at least.

  • Squad
    • August 6, 2013 at 6:17 PM
    • #9

    Well, I guess that's fine, as long as you take into account VIS optimization is pretty much non-existent if you do a fast compile (or anything other than full compile).

  • ElectroSheep
    • August 6, 2013 at 7:10 PM
    • #10

    Full compile give a good idea of how your leaves are optimized (at least before p2 engine, now vis is globally faster). Fast compile will make leaves but only full calculate visibility between each leaes.


    More leaves means more connectivity between them, etc...


    To see how your leaves are complex in hammer, look at "view => load portal file".

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself Login
Discord

The Mapcore Discord is our lively IRC channel of the 2000s reborn. Chat about level design, gaming, and more.

Latest Posts

  1. Custom Gamemodes Contest

    Angel
    July 20, 2026 at 11:46 AM
  2. FAQ

    Angel
    July 20, 2026 at 10:14 AM
  3. Tangerine

    Harry Poster
    July 18, 2026 at 11:10 AM
  4. Any of the old guard still around? D:

    Warby
    July 12, 2026 at 8:23 PM
  5. About our archived forums

    Thrik
    June 30, 2026 at 2:12 PM
  6. Mapcore Discord

    mason_fan123
    June 24, 2026 at 8:52 PM
  7. [CS2] Valley

    Serialmapper
    June 22, 2026 at 11:56 AM
  8. Free Music / SFX Resource - Over 2500 Tracks

    Eric Matyas
    June 18, 2026 at 12:32 PM
  9. Pango [WIP]

    Elowen
    June 11, 2026 at 10:13 AM
  10. [CS2] Dvina

    Jeremy Rivera
    June 11, 2026 at 10:03 AM
  1. Privacy Policy
  2. Contact
Powered by WoltLab Suite™