Skip to content

Conversation

@BethOfDeath
Copy link

ex_dwrv_enter00:
- UV correction and island merging.
- Cleaned up geometry on trim03 mesh behind the round part that Arkngthand doors spin around
- Deleted 4 hidden faces
- Replaced instances of radial fan topology with max area. (4 faces reduction) and merged some other vertices.
- Corrected misassigned faces.
- Subdivided a few edges to improve topology and/or reduce texture warping.
- Corrected triangulation on front of dome around bottom of outer diamond
- LOD0 reduced by 28 triangles over vanilla (now 1265). w00t. Still 11 draw calls.
- Vastly simplified collision mesh. Was 884 tris across 4 chunks, now 546 across 6. -- Could be reduced further on top, but I didn't want to lose the "tripping over" the dome part's cut-outs.
- Mirrored one side of archway's trim texture to reduce visual wonkiness.
- Created LODs. LOD1: 6 draw calls, no face reduction. LOD2: 932 tris, 3 draw calls. LOD3: 748. LOD4: 303 tris.
- Was: 113409 bytes; now 252915. (123% increase, but drops draw calls across LOD1 and 2, and faces to 74% (LOD2), 59% (LOD3), and 24% (LOD4) original.

⚠️ Unfortunately, seams remain on wall40 texture portion around the door arch on LOD0, and on top on most I don't see how this can be improved, given the texture and geometry, but I have minimized it as much I could.

door_dwrv_main00
- Simplified collision mesh. Was 160 tris, now 112.
- UVs tweaking, now looks seamless in combination with my recent submission to Patch For Purists.
- Added LOD1 (100 tris) and LOD2 (52 tris, 1 drawcall). Preserved edge faces on LOD2 solely to ensure continued compatibility with certain shadow calculation shader methods.
- Vanilla: 18459 bytes. Current MOP: 10026. New: 16883. (-9% from original, +68% over current MOP)

in_dwrv_crank00:
- Slightly adjusted collision mesh to match model pieces it covers more closely.
- Adjusted topology, eliminated excess UV islands and stretch.
- Added simplified LOD (3 drawcalls instead of 6) and set distant LOD distance to cut off rendering any beyond 7168 -- experimentation in-game with Arkngthand entrance showed it's not visible, even in silleoutte, beyond ~5500-6000 units anyway.
- Vanilla: 19086 bytes, new: 28838. (51% increase)

furn_dwrv_fitting*:
- Adjusted collision mesh to better fit visual mesh, where necessary.
- Added LOD to reduce drawcalls to 1 and ensure it eventually stops being rendered at all (in OpenMW, anyway) regardless of culling size.
- _fitting00: Vanilla: 4534 bytes; new: 6356. (+56%)
- _fitting10: Vanilla: 4534 bytes; new: 6388. (+41%)
- _fitting20: Vanilla: 8178 bytes; new: 15120. (+88%)
- _fitting30: Vanilla: 13190 bytes; new: 23114. (+75%)
- _fitting40: Vanilla: 36118 bytes; new: 31177 (-14%) (Don't look too closely at the UVs, I'm not sure how that worked out so "neatly" either...)
- _fitting50: Vanilla: 11290 bytes; new: 14424. (+28%)

ex_dwrv_pipe10:
- Simplified collision mesh. Was: 184 tris split in 2 pieces; now: 60 in one (collision volume is roughly the same anyway).
- Re-unwrapped the rustpipe10 texture portion to reduce distortion.
- Redid normals to get rid of sharp edges.
- Tweaked topology, saving two tris. Added LOD to reduce to 1 drawcall.
- Vanilla: 26285 bytes; new: 25200. (-4%)

ex_dwrv_pipe00:
- Copied over collision mesh from _pipe10, extended it, and chopped it into bits.
- Same work as _pipe00.
- Vanilla: 19947 bytes; new: 22578. (+13%)

ex_dwrv_pipefitting00:
- Adjusted collision mesh to better fit visual mesh, tweaked topology, and simplified. (32 tris -> 12)
- Re-unwrapped to correct distortion and reduce islands.
- Normals rework.
- Vanilla: 13668; new: 16900. (+24%)

Miscellaneous lights and objects:

misc_dwrv_ark_cube00:
- Reunwrapped to reduce UV islands.
- Added "NiStringExtraData NC" for what may be the record for most micro micro-optimization yet.
- Changed NiLODNode flag to 32.
- Vanilla: 1865 bytes, current MOP: 2027; new: 2076 bytes. (+11.4% vs vanilla, +2.5% vs previous MOP)

misc_dwrv_ark_key00:
- Set "NiStringExtraData NC" to skip the collision check entirely and removed collision mesh.
- Edge-slid and merged vertices several cases of unneeded extra edges, adjusted topology.
- UV unwrapped to reduce islands.
- Changed NiLODNode flag to 32
- Vanilla: 25877 bytes, current: 24623; new: 18862. (-27% vs vanilla, -23% vs current MOP)

light_dwrv_bulb00:
- Pieced together UVs on filament, reunwrapped copper to fix islands and shredded UVs.
- Simplified glass mesh, as center two edge rings contributed nothing to the shape or blending.
- Added LODs. Vanilla/original MOP: 876 tris; LOD0: 820; LOD1: 319; LOD2: 203. -- LOD2 removes filament mesh draw call and alpha blending calculations.
- Removed empty NiNode and bogus NiZBufferProperty and NiVertexColorProperty nodes.
- Vanilla and current MOP: 27591 bytes each. New version: 32692. (+19%)

light_dwrv_neon00
- Very slight nitpicky adjustments to collision model
- UV island elimination
- Replaced fan topology with max area
- Corrected glass faces being completed disconnected from each other instead of being a smooth cyllinder... only to discover there were two cyllinders of identical size and material. Removed duplicate.
- Created 2 LODs to reduce internal geometry and draw calls as player gets farther away. I doubt most Dwemer ruins are large enough for LOD2 to be used at any point, particularly in the original game, but perhaps mods with larger interiors or which use this light outdoors will benefit?
- Original: 5 drawcalls per instance, with one using alpha blending, always. New: 5 within 2500 units (1 alpha blended), 3 at (2500, 4750] units (1 alpha blended), 2 beyond (0 alpha blended)
- Original: 19414 bytes. New: 25274 bytes. (+30%)

light_dwrv_neonbroke00:
- Copied the entirety of the new light_dwrv_neon00 to replace existing model, except for the glass and glowy bits
- Removed duplicate faces from the glass and corrected UVs. Difference is hardly noticable in game either way with vanilla textures.
- Created LODs.
- Same drawcall reduction as light_dwrv_neon.
- Original: 21242 bytes. New: 27036 bytes. (+27%)

…and crank:

ex_dwrv_enter00:
	- UV correction and island merging.
	- Cleaned up geometry on trim03 mesh behind the round part that Arkngthand doors spin around
	- Deleted 4 hidden faces
	- Replaced instances of radial fan topology with max area. (4 faces reduction) and merged some other vertices.
	- Corrected misassigned faces.
	- Subdivided a few edges to improve topology and/or reduce texture warping.
	- Corrected triangulation on front of dome around bottom of outer diamond
	- LOD0 reduced by 28 triangles over vanilla (now 1265). w00t. Still 11 draw calls.
	- Vastly simplified collision mesh. Was 884 tris across 4 chunks, now 546 across 6.
	-- Could be reduced further on top, but I didn't want to lose the "tripping over" the dome part's cut-outs.
	- Mirrored one side of archway's trim texture to reduce visual wonkiness.
	- Created LODs. LOD1: 6 draw calls, no face reduction. LOD2: 932 tris, 3 draw calls. LOD3: 748. LOD4: 303 tris.
	- Was: 113409 bytes; now 252915. (123% increase, but drops draw calls across LOD1 and 2, and faces to 74% (LOD2), 59% (LOD3), and 24% (LOD4) original.

	Unfortunately, seams remain on wall40 texture portion around the door arch on LOD0, and on top on all. I don't see how this can be improved, given the texture and geometry, but I have minimized it as much I could.

door_dwrv_main00
	- Simplified collision mesh. Was 160 tris, now 112.
	- UVs tweaking, now looks seamless.
	- Added LOD1 (100 tris) and LOD2 (52 tris, 1 drawcall). Preserved edge faces on LOD2 solely to ensure continued compatibility with certain shadow calculation shader methods.
	- Vanilla: 18459 bytes. Current MOP: 10026. New: 16883. (-9% from original, +68% over current MOP)

in_dwrv_crank00:
	- Slightly adjusted collision mesh to match model pieces it covers more closely.
	- Adjusted topology, eliminated excess UV islands and stretch.
	- Added simplified LOD (3 drawcalls instead of 6) and set distant LOD distance to cut off rendering any beyond 7168 -- experimentation in-game with Arkngthand entrance showed it's not visible, even in silleoutte, beyond ~5500-6000 units anyway.
	- Vanilla: 19086 bytes, new: 28838. (51% increase)

furn_dwrv_fitting*:
	- Adjusted collision mesh to better fit visual mesh, where necessary.
	- Added LOD to reduce drawcalls to 1 and ensure it eventually stops being rendered at all (in OpenMW, anyway) regardless of culling size.
	- _fitting00: Vanilla: 4534 bytes; new: 6356. (+56%)
	- _fitting10: Vanilla: 4534 bytes; new: 6388. (+41%)
	- _fitting20: Vanilla: 8178 bytes; new: 15120. (+88%)
	- _fitting30: Vanilla: 13190 bytes; new: 23114. (+75%)
	- _fitting40: Vanilla: 36118 bytes; new: 31177 (-14%) (Don't look too closely at the UVs, I'm not sure how that worked out so "neatly" either...)
	- _fitting50: Vanilla: 11290 bytes; new: 14424. (+28%)

ex_dwrv_pipe10:
	- Simplified collision mesh. Was: 184 tris split in 2 pieces; now: 60 in one (collision volume is roughly the same anyway).
	- Re-unwrapped the rustpipe10 texture portion to reduce distortion.
	- Redid normals to get rid of sharp edges.
	- Tweaked topology, saving two tris. Added LOD to reduce to 1 drawcall.
	- Vanilla: 26285 bytes; new: 25200. (-4%)

ex_dwrv_pipe00:
	- Copied over collision mesh from _pipe10, extended it, and chopped it into bits.
	- Same work as _pipe00.
	- Vanilla: 19947 bytes; new: 22578. (+13%)

ex_dwrv_pipefitting00:
	- Adjusted collision mesh to better fit visual mesh, tweaked topology, and simplified. (32 tris -> 12)
	- Re-unwrapped to correct distortion and reduce islands.
	- Normals rework.
	- Vanilla: 13668; new: 16900. (+24%)

Miscellaneous lights and objects:

misc_dwrv_ark_cube00:
	- Reunwrapped to reduce UV islands.
	- Added "NiStringExtraData NC" for what may be the record for most micro micro-optimization yet.
	- Changed NiLODNode flag to 32.
	- Vanilla: 1865 bytes, current MOP: 2027; new: 2076 bytes. (+11.4% vs vanilla, +2.5% vs previous MOP)

misc_dwrv_ark_key00:
	- Set "NiStringExtraData NC" to skip the collision check entirely and removed collision mesh.
	- Edge-slid and merged vertices several cases of unneeded extra edges, adjusted topology.
	- UV unwrapped to reduce islands.
	- Changed NiLODNode flag to 32
	- Vanilla: 25877 bytes, current: 24623; new: 18862. (-27% vs vanilla, -23% vs current MOP)

light_dwrv_bulb00:
	- Pieced together UVs on filament, reunwrapped copper to fix islands and shredded UVs.
	- Simplified glass mesh, as center two edge rings contributed nothing to the shape or blending.
	- Added LODs. Vanilla/original MOP: 876 tris; LOD0: 820; LOD1: 319; LOD2: 203.
	-- LOD2 removes filament mesh draw call and alpha blending calculations.
	- Removed empty NiNode and bogus NiZBufferProperty and NiVertexColorProperty nodes.
	- Vanilla and current MOP: 27591 bytes each. New version: 32692. (+19%)

light_dwrv_neon00
	- Very slight nitpicky adjustments to collision model
	- UV island elimination
	- Replaced fan topology with max area
	- Corrected glass faces being completed disconnected from each other instead of being a smooth cyllinder... only to discover there were *two* cyllinders of identical size and material. Removed duplicate.
	- Created 2 LODs to reduce internal geometry and draw calls as player gets farther away. I doubt most Dwemer ruins are large enough for LOD2 to be used at any point, particularly in the original game, but perhaps mods with larger interiors or which use this light outdoors will benefit?
	- Original: 5 drawcalls per instance, with one using alpha blending, always. New: 5 within 2500 units (1 alpha blended), 3 at (2500, 4750] units (1 alpha blended), 2 beyond (0 alpha blended)
	- Original: 19414 bytes. New: 25274 bytes. (+30%)

light_dwrv_neonbroke00:
	- Copied the entirety of the new light_dwrv_neon00 to replace existing model, except for the glass and glowy bits
	- Removed duplicate faces from the glass and corrected UVs. Difference is hardly noticable in game either way with vanilla textures.
	- Created LODs.
	- Same drawcall reduction as light_dwrv_neon.
	- Original: 21242 bytes. New: 27036 bytes. (+27%)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant