Re: Help us to Optimize PR! (LOD Switching & Cull Distances)
Posted: 2011-01-17 11:25
Sorry I missed this. I might help out this week since I got the week off 
I actually had forgotten about it again hehe, need to put it on my to-do list so I don't forget againPsyrus wrote:Hate to be *that* guy... but is this still going? I quite enjoyed feeling like I was contributing but it appears to have been forgotten and being reasonably busy I don't want to waste my time doing this if it's for naught![]()
Code: Select all
[b][u]gb_aav_stormer[/u][/b]
ObjectTemplate.cullRadiusScale 10.5
GeometryTemplate.setSubGeometryLodDistance 1 0 35
GeometryTemplate.setSubGeometryLodDistance 1 1 50
GeometryTemplate.setSubGeometryLodDistance 1 2 90
GeometryTemplate.setSubGeometryLodDistance 2 0 35
GeometryTemplate.setSubGeometryLodDistance 2 1 50
[b]Issues:[/b]
[list=1]
[*]Geom 1 LOD 3: Final LOD poly count over limit @ [b][color=Red]3928[/color][/b]
[*]Geom 2 LOD 2: Final LOD poly count over limit @ [b][color=red]2863[/color][/b]
[*]Geom1 LOD 3: A bit of floating geometry at the top due to removal of supports ([url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_aav_stormer_issue1.jpg]image[/url])
[*]Geom 1: Right hand side appears to be missing a track component, with a square there instead. ([url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_aav_stormer_issue2.jpg]image[/url])
[*]Rather stark colour change on turret and side bits which make LOD switches more obvious than they have to be.
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]gb_apc_warrior[/u][/b]
ObjectTemplate.cullRadiusScale 5.6
GeometryTemplate.setSubGeometryLodDistance 1 0 5
GeometryTemplate.setSubGeometryLodDistance 1 1 90
GeometryTemplate.setSubGeometryLodDistance 1 2 145
GeometryTemplate.setSubGeometryLodDistance 2 0 35
GeometryTemplate.setSubGeometryLodDistance 2 1 110
[b]Issues:[/b]
[list=1]
[*]Geom 1 LOD3: Final LOD poly count is over limit @ [b]958[/b]
[*]Geom 2 LOD2: Final LOD poly count is over limit @ [b]580[/b]
[*]Geom 1, 2: Various floating polygons on LOD0, LOD2, LOD3 [Image [url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_apc_warrior_issue1.jpg]1[/url], [url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_apc_warrior_issue2.jpg]2[/url], [url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_apc_warrior_issue3.jpg]3[/url], [url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/gb_apc_warrior_issue4.jpg]4[/url]]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]gb_ifv_scimitar, gb_ifv_scimitar_cage[/u][/b]
ObjectTemplate.cullRadiusScale 7.5
GeometryTemplate.setSubGeometryLodDistance 1 0 25
GeometryTemplate.setSubGeometryLodDistance 1 1 60
GeometryTemplate.setSubGeometryLodDistance 1 2 100
GeometryTemplate.setSubGeometryLodDistance 2 0 40
[b]Issues:[/b]
[list=1]
[*]Geom 1 LOD 3: Final LOD poly count over limit @ [b][color=red]1913[/color][/b]
[*]Geom 2 LOD 1: Final LOD poly count over limit @ [b][color=Red]3214[/color][/b]
[*]Geom2 LOD 0: Wreck LOD 0 has a deleted face on the driver's hatch when viewed from the right hand side. [url=http://i235.photobucket.com/albums/ee94/psyrus_uraya/LODs/scimitar_hatch_seethru.jpg][See Image][/url].
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Security reasons; I've been burned in the past not being overly cautious with stuff that is open to the public (even things I've posted in communities I 'trusted').[R-DEV]Rhino wrote:nice, but right now you can only view it, can't make any changes![]()
Code: Select all
[b][u]ru_tow_spandrel[/u][/b]
ObjectTemplate.cullRadiusScale 8
GeometryTemplate.setSubGeometryLodDistance 1 0 30
GeometryTemplate.setSubGeometryLodDistance 1 1 60
GeometryTemplate.setSubGeometryLodDistance 1 2 75
GeometryTemplate.setSubGeometryLodDistance 2 0 40
GeometryTemplate.setSubGeometryLodDistance 2 1 55
[b]Issues:[/b]
[list=1]
[*] geom1 lod1 @5000polys
[*] geom1 lod2 @4000polys
[*] geom1 lod3 @3000polys
[*] geom2 lod1 @3500polys
[*] geom2 lod2 @1500polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]mec_tow_spandrel[/u][/b]
ObjectTemplate.cullRadiusScale 8
GeometryTemplate.setSubGeometryLodDistance 1 0 30
GeometryTemplate.setSubGeometryLodDistance 1 1 60
GeometryTemplate.setSubGeometryLodDistance 1 2 75
GeometryTemplate.setSubGeometryLodDistance 2 0 40
GeometryTemplate.setSubGeometryLodDistance 2 1 55
[b]Issues:[/b]
[list=1]
[*] geom1 lod1 @5000polys
[*] geom1 lod2 @4000polys
[*] geom1 lod3 @3000polys
[*] geom2 lod1 @3500polys
[*] geom2 lod2 @1500polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]ru_jep_brdm2[/u][/b]
ObjectTemplate.cullRadiusScale 8
GeometryTemplate.setSubGeometryLodDistance 1 0 25
GeometryTemplate.setSubGeometryLodDistance 1 1 35
GeometryTemplate.setSubGeometryLodDistance 1 2 60
GeometryTemplate.setSubGeometryLodDistance 2 0 40
GeometryTemplate.setSubGeometryLodDistance 2 1 55
[b]Issues:[/b]
[list=1]
[*] geom1 lod1 @5500polys
[*] geom1 lod2 @4500polys
[*] geom1 lod3 @3500polys
[*] geom2 lod1 @4500polys
[*] geom2 lod2 @3300polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]mec_jep_brdm2[/u][/b]
ObjectTemplate.cullRadiusScale 8
GeometryTemplate.setSubGeometryLodDistance 1 0 25
GeometryTemplate.setSubGeometryLodDistance 1 1 35
GeometryTemplate.setSubGeometryLodDistance 1 2 60
GeometryTemplate.setSubGeometryLodDistance 2 0 40
GeometryTemplate.setSubGeometryLodDistance 2 1 55
[b]Issues:[/b]
[list=1]
[*] geom1 lod1 @5500polys
[*] geom1 lod2 @4500polys
[*] geom1 lod3 @3500polys
[*] geom2 lod1 @4500polys
[*] geom2 lod2 @3300polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]mec_aav_gaskin[/u][/b]
ObjectTemplate.cullRadiusScale 8
GeometryTemplate.setSubGeometryLodDistance 1 0 30
GeometryTemplate.setSubGeometryLodDistance 1 1 60
GeometryTemplate.setSubGeometryLodDistance 1 2 75
GeometryTemplate.setSubGeometryLodDistance 2 0 40
GeometryTemplate.setSubGeometryLodDistance 2 1 55
[b]Issues:[/b]
[list=1]
[*] geom1 lod1 @6500polys
[*] geom1 lod2 @5000polys
[*] geom1 lod3 @4000polys
[*] geom2 lod1 @3400polys
[*] geom2 lod2 @2400polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]idf_apc_m113[/u][/b]
ObjectTemplate.cullRadiusScale 6.5
GeometryTemplate.setSubGeometryLodDistance 1 0 40
GeometryTemplate.setSubGeometryLodDistance 1 1 50
GeometryTemplate.setSubGeometryLodDistance 2 0 35
GeometryTemplate.setSubGeometryLodDistance 2 1 45
[b]Issues:[/b]
[list=1]
[*]geom1 lod1 @5400polys
[*]geom1 lod2 @4500polys
[*]geom2 lod1 @4200polys
[*]geom1 lod2 @3200polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]idf_apc_m113_logist[/u][/b]
ObjectTemplate.cullRadiusScale 6
GeometryTemplate.setSubGeometryLodDistance 1 0 40
GeometryTemplate.setSubGeometryLodDistance 1 1 50
GeometryTemplate.setSubGeometryLodDistance 2 0 35
GeometryTemplate.setSubGeometryLodDistance 2 1 65
[b]Issues:[/b]
[list=1]
[*]geom1 lod1 @4800polys
[*]geom1 lod2 @4000polys
[*]geom2 lod1 @3900polys
[*]geom1 lod2 @2200polys
[/list]
[b]Coding:[/b] Mats391
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]gb_jep_landrover, gb_jep_landrover_support[/u][/b]
ObjectTemplate.cullRadiusScale 4.5
GeometryTemplate.setSubGeometryLodDistance 1 0 5
GeometryTemplate.setSubGeometryLodDistance 1 1 70
GeometryTemplate.setSubGeometryLodDistance 1 2 115
GeometryTemplate.setSubGeometryLodDistance 2 0 35
GeometryTemplate.setSubGeometryLodDistance 2 1 90
[b]Issues:[/b]
[list=1]
[*]Geom_1 LOD 0/1: LOD 1 has more polygons than LOD 0
[*]Geom_1 LOD 3: Final LOD is over limit @ 986 polys
[*]Geom_2 LOD 3: Few unnecessary floating polygons
[*]Geom_2 LOD 3: Final LOD is over limit @ 958 polys
[*]
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] 
Code: Select all
[b][u]gb_tnk_challenger[/u][/b]
ObjectTemplate.cullRadiusScale 5.2
GeometryTemplate.setSubGeometryLodDistance 1 0 20
GeometryTemplate.setSubGeometryLodDistance 1 1 40
GeometryTemplate.setSubGeometryLodDistance 1 2 120
GeometryTemplate.setSubGeometryLodDistance 2 0 30
GeometryTemplate.setSubGeometryLodDistance 2 1 120
[b]Issues:[/b]
[list=1]
[*]Geom_1 LOD 3: Final LOD is over limit @ [color=Red][b]1462 [/b][/color]polys
[*]Geom_2 LOD 0: Floating polygon at LHS rear exhaust vent (turret)
[*]Geom_2 LOD 1: Strange hatch polygons at top of turret (unneeded?)
[*]Geom_2 LOD 2: Strange hatch polygons at top of turret (unneeded?)
[*]Geom_2 LOD 3: Just over the limit @ 591
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] and what if the vehicle is facing the front or the back to you?Psyrus wrote:This is what I'm talking about for say the challenger (below).
Code: Select all
[b][u]ger_jep_gwagon_support, ger_jep_gwagon_support_alt[/u][/b]
ObjectTemplate.cullRadiusScale 9.8
GeometryTemplate.setSubGeometryLodDistance 1 0 25
GeometryTemplate.setSubGeometryLodDistance 1 1 50
GeometryTemplate.setSubGeometryLodDistance 1 2 95
GeometryTemplate.setSubGeometryLodDistance 2 0 30
GeometryTemplate.setSubGeometryLodDistance 2 1 125
[b]Issues:[/b]
[list=1]
[*]Geom_1 LOD 0/1: [i]LOD Switch is only obvious due to glass colour change, I deemed it to be acceptable but it's up to whomever checks it. The alternative was 35 which is less obvious. [/i]
[*]Geom_1 LOD 3: Final LOD is over limit @ [b][color=Red]1156 [/color][/b]polys
[*]Geom_2 LOD 2: Inside faces are deleted to save polys but it makes the LOD switch have to occur later than if some inner faces had been kept (to make the switch less obvious).
[*]
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] The polys I counted take those situations into account. Remember this LOD only occurs @ 500m+ distance.[R-DEV]Amok@ndy wrote:and what if the vehicle is facing the front or the back to you?
also dont forget that jets and choppers might see the vehicle from above
or what happens if the vehicle is flipped and you will see the bottom ?
Which is what we are doing on all our new models and when we come to update old ones which is what I said in the post you quoted and the reason why if a final lod is not under 100tris its highlighted as an issue so we can look into fixing it later.Psyrus wrote:With the introduction of such large cull distances [1000m+], I am personally advocating a new LOD be added for most vehicles which is the most basic geometric shape/size that matches the initial model. I'm talking like 15-50 polygons, as at distances 500-1000m, vehicles are nothing more than 2-5 pixels on the user's screen, and while it is great that they will be able to see them all that way, there is no point in rendering 600-1000 polys on something 2-5 pixels big at that distance.
This is what I'm talking about for say the challenger (below).
I realize this is probably an unrealistic ask for current developers, but it does seem like something that someone as unskilled (modeling wise) like me could do, and wouldn't require a whole lot of texturing (just use the main color from the already loaded pallets). Would the incremental performance gain be worth the extra "drawcalls, lightmap, mesh memory and textures"? (post 1, post 2)
Cool, thanks for the info Rhino[R-DEV]Rhino wrote:Which is what we are doing on all our new models and when we come to update old ones which is what I said in the post you quoted and the reason why if a final lod is not under 100tris its highlighted as an issue so we can look into fixing it later.
Code: Select all
[b][u]idf_apc_namer[/u][/b]
ObjectTemplate.cullRadiusScale 7.2 (Unchanged)
GeometryTemplate.setSubGeometryLodDistance 1 0 25
GeometryTemplate.setSubGeometryLodDistance 1 1 50
GeometryTemplate.setSubGeometryLodDistance 1 2 100
GeometryTemplate.setSubGeometryLodDistance 1 3 125
GeometryTemplate.setSubGeometryLodDistance 2 0 5
GeometryTemplate.setSubGeometryLodDistance 2 1 75
GeometryTemplate.setSubGeometryLodDistance 2 1 135
GeometryTemplate.setSubGeometryLodDistance 2 1 165
[b]Issues:[/b]
[list=1]
[*]Geom_1 LOD 4: Final LOD is over limit @ 574 polys
[*]Geom_2 LOD 4: Final LOD is over limit @ 560 polys
[*]Geom_2 LOD 1: LOD 1 has more polys than LOD 0 (7956 vs 7942)
[*]
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]idf_jep_zeev[/u][/b]
ObjectTemplate.cullRadiusScale 6.5
GeometryTemplate.setSubGeometryLodDistance 1 0 [b]N/A[/b]
GeometryTemplate.setSubGeometryLodDistance 2 0 [b]N/A[/b]
[b]Issues:[/b]
[list=1]
[*]Geom_1: [b][color=Red]No LODs aside from LOD 0[/color][/b]
[*]Geom_2: [b][color=red]No LODs aside from LOD 0[/color][/b]
[*]Geom_1 LOD 0: Final LOD is way over limit @ [b][color=Red]8403 [/color][/b]polys
[*]Geom_2 LOD 0: Final LOD is way over limit @ [b][color=red]7001 [/color][/b]polys
[*]
[*]
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Code: Select all
[b][u]idf_tnk_merkava[/u][/b]
ObjectTemplate.cullRadiusScale 6.4
GeometryTemplate.setSubGeometryLodDistance 1 0 5
GeometryTemplate.setSubGeometryLodDistance 1 1 75
GeometryTemplate.setSubGeometryLodDistance 1 2 100
GeometryTemplate.setSubGeometryLodDistance 1 3 175
[color=Red]GeometryTemplate.setSubGeometryLodDistance 2 0 5[/color]
[b]Issues:[/b]
[list=1]
[*]Geom_1 LOD 0: Final LOD is over limit @ [b][color=red]1035 [/color][/b]polys
[*]Geom_2 LOD 0: Final LOD is over limit @ [color=red][b]5720 [/b][/color]polys
[*]Geom_2 LOD 1: LOD1 has more polys than LOD0
[*]Geom_2 LOD 4: Tracks of tank appear to be raised which creates a bad look at range and is unnecessary.
[*]
[/list]
[b]Coding:[/b] Psyrus
[b]Checked by:[/b]
[b]Tweaked by:[/b]
[b]Committed to REPO:[/b] Ye, although that's a much bigger project and its also much harder to fix staticobjects as any fixes you make for them, that compromises there lightmaps so they need new lightmaps generating for them on all the maps they are on, which is not a nice thing to do..Psyrus wrote:I guess the statics come next for analysis after the vehicles?![]()
Oh jeez that sounds like a lot of work[R-DEV]Rhino wrote:Ye, although that's a much bigger project and its also much harder to fix staticobjects as any fixes you make for them, that compromises there lightmaps so they need new lightmaps generating for them on all the maps they are on, which is not a nice thing to do..