Tag: #meshes (6) Clear filter ×

1 story

Artemking4 finds why bone 0 breaks IMesh:DrawSkinned

Artemking4 found the root cause of the bone 0 problem in IMesh:DrawSkinned: in shaderapidx8.cpp, bone 0 is also loaded as the model matrix, so rendering breaks unless it is reset afterwards. Wrapping the call in cam.PushModelMatrix and the matching pop fixes it, and he asks for bone 0 to be exposed.

Details

Without bone 0, player and NPC models that use all 53 bones have to be split into two draw calls, which hurts performance. The issue includes screenshots and a spiral test script. It follows his earlier argument with Rubat in #next-update about whether DrawSkinned should allow bone 0.

1 update

1 update

2 stories

LibEdit dropped from Linux SRCDS; Mesh:DrawSkinned 52-bone error fixed

Commit 291b48 on main removes the LibEdit dependency (SRCDS input on Linux now works like on the x86-64 beta), fixes Linux32 SRCDS under WSL and fixes a wrongful error in Mesh:DrawSkinned with 52 bones.

Details
  • "MixMax 2: Electric Boogaloo"
  • LibEdit dependency removed; minor cosmetic changes to srcds_run
  • Fixed Linux32 SrcDS being unable to read file stats under WSL
  • Fixed wrongful error with Mesh:DrawSkinned with 52 bones
  • Folder addons are no longer searched in mountable games/platform
  • "Engine Error" added to the Sys_Error_Internal printf
  • Progress on Linux64 builds

Artemking4 argues Mesh:DrawSkinned should allow bone 0

In #next-update, Artemking4 said IMesh:DrawSkinned can't use all 53 matrices: it's off by one and wrongly errors on the last bone. Rubat replied that matrix 0 is reserved by the engine as far as he remembers, so DrawSkinned gets 1–52. In his tests, setting matrix 0 did nothing or caused issues. Artemking4 disagreed: bone 0 is a normal bone that also serves as the model matrix for unskinned vertices, and his patched client.dll renders models almost perfectly with it.

1 story

1 story

Barnacle regression fixed, 3 bone weights for meshes, math_counter outputs, Autorefresh rework

Commit 280e7a on main fixes regressions in entity search (including Barnacles), allows three bone weights for procedural meshes, adds OnChangedFromMin/Max to math_counter and substantially changes Autorefresh error handling.

Details
  • Separate Linux client and SRCDS build scripts
  • Classname added to the CUtlRBTree overflow message
  • Fixed some regressions with entity search, including Barnacles
  • ErrorFromLua renamed to ErrorNoHaltStack; added CLuaInterface::FormatError
  • mesh.BoneData can be called with index 2 (weight ignored); Mesh() allows 3 bone weights and Mesh:BuildFromTriangles reads up to 3
  • Two new PhysFrame sub scopes: PhysFrame-CPhysicsEnvironment::Simulate and PhysFrame-VPhysicsShadowUpdate
  • math_counter gains OnChangedFromMin/OnChangedFromMax outputs and SetMaxValueNoFire/SetMinValueNoFire inputs
  • Improved Autorefresh error handling; fixed a memory leak with Windows auto refresh and symlinks ("hopefully without regressions, as the system was changed somewhat substantially")

1 story