-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Metal Rendering on macOS #1326
Metal Rendering on macOS #1326
Commits on Nov 14, 2023
-
Initial work to resync Metal work on master
Does not yet link - async sockets missing implementation Migrating Metal-cpp over to CMake management Also rolling Metal-cpp up to 13.3 SDK.
Configuration menu - View commit details
-
Copy full SHA for a480ee4 - Browse repository at this point
Copy the full SHA a480ee4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2144231 - Browse repository at this point
Copy the full SHA 2144231View commit details -
Moving aux spans back onto normal IHandleMaterial
I think it was set this way for debugging an issue, but the old code is causing issues itself.
Configuration menu - View commit details
-
Copy full SHA for 17b4d93 - Browse repository at this point
Copy the full SHA 17b4d93View commit details -
Fixing normalized co-ordinate identity crisis
Treating normalized co-ordinates as if they were full range. Broke some things with inverted alpha. Stuff like the side of the tent in city should render correct now.
Configuration menu - View commit details
-
Copy full SHA for 002bfc4 - Browse repository at this point
Copy the full SHA 002bfc4View commit details -
Texture is being bound to the wrong index. This was causing the cleft to fail to load.
Configuration menu - View commit details
-
Copy full SHA for feac6b9 - Browse repository at this point
Copy the full SHA feac6b9View commit details -
Eder Delin has had a 0 span since the resync, which Metal choked on
Configuration menu - View commit details
-
Copy full SHA for 286096c - Browse repository at this point
Copy the full SHA 286096cView commit details -
Initial work on proper clear support
Should fix menus and partially fix linking books. Books still aren't drawing their contents, but that doesn't seem to be a renderer issue. The scripts that draw the books may not be working for some reason.
Configuration menu - View commit details
-
Copy full SHA for 8a72c86 - Browse repository at this point
Copy the full SHA 8a72c86View commit details -
Fixes for fast material encoding
Was using setFragmentBuffer, not setFragmentBytes. Also was doing fast and then slow encoding back to back.
Configuration menu - View commit details
-
Copy full SHA for c952b78 - Browse repository at this point
Copy the full SHA c952b78View commit details -
Integrating the optimized M1 Metal renderer
Also fixing several rendering bugs: - Single layer color materials now render correctly - Fixed lighting issues on moving surfaces - Fixed shader compilation crash on Intel HD Metal drivers by removing inline notation from shader functions. No performance decline was observed.
Configuration menu - View commit details
-
Copy full SHA for bfd45ff - Browse repository at this point
Copy the full SHA bfd45ffView commit details -
Fixing crash on Intel graphics
Intel graphics have unified memory, but don't support memoryless textures. Now explicitly checking for the Apple GPU family.
Configuration menu - View commit details
-
Copy full SHA for 1b1c2d5 - Browse repository at this point
Copy the full SHA 1b1c2d5View commit details -
Configuration menu - View commit details
-
Copy full SHA for b1fbfa0 - Browse repository at this point
Copy the full SHA b1fbfa0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4090cd8 - Browse repository at this point
Copy the full SHA 4090cd8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2826d1a - Browse repository at this point
Copy the full SHA 2826d1aView commit details -
Configuration menu - View commit details
-
Copy full SHA for b5fb8bb - Browse repository at this point
Copy the full SHA b5fb8bbView commit details -
Thats a virtual interface, can't just rename that. Ooops!
Configuration menu - View commit details
-
Copy full SHA for 62bc4d0 - Browse repository at this point
Copy the full SHA 62bc4d0View commit details -
Configuration menu - View commit details
-
Copy full SHA for b6397a4 - Browse repository at this point
Copy the full SHA b6397a4View commit details -
Configuration menu - View commit details
-
Copy full SHA for b889050 - Browse repository at this point
Copy the full SHA b889050View commit details -
Plasma is clearing the main drawable before it does offscreen drawing. In Metal, clearing and beginning drawing are linked. Need to cache the clear command until the main drawable pass begins. Strangely enough offscreen buffers like the shadow buffer still aren't clearing. This doesn't match what I've seen from the DirectX branch. Needs further investigation.
Configuration menu - View commit details
-
Copy full SHA for 702262b - Browse repository at this point
Copy the full SHA 702262bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 45b5013 - Browse repository at this point
Copy the full SHA 45b5013View commit details -
Fixing self shadow bug, removing LUT
Avatar was self shadowing because the shadow map reflected the avatar state from the previous frame. The LUT for the shadow maps was a workaround to turn the x position into a color value. Removing the LUT in since we can just directly use that value in Metal instead of needing a texture go between. This also should slightly improve shadow quality over DX. Additional LUT removal
Configuration menu - View commit details
-
Copy full SHA for 2f7e6ca - Browse repository at this point
Copy the full SHA 2f7e6caView commit details -
Initial version of WaveDec1Lay_7
Ahnonay is loading now. But there are clear water rendering issues in Ahnonay that will need to be resolved.
Configuration menu - View commit details
-
Copy full SHA for 207978b - Browse repository at this point
Copy the full SHA 207978bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 793e9b9 - Browse repository at this point
Copy the full SHA 793e9b9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 946f10f - Browse repository at this point
Copy the full SHA 946f10fView commit details -
Fixes directly to the WaveDecEnv shader. Minor changes to WaveSet7. Fixes for function hash table confusing different shaders and not tracking blend mode properly. Possibly related to GPU crashing, and fixes blend mode issues with shaders.
Configuration menu - View commit details
-
Copy full SHA for bec6acd - Browse repository at this point
Copy the full SHA bec6acdView commit details -
Water in Ahnonay uses it, but it wasn't quite enough to prevent all collisions
Configuration menu - View commit details
-
Copy full SHA for fc72800 - Browse repository at this point
Copy the full SHA fc72800View commit details -
Configuration menu - View commit details
-
Copy full SHA for fdc6d27 - Browse repository at this point
Copy the full SHA fdc6d27View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0ef446c - Browse repository at this point
Copy the full SHA 0ef446cView commit details -
Metal was getting a pointer to a uint8_t when it expected a short for the UV count. This was leading to UV count sometimes being read wrong.
Configuration menu - View commit details
-
Copy full SHA for 2b60361 - Browse repository at this point
Copy the full SHA 2b60361View commit details -
Configuration menu - View commit details
-
Copy full SHA for be97c72 - Browse repository at this point
Copy the full SHA be97c72View commit details -
sqrt in HLSL 1.1 implies an absolute value taken of the value, according to the spec. This fixes an issue where water might not render from some angles. This bug could also be present in other shaders, I have not checked yet,
Configuration menu - View commit details
-
Copy full SHA for 4e862c1 - Browse repository at this point
Copy the full SHA 4e862c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 831cbc9 - Browse repository at this point
Copy the full SHA 831cbc9View commit details -
Adding hardware single weight skinning
Some aspects of this are temporary until multiple wieght blending is introduced into the GPU pipeline. Integrated into the vertex shader. Not sure if this should be a compute shader eventually.
Configuration menu - View commit details
-
Copy full SHA for 79a26f8 - Browse repository at this point
Copy the full SHA 79a26f8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 59133aa - Browse repository at this point
Copy the full SHA 59133aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 38ff4c6 - Browse repository at this point
Copy the full SHA 38ff4c6View commit details -
When I first wrote this I picked just a really small number. Now I understand it should be 1.f/255.f to represent the smallest test DirectX can do. Some areas - specifically the Barons Office - are very sensitive to this value. The view outside the windows has some layers where the alpha values should be eliminated - but they hover just barely above zero. A test too small won’t catch them. I’m not sure the purpose of these layers - they don’t seem to add anything visually - but they are there in DirectX too with the same lack of visual contribution..
Configuration menu - View commit details
-
Copy full SHA for 6cb40d0 - Browse repository at this point
Copy the full SHA 6cb40d0View commit details -
Fixing memory pile up during intro movie
The intro movie keeps its own run loop which prevents our autorelease pool from collecting memory until the intro movie is done. This leads to a pile up of gigs (or tens of gigs) of memory as no framebuffer can be released. Apple was nice enough to add NSAutoreleasePool to their list of bridged C++ classes though, so we can insert our own autorelease pool to capture that memory right into the pipeline.
Configuration menu - View commit details
-
Copy full SHA for 496f415 - Browse repository at this point
Copy the full SHA 496f415View commit details -
State tracking is meant to reduce the number of redundant calls to the Metal command encoder. The DX renderer had something similar, but implemented differently. This is the beginning of improving state tracking. I’d like to move materials over to bindless rendering, which should also improve things. There are also more general redundancies to cut down.
Configuration menu - View commit details
-
Copy full SHA for d1ba412 - Browse repository at this point
Copy the full SHA d1ba412View commit details -
Adding texture anisotropy support
This change has caused a performance decline. It’s likely related to the samplers being bound now instead of being hardcoded. Still investigating.
Configuration menu - View commit details
-
Copy full SHA for 8a6f194 - Browse repository at this point
Copy the full SHA 8a6f194View commit details -
Configuration menu - View commit details
-
Copy full SHA for 236c278 - Browse repository at this point
Copy the full SHA 236c278View commit details -
Fixing performance with anisotropic texturing
Metal didn’t like the dynamic array lookup I was doing. Converting it it to static lookups. This has restored expected performance. Also converted the sample type to a function constant. There is cleanup to do now. The fragment uniforms have been reduced to the alpha threshold, which is now awkwardly in a struct by itself. None of the layer data lives there anymore. In the pipeline, the encoding for shader lookup has gotten real messy. I’m probably going to look at adding MSAA first, but the cleanup is really overdue. I’ve had to work through multiple issues already that happened because I tried to do minor tweaks to that code but forgot to touch a specific part.
Configuration menu - View commit details
-
Copy full SHA for 78b3145 - Browse repository at this point
Copy the full SHA 78b3145View commit details -
Configuration menu - View commit details
-
Copy full SHA for f182e96 - Browse repository at this point
Copy the full SHA f182e96View commit details -
Using the power of C++ to move the sampleLayer function into the layers struct. The function can now directly access struct members and doesn’t need them passed as arguments. Having trouble with the array lookup of samplers on Intel graphics and hoping this helps.
Configuration menu - View commit details
-
Copy full SHA for 0985736 - Browse repository at this point
Copy the full SHA 0985736View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f4d76a - Browse repository at this point
Copy the full SHA 0f4d76aView commit details -
Moving drawable pass back down to single pass
Adding a clear shader to clear depth/color as needed without staerting a new pass
Configuration menu - View commit details
-
Copy full SHA for b18d6a0 - Browse repository at this point
Copy the full SHA b18d6a0View commit details -
Fixing rendering issues with state selection
Shaded material states like water weren’t correctly hashing and testing equality based on span properties
Configuration menu - View commit details
-
Copy full SHA for 03b9616 - Browse repository at this point
Copy the full SHA 03b9616View commit details -
Bug fixes and performance improvements for MSAA
MSAA textures are now memoryless. Vertex shader has been improved to reduce memory bandwidth and encoding time.
Configuration menu - View commit details
-
Copy full SHA for 6f82663 - Browse repository at this point
Copy the full SHA 6f82663View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2e76abe - Browse repository at this point
Copy the full SHA 2e76abeView commit details -
Eliminating preshade colors from fragment pass
Also getting rid of the buffers and arguments used to back it. They were only used for lighting, which is in the vertex pass.
Configuration menu - View commit details
-
Copy full SHA for 502ac98 - Browse repository at this point
Copy the full SHA 502ac98View commit details -
Implementing offscreen render support
Ki screenshotting no longer means death
Configuration menu - View commit details
-
Copy full SHA for 50b301a - Browse repository at this point
Copy the full SHA 50b301aView commit details -
Fix for KI snapshots on discrete cards
Texture needs to be blitted out to CPU for discrete cards.
Configuration menu - View commit details
-
Copy full SHA for fd7c091 - Browse repository at this point
Copy the full SHA fd7c091View commit details -
Fixes for cubic target accidental recreation
After a resolution change cubic render targets are always marked as dirty. This causes problems with the KI snapshot renders which will try to recreate the buffer and not re-render it.
Configuration menu - View commit details
-
Copy full SHA for 6d4fc83 - Browse repository at this point
Copy the full SHA 6d4fc83View commit details -
Fixing not using correct number of piggybacks
This was causing a Metal compiler crash because inconsistant function constants were being passed.
Configuration menu - View commit details
-
Copy full SHA for 008dfb8 - Browse repository at this point
Copy the full SHA 008dfb8View commit details -
Fixing graphics options not working
We need to supply at least one display mode. This isn’t perfect - it causes graphics options to set the plate/cursor layer to 800x600. But it’s better.
Configuration menu - View commit details
-
Copy full SHA for 7122c02 - Browse repository at this point
Copy the full SHA 7122c02View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0df7b78 - Browse repository at this point
Copy the full SHA 0df7b78View commit details -
Configuration menu - View commit details
-
Copy full SHA for d44b6b6 - Browse repository at this point
Copy the full SHA d44b6b6View commit details -
My optimization broke shadow cast rendering. :( Fixed!
Configuration menu - View commit details
-
Copy full SHA for 6a6d5c7 - Browse repository at this point
Copy the full SHA 6a6d5c7View commit details -
Configuration menu - View commit details
-
Copy full SHA for f0bb4dd - Browse repository at this point
Copy the full SHA f0bb4ddView commit details -
Fixing menu going missing sometimes
The new manual clear could have its draw culled if backface or frontface culling was set before the clear pass. Disabling culling. I could wind my rect the other way - but the engine is allowed to front face cull. Easiest to just turn it off.
Configuration menu - View commit details
-
Copy full SHA for d0266bf - Browse repository at this point
Copy the full SHA d0266bfView commit details -
Fixing crashes on Intel integrated graphics. It was having trouble wi…
…th the sampleTypes being defined as size_t - which is way too large anyway. uint32_t is probably too large too but going with what works for now. Also doing some other cleanup and fixing unified vs Apple family capability mixups.
Configuration menu - View commit details
-
Copy full SHA for 6220ac3 - Browse repository at this point
Copy the full SHA 6220ac3View commit details -
Fixing postprocess texture options
That should be LoadActionDontCare, and StoreActionStore. I had the opposite. Whoops!
Configuration menu - View commit details
-
Copy full SHA for 603e9ac - Browse repository at this point
Copy the full SHA 603e9acView commit details -
Fixing render glitch due to sampleType length mixup
Bitten by this again. There’s got to be a better way. Also dropping the size down to uint8_t.
Configuration menu - View commit details
-
Copy full SHA for afdee69 - Browse repository at this point
Copy the full SHA afdee69View commit details -
Re-creating plate manager when reloading device
This allows the intro movie to properly resize (which relies on the plate manager getting re-created.)
Configuration menu - View commit details
-
Copy full SHA for 6f1671a - Browse repository at this point
Copy the full SHA 6f1671aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1ed5e18 - Browse repository at this point
Copy the full SHA 1ed5e18View commit details -
This should align the framebuffer device and the render device on dual GPU Intel Macbook Pros. Previously it would try to draw to an Intel IGP framebuffer while rendering on the discrete card. The way this is implemented is a bit of a hack. The Mac client app probably needs a deeper refactoring.
Configuration menu - View commit details
-
Copy full SHA for 0d680e3 - Browse repository at this point
Copy the full SHA 0d680e3View commit details -
Fixing water on Nvidia/MSL/Fast Math
The water vertex shader needs to square as part of it’s reference math, but the value it needs to square can sometimes be negative. HLSL usually just does the “right” thing but MSL (and GLSL) need more direction and can treat squaring or square rooting a negative as undefined behavior. Absolute valuing first - in since we know that a square will always produce a positive. Long term - this HLSL code was ported over directly. It’s possible that this code could be replaced by some other Metal functions like reflect. More research is required.
Configuration menu - View commit details
-
Copy full SHA for fb8a12f - Browse repository at this point
Copy the full SHA fb8a12fView commit details -
Updating “fixed” shaders to remove const samplers
This was suplimented by the samplers that are set as pipeline resources to support configurable sampling.
Configuration menu - View commit details
-
Copy full SHA for 138690b - Browse repository at this point
Copy the full SHA 138690bView commit details -
Moving redering to main thread
Also adding run loop to take care of intro movie not running on main thread, and honoring full screen setting
Configuration menu - View commit details
-
Copy full SHA for 6e7243a - Browse repository at this point
Copy the full SHA 6e7243aView commit details -
The previous fog algorithm was very wrong, but also covering for a problem where fog was being applied to layers it should not have been
Configuration menu - View commit details
-
Copy full SHA for 160cda0 - Browse repository at this point
Copy the full SHA 160cda0View commit details -
Configuration menu - View commit details
-
Copy full SHA for e183e50 - Browse repository at this point
Copy the full SHA e183e50View commit details -
Flat color base layers were blending against themselves
Configuration menu - View commit details
-
Copy full SHA for f84ff03 - Browse repository at this point
Copy the full SHA f84ff03View commit details -
Fixes for problematic assets in Kadish
A cube map near or in the vault in Kadish has inconsistant cubic mipmap face sizes, and will cause Metal to crash. This change will cause Metal to manually compute mipmap sizes, and then load the data anyway. This is what DX does. The mipmaps affected don’t seem to be intended to be used.
Configuration menu - View commit details
-
Copy full SHA for 1d1f700 - Browse repository at this point
Copy the full SHA 1d1f700View commit details -
Fixing fog color getting mingled with projections
Calc lighting was done before projections were applied. This was allowing fog (which is part of lighting calc in Metal) to be enabled for projection layers. This was most visible in Kadish. This code is kind of messy, but has been through several improvement passes already.
Configuration menu - View commit details
-
Copy full SHA for e0e69c8 - Browse repository at this point
Copy the full SHA e0e69c8View commit details -
Moving opacity check after lighting calc
This fixes steam in Gira and probably other things. This function is still kind of a mess and needs more cleanup. The DX version is also messy though.
Configuration menu - View commit details
-
Copy full SHA for c971b25 - Browse repository at this point
Copy the full SHA c971b25View commit details -
Fixing infinite loop bug created by early return
Have to pop the layers. Code is still messy and needs a better solution.
Configuration menu - View commit details
-
Copy full SHA for 1de1a58 - Browse repository at this point
Copy the full SHA 1de1a58View commit details -
Caching z bias state. Also caching cull mode state.
Configuration menu - View commit details
-
Copy full SHA for c25ee81 - Browse repository at this point
Copy the full SHA c25ee81View commit details -
Should fix bugs with water not drawing and cull mode not being tracked properly
Configuration menu - View commit details
-
Copy full SHA for 711a6e8 - Browse repository at this point
Copy the full SHA 711a6e8View commit details -
Clearing up redundant loops, clarifying code, fixing some latent possible issues with pushover layers not being consistantly applied
Configuration menu - View commit details
-
Copy full SHA for 4ffceed - Browse repository at this point
Copy the full SHA 4ffceedView commit details -
Early version of Metal font rendering
Still has known issues to fix
Configuration menu - View commit details
-
Copy full SHA for 0ff0d1a - Browse repository at this point
Copy the full SHA 0ff0d1aView commit details -
Configuration menu - View commit details
-
Copy full SHA for bbbab15 - Browse repository at this point
Copy the full SHA bbbab15View commit details -
Configuration menu - View commit details
-
Copy full SHA for e11c4dd - Browse repository at this point
Copy the full SHA e11c4ddView commit details -
Reflections were having shadows renderer on them with out of range shadow values. This clamps the values so they can’t be out of range. The DX implementation used a LUT texture here that implicitly clamped the range.
Configuration menu - View commit details
-
Copy full SHA for 9f24e42 - Browse repository at this point
Copy the full SHA 9f24e42View commit details -
Fixing case where age UV index was encoded out of range (Great Tree Pub), and texture had no usable mipmap levels (GoMePubNew)
Configuration menu - View commit details
-
Copy full SHA for 64e6188 - Browse repository at this point
Copy the full SHA 64e6188View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4f2e935 - Browse repository at this point
Copy the full SHA 4f2e935View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2920f37 - Browse repository at this point
Copy the full SHA 2920f37View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5620437 - Browse repository at this point
Copy the full SHA 5620437View commit details -
Configuration menu - View commit details
-
Copy full SHA for 22d96d0 - Browse repository at this point
Copy the full SHA 22d96d0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9d551c0 - Browse repository at this point
Copy the full SHA 9d551c0View commit details -
Initial version of private Metal textures
Textures can now be stored in private storage in Metal - which means on discrete cards they can be VRAM only. This feature is disabled on Apple Silicon - but perhaps should be enabled. Even though Apple Silicon doesn’t have VRAM, the GPU might be able to store a private texture in a better storage format.
Configuration menu - View commit details
-
Copy full SHA for 006c91d - Browse repository at this point
Copy the full SHA 006c91dView commit details -
Fixing copy allocator for blur
Description is a string, not the texture description.
Configuration menu - View commit details
-
Copy full SHA for 45aa3f2 - Browse repository at this point
Copy the full SHA 45aa3f2View commit details -
This is a leftover from the initial Metal prototype
Configuration menu - View commit details
-
Copy full SHA for 99ff520 - Browse repository at this point
Copy the full SHA 99ff520View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6fa6565 - Browse repository at this point
Copy the full SHA 6fa6565View commit details -
Ranges is a C++20 feature I didn’t end up using anyway
Configuration menu - View commit details
-
Copy full SHA for eb28191 - Browse repository at this point
Copy the full SHA eb28191View commit details -
Also forcing plMetalTextFont and plates back through the devices pipeline state management to match the current color space
Configuration menu - View commit details
-
Copy full SHA for 406fce4 - Browse repository at this point
Copy the full SHA 406fce4View commit details -
Removing Poisson Disk Shadow Treatment
Shadow blurring would be the best improvemnt for now (along with upgrading shadow resolution.) This could come back in the future - but for now it’s not really helping much.
Configuration menu - View commit details
-
Copy full SHA for 7a8f9d3 - Browse repository at this point
Copy the full SHA 7a8f9d3View commit details -
Enabling staging textures on all platforms
All textures now get blitted to private memory.
Configuration menu - View commit details
-
Copy full SHA for 50d03ca - Browse repository at this point
Copy the full SHA 50d03caView commit details -
Re-factoring how lights are encoded
Lights can now go into a variable length buffer - trying to reduce memory traffic. Ideally the pipeline should probably hold these as a vector, but this is a start.
Configuration menu - View commit details
-
Copy full SHA for 56b11e6 - Browse repository at this point
Copy the full SHA 56b11e6View commit details -
Also fixing finding client data when app is launched from Finder
Configuration menu - View commit details
-
Copy full SHA for 5ff886e - Browse repository at this point
Copy the full SHA 5ff886eView commit details -
Configuration menu - View commit details
-
Copy full SHA for ed6d806 - Browse repository at this point
Copy the full SHA ed6d806View commit details -
Configuration menu - View commit details
-
Copy full SHA for 85da7d9 - Browse repository at this point
Copy the full SHA 85da7d9View commit details -
Configuration menu - View commit details
-
Copy full SHA for e57ad87 - Browse repository at this point
Copy the full SHA e57ad87View commit details -
Turning off main framebuffer viewport setting
The engine doesn’t know the size, so it keeps setting it to the wrong one. The default viewport size is just fine anyway.
Configuration menu - View commit details
-
Copy full SHA for 8cc5e33 - Browse repository at this point
Copy the full SHA 8cc5e33View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0af96b9 - Browse repository at this point
Copy the full SHA 0af96b9View commit details -
Configuration menu - View commit details
-
Copy full SHA for d64b12c - Browse repository at this point
Copy the full SHA d64b12cView commit details -
Binding samplers at encoder insetad of in shader
This removes the function constants for the sampler type - and all the logic that goes with. Samplers are now encoded in an array. This should simplify what the fragment shader has to do - and should fix Intel Integrated Graphics which was unhappy with samplers as a non-const variable.
Configuration menu - View commit details
-
Copy full SHA for 4befb95 - Browse repository at this point
Copy the full SHA 4befb95View commit details -
Configuration menu - View commit details
-
Copy full SHA for ad2774b - Browse repository at this point
Copy the full SHA ad2774bView commit details -
Sampler states work again on projections
Sampler state code is now shared. I’m not restoring the monolithic “encode all the layers” treatment that DirectX did. I need some flexbility to encode argument buffers at a later point, which means the material can’t just bind itself to encoder states inside of a black box function.
Configuration menu - View commit details
-
Copy full SHA for f3e8184 - Browse repository at this point
Copy the full SHA f3e8184View commit details -
Cleaning up the variable names as well. Spot lighting was broken on Intel Integrated Graphics. The spot lighting intensity wasn’t clamped before the falloff calculation.
Configuration menu - View commit details
-
Copy full SHA for 0a1751a - Browse repository at this point
Copy the full SHA 0a1751aView commit details -
Culling redundant position calculations
Position should be calculated only once now in the vertex shader. Position will also be blended with any skinning matrices before the lighting pass. That’s technically a fix - even though I haven’t seen any defects because of that yet.
Configuration menu - View commit details
-
Copy full SHA for 73756ff - Browse repository at this point
Copy the full SHA 73756ffView commit details -
Kadish light spots on ground now project (seemingly) correctly. Lighting was not correctly configured.
Configuration menu - View commit details
-
Copy full SHA for f04eeaa - Browse repository at this point
Copy the full SHA f04eeaaView commit details -
Fixing weird shadow flickering issues
Shadow light needs to be zeroed
Configuration menu - View commit details
-
Copy full SHA for 4dbc852 - Browse repository at this point
Copy the full SHA 4dbc852View commit details -
Avatar textures for other players might be loaded in after material shader creation. That means the material shader state needs to be recreated for a color -> texture transition. Setting the dirty flag when an avatar texture is set - and checking it in the material ref.
Configuration menu - View commit details
-
Copy full SHA for e626c9d - Browse repository at this point
Copy the full SHA e626c9dView commit details -
The lighting struct was being written wrong when projection lights are also present. There’s a bit in lighting where it scales down lights that aren’t rendered which - makes no sense.
Configuration menu - View commit details
-
Copy full SHA for 8e5fb97 - Browse repository at this point
Copy the full SHA 8e5fb97View commit details -
Restoring the original light count for Plasma for Metal. 32 lights is a lot - but there are a lot of visible improvements. This should possibly be tiered based on hardware.
Configuration menu - View commit details
-
Copy full SHA for da55553 - Browse repository at this point
Copy the full SHA da55553View commit details -
Sycronizing GPU state when correcting blend modes
This should fix Ahnonay in it’s current state on Trollland
Configuration menu - View commit details
-
Copy full SHA for 261dc21 - Browse repository at this point
Copy the full SHA 261dc21View commit details -
Filtering available texture bindings by type
Cubic bindings will no longer be present for layers that don’t have cubic textures.
Configuration menu - View commit details
-
Copy full SHA for b0c1eab - Browse repository at this point
Copy the full SHA b0c1eabView commit details -
Fixing crash w aux spans and projections
Need to reset the index buffer earlier in the render span function. Render all projections was a late addition, and it got added to the wrong place relative to the buffer restoration.
Configuration menu - View commit details
-
Copy full SHA for 0578e89 - Browse repository at this point
Copy the full SHA 0578e89View commit details -
Fixing shadows not rendering on some hardware
Shadow commands were being given inconsistant function constants on compliation. The shader is looking for the source types to be properly encoded as constants, but the shadow shader was hard coded to look for the source type constant for layer 3. This caused layers 1 and 2 to be dropped and not properly bound because the shader assumed there was nothing there.
Configuration menu - View commit details
-
Copy full SHA for 4309740 - Browse repository at this point
Copy the full SHA 4309740View commit details -
Fixes for WaveRip and vertex index streaming
Streaming of subsets of vertex indexes was broken, fixing. Because of triple buffering or the index buffers, there might still be bugs. A partial update of a buffer should be applied on the previous version of the buffer, but we have to buffer swap. Should consider copying the previous buffers contents into the new buffer before updating for consistancy. WaveRip was also badly broken. Fixing.
Configuration menu - View commit details
-
Copy full SHA for 3155a3c - Browse repository at this point
Copy the full SHA 3155a3cView commit details -
Configuration menu - View commit details
-
Copy full SHA for d68fbfa - Browse repository at this point
Copy the full SHA d68fbfaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7433165 - Browse repository at this point
Copy the full SHA 7433165View commit details -
Configuration menu - View commit details
-
Copy full SHA for eb1f3c8 - Browse repository at this point
Copy the full SHA eb1f3c8View commit details -
Using target_include_directories
Haven’t added platform specific scoping yet
Configuration menu - View commit details
-
Copy full SHA for 7d00365 - Browse repository at this point
Copy the full SHA 7d00365View commit details -
Configuration menu - View commit details
-
Copy full SHA for ab16219 - Browse repository at this point
Copy the full SHA ab16219View commit details -
Removing extra " from pfAllCreatables
Co-authored-by: dgelessus <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for c4cec5c - Browse repository at this point
Copy the full SHA c4cec5cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9bdea54 - Browse repository at this point
Copy the full SHA 9bdea54View commit details -
Shadow stages 0 and 1 and the normal stages 0 and 1 conflict and were tromping over each other. Redoing this part of the pipeline to allow for alpha blend textures to be sourced from textures 0 or 1, while allowing the alpha blend texture coordinates to be derived in stage 3.
Configuration menu - View commit details
-
Copy full SHA for d36cdeb - Browse repository at this point
Copy the full SHA d36cdebView commit details -
Support for row major hsMatrix
Swapping the shaders around to support row major hsMatrices and eliminating the swap function. This change hasn’t filtered down to the dynamic effects which get their uniforms through a giant buffer provided by the engine itself.
Configuration menu - View commit details
-
Copy full SHA for fbee202 - Browse repository at this point
Copy the full SHA fbee202View commit details -
Removing most double decs from Metal shader
Moving to using hsGMatStateEnums.h
Configuration menu - View commit details
-
Copy full SHA for 7460ded - Browse repository at this point
Copy the full SHA 7460dedView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0c63875 - Browse repository at this point
Copy the full SHA 0c63875View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1c25979 - Browse repository at this point
Copy the full SHA 1c25979View commit details -
Cleaning up sampler bug from optimizations
Old sampler bindings were still in place hiding that per layer sampler binding was taking place during shader pre-compile. That caused state confusion because render encoders aren’t available during pre-compile. Removing old sampler bindings and making sure sampler binding only happens during draw - not precompiles.
Configuration menu - View commit details
-
Copy full SHA for d971982 - Browse repository at this point
Copy the full SHA d971982View commit details -
Moving shadow casting into lightless custom shader
Shadows no longer need to alter light state - which is prep for the light refactor. Adds a programmable shadow pipeline that has it’s own state independent of the light system. Rendering of shadows is now done directly instead of through light manipulation and the “fixed” function vertex shader.
Configuration menu - View commit details
-
Copy full SHA for a68ea2e - Browse repository at this point
Copy the full SHA a68ea2eView commit details -
Fixing bug in projections. Projections altered the sampler state for …
…layer 0 without updating state tracking. (Perhaps sampler state changes should be wrapped in a function.)
Configuration menu - View commit details
-
Copy full SHA for ac0884f - Browse repository at this point
Copy the full SHA ac0884fView commit details -
Adding graphics pipelines to pfFeatureInc
Should allow tests to build on Mac again. pfFeatureInc included the Metal pipeline header, but didn’t declare it as a dependency.
Configuration menu - View commit details
-
Copy full SHA for 33e58a9 - Browse repository at this point
Copy the full SHA 33e58a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for b8cf163 - Browse repository at this point
Copy the full SHA b8cf163View commit details -
Configuration menu - View commit details
-
Copy full SHA for f0041e9 - Browse repository at this point
Copy the full SHA f0041e9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 99d3c98 - Browse repository at this point
Copy the full SHA 99d3c98View commit details -
Configuration menu - View commit details
-
Copy full SHA for fbffe17 - Browse repository at this point
Copy the full SHA fbffe17View commit details -
Configuration menu - View commit details
-
Copy full SHA for 156fdbd - Browse repository at this point
Copy the full SHA 156fdbdView commit details -
Configuration menu - View commit details
-
Copy full SHA for b5f47c1 - Browse repository at this point
Copy the full SHA b5f47c1View commit details -
Adding comment for Metal UBO encoding
Or rather the lack of UBO encoding.
Configuration menu - View commit details
-
Copy full SHA for a0277c6 - Browse repository at this point
Copy the full SHA a0277c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for f45c306 - Browse repository at this point
Copy the full SHA f45c306View commit details -
Configuration menu - View commit details
-
Copy full SHA for 448fbc6 - Browse repository at this point
Copy the full SHA 448fbc6View commit details -
Configuration menu - View commit details
-
Copy full SHA for da3da39 - Browse repository at this point
Copy the full SHA da3da39View commit details -
Moving some code to static_cast
I likely have not found all the C style casts.
Configuration menu - View commit details
-
Copy full SHA for b0428cd - Browse repository at this point
Copy the full SHA b0428cdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7bc5803 - Browse repository at this point
Copy the full SHA 7bc5803View commit details -
Removing delegate message filter for window size change. This was pre…
…venting a delegate message from properly setting Plasma resolution on launch.
Configuration menu - View commit details
-
Copy full SHA for d9f0cb2 - Browse repository at this point
Copy the full SHA d9f0cb2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9568467 - Browse repository at this point
Copy the full SHA 9568467View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8dab1e3 - Browse repository at this point
Copy the full SHA 8dab1e3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0705ab6 - Browse repository at this point
Copy the full SHA 0705ab6View commit details -
Configuration menu - View commit details
-
Copy full SHA for ea39b7e - Browse repository at this point
Copy the full SHA ea39b7eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 168277f - Browse repository at this point
Copy the full SHA 168277fView commit details -
Configuration menu - View commit details
-
Copy full SHA for f65a5eb - Browse repository at this point
Copy the full SHA f65a5ebView commit details -
Configuration menu - View commit details
-
Copy full SHA for d662e4c - Browse repository at this point
Copy the full SHA d662e4cView commit details -
Configuration menu - View commit details
-
Copy full SHA for b4899d7 - Browse repository at this point
Copy the full SHA b4899d7View commit details -
Configuration menu - View commit details
-
Copy full SHA for da43aff - Browse repository at this point
Copy the full SHA da43affView commit details -
Giving renderer direct access to the Metal layer and removing drawabl…
…e callback (cherry picked from commit bcb7266f29fc71b136ce9c973fe41aac445ebfec)
Configuration menu - View commit details
-
Copy full SHA for db3c6d4 - Browse repository at this point
Copy the full SHA db3c6d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1570887 - Browse repository at this point
Copy the full SHA 1570887View commit details -
Configuration menu - View commit details
-
Copy full SHA for 986e8d3 - Browse repository at this point
Copy the full SHA 986e8d3View commit details
Commits on Nov 16, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 7b548f4 - Browse repository at this point
Copy the full SHA 7b548f4View commit details
Commits on Nov 18, 2023
-
Configuration menu - View commit details
-
Copy full SHA for f3d9764 - Browse repository at this point
Copy the full SHA f3d9764View commit details -
Configuration menu - View commit details
-
Copy full SHA for e34919f - Browse repository at this point
Copy the full SHA e34919fView commit details
Commits on Nov 25, 2023
-
The render command encoder is create lazily - and clear is not a draw call in Metal. A clear only pass meant no render was being encoded for the command buffer. The render command encoder management could use a bit of cleaning - but for now manually forcing the lazy creation of a command encoder. This could be probably moved to a non-lazy model - but it’s lazy right now because we’re holding for a clear command.
Configuration menu - View commit details
-
Copy full SHA for 0df34e5 - Browse repository at this point
Copy the full SHA 0df34e5View commit details
Commits on Nov 27, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 6c96be0 - Browse repository at this point
Copy the full SHA 6c96be0View commit details
Commits on Nov 28, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 245b00f - Browse repository at this point
Copy the full SHA 245b00fView commit details