We receive numerous support queries regarding unknown or errantly-set
keybinds causing issues during normal gameplay for our users, especially
since the plugin hub has been released and more plugins are able to
register keybinds. This commit adds logging for keybind registration and
activation for ease of troubleshooting.
Prior to 8c00f6da88 the interpolation of fragment
shader inputs appears to not have been accounting for perspective. This broke
texturing due to the texture ids being interpolated for perspective which was
fixed in 47e0ac8032. The hsl values similarly
require not accounting for perspective, so the noperspective interpolation
qualifier has been added. It is unclear to me why the geometry shader removal
would affect the interpolation like this since it was emitting vertices with
the correct z values.
Originally this was fixed in d02ddfc1b2 but then
broken in d676542dc2. Preferred positions don't
make sense for either overlay type and for tooltips breaks them due to having
them offset from the mouse position.
The face sorting still requires the toScreen function to match exactly
the same order that would be computed on CPU, but for the projection for
rendering we can simplify it by replacing it with a projection matrix.
This also drops the requirement of having a geometry shader to remove
faces too close to or behind the camera. Upon closer inspection it looks
like the client can draw faces which have at least one vertex which is
>= 50 from the camera, so this now more accurately reflects the software
renderer.
Co-authored-by: Adam <Adam@sigterm.info>
Inline the body of pushFace() into uploadModel() and perform the loop hoisting
of the locals that this enables. This cuts off 10-20ms of scene load time on my machine.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Prevent unnecessary allocations by updating the ensureCapacity() methods to not
create intermediate buffers, just create a single new buffer with the final
size.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Instead we can just check the model scene id is correct and not have to be
concerned about reused Models from previous scenes having positive buffer
offsets
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Due to JDK-4737788, maximizing an undecorated frame incorrectly covers the
taskbar. Substance attempts to correct this by computing its own maximized
bounds, but it does not account for DPI scaling. Since Substance automatically
calls setMaximizedBounds when the frame is resized to do this we simply
override it and replace the bounds with our own which includes the scaling of
the display.
This also fixes the frame maximizing to the incorrect display on 11.0.8 due to
JDK-8231564, which changes the coordinates setMaximizedBounds() expects to be
relative to the primary display instead of the current display. Previously,
Substance was always setting the bounds x/y to 0 due to this.
Co-authored-by: Runemoro <runemoro1@gmail.com>