Commit graph

117 commits

Author SHA1 Message Date
marauder2k7 3aef90a6bc Update GFXTextureManager and GBitmap
GBitmap Changes:
Added all other formats to gbitmap that we support
gbitmap now supports cubemaps
added converters for all these other formats
added stb_image_resize for extrudemips so we can extrude mipmaps for all other formats

GFXTextureManager
Can now directly make cubemaps and texture arrays based on the GFXTextureProfile
API implementations for all functions that cubemaps and arrays needed
2025-12-22 10:29:01 +00:00
AzaezelX 00ee42e2a8 fix directx rendertarget crash
asset brower previews were asserting due to a cornercase rt assignment
also ditch mipgen for rts targetting a texture profile that's marked as nomip, and adjust hdr uopsampling shader to compensate for overdarks
2025-08-11 23:21:20 -05:00
AzaezelX 36c906a72d allow "null surfaces" to register mResolveTargets to at least attempt to gen mips 2025-08-04 17:55:18 -05:00
AzaezelX 022f8d1732 set GFXTextureManager::_validateTexParams to respect sen mipcaps
also kill console spam
2025-08-04 14:36:11 -05:00
AzaezelX 3cdbd4e87e don't let GFXD3D11TextureTarget::deactivate() try to generate mips if we haven't told that target to do so 2025-08-04 14:11:00 -05:00
AzaezelX cacd8a6064 mipwork, laregly courtesy of @mmarauder2k9-torque 2025-08-03 20:25:31 -05:00
AzaezelX 61e4107c39 handle feeding a cubemap via 2d textures
courtessey marauder
2025-03-24 11:32:09 -05:00
marauder2k7 c476b292a6 Update gfxD3D11Cubemap.cpp
put arraySize check back in
2025-03-20 15:51:39 +00:00
marauder2k7 ef856e23fa fix and cleanup 2025-03-20 15:26:52 +00:00
AzaezelX c830d20150 update max probecount
dx11 has a 2048/6 cap on how many cubemaps can fit in a given array. bump the probe count up to just under that to buy folks head room while we work on revising a more robust solution
2025-02-19 19:17:19 -06:00
marauder2k7 055ca0ae00 use screenshot for eye dropper
instead of using backbuffer image, use the screenshot so it captures everything
2025-01-23 20:23:47 +00:00
marauder2k7 f288ffccba cubemap baking fix
the key part of this issue was to invert the order we were baking the faces. Not much of a fix but it works better than before need to get a proper fix implement
the way the issue is copying X+ into every other face but isnt doing it in the reverse order means the rtv for face 0 must be being replicated into all other faces.
2024-12-04 21:57:32 +00:00
marauder2k7 ce4d861658 Test PR for generating cubemap mips
note ibl skips prefilter step and prefilter just becomes the cubeRefl.getCubemap()

Generates cubemap mip levels after the bake correctly on DX side.
2024-04-18 07:56:52 +01:00
marauder2k7 2b295fb7f0 rest of virtuals removed
virtuals removed and replaced with override where necessary on the rest of the code base, clang-tidy to the rescue.
2024-03-18 18:40:22 +00:00
marauder2k7 11d8604d8e ogl device buffer creation
now ogl mirrors dx side with ubo creation and clearing pushed up to the device level.
2024-03-14 14:23:08 +00:00
marauder2k7 1e8841e6b5 pushed buffer creation up to the device level
now shaders ask the device to create a buffer, if a buffer of the same name and size already exist then a pointer to that buffer is returned instead. Going to see if something similar can be added to the opengl end.
2024-03-14 13:32:21 +00:00
marauder2k7 e6c653c441 warnings cleanup
cleanup and some warning fixes
2024-03-14 08:28:11 +00:00
marauder2k7 9dc5ae833b opengl ubo setup
opengl can now compile with ubo buffer objects similar to cbuffers on dx side.

cleaned double up of data from both sides, gfxhandles only need to use the desc info instead of holding onto its own.
2024-03-13 22:23:01 +00:00
marauder2k7 4a6fbd5811 DX and GL Geometry shaders added
Added the dx and gl geometry shader compile codes.
2024-03-06 13:51:50 +00:00
marauder2k7 017246cfa3 Update gfxD3D11Shader.cpp 2024-03-01 14:30:31 +00:00
marauder2k7 a7021c0ed3 cleanup
Reverted back to a 2d array since when the const buffer changes are made to the shaders they will be completely swapped out for a 1d array with a max size of 16 for the program, id3d11buffers will be shared across shaders apart from object buffers. We still need to decide on a structure to get everything setup so to keep functionality a max of 2 buffers per stage with 1 buffer as a padding so we can start coding constant buffers right away
2024-02-29 14:34:22 +00:00
marauder2k7 cd8914b9ad reverse bitshift
need to reverse the bitshift on shaderstages so we get values between 0-5, need to also revert the mBoundConstVec back to a 2dimensional array so that the binding point can be dynamic as well.
2024-02-27 20:59:10 +00:00
marauder2k7 040bbdd6d6 Update gfxD3D11Shader.cpp
turns out we dont need to do this if both exist the bind point gets changed anyway
2024-02-27 14:51:59 +00:00
marauder2k7 e9a38539a3 multiple desc per handle
Added multiple descriptions to handles.

While maps are very efficient and match data very quickly due to hashing and what not, they are tricky memory wise, we cant clear them if they are only made up of structs and enums. Need to explore other methods for doing this. Original system had a sub buffer system with a check based on whether the handle was marked vertex/pixel. With 6 stages possible now we need to think of a more effective method. Since shaderstage is now a bit flag maybe some sort of streaming setup could be used to write without a loop.
2024-02-27 09:15:19 +00:00
marauder2k7 78df01af55 Update gfxD3D11Shader.cpp
plugging leaks
2024-02-26 22:44:32 +00:00
marauder2k7 37636bcd26 switch to vectors
uses vectors for buffers instead of 2d array
2024-02-26 22:25:11 +00:00
marauder2k7 c876e86957 Update gfxD3D11Shader.cpp
cleanups
2024-02-26 16:38:56 +00:00
marauder2k7 b979f4befc everything works
... apart from the sun =/
2024-02-26 09:22:19 +00:00
marauder2k7 e24971517e commit before pr 2024-02-25 23:10:23 +00:00
marauder2k7 25bc9cf354 stumped
buffers seem to be being added correctly, but for whatever reason render is not correct =/
2024-02-25 22:51:37 +00:00
marauder2k7 af29a2af0a Remove code duplication
Removed code duplication, all types can be routed through the same function apart from matrices.
2024-02-25 15:26:48 +00:00
marauder2k7 8c01a1a85b Working
This commit has everything rendering kind of correctly, but the colours seem off from lighting.
2024-02-25 13:39:22 +00:00
marauder2k7 6355e122d2 compare before change
check to see if data is different in internal sets before changing values
2024-02-24 19:52:35 +00:00
marauder2k7 3f3ef12c3b handle the global buffer
global buffer needs a special case
2024-02-24 17:33:28 +00:00
marauder2k7 e8d8138c74 working
last commit before global conform
2024-02-24 16:26:09 +00:00
marauder2k7 8887e21f4b working
working example, renders all gui controls.

We still cant render a scene, something to do with the constant buffer at slot 0 of the vertex shader being too small..... gotta figure this one out..................
2024-02-24 14:42:30 +00:00
marauder2k7 dd4d48d654 working example
now its working.. still not perfect but its getting there
2024-02-24 12:40:12 +00:00
marauder2k7 42b8748f5b bkup
still memory heap issue
2024-02-24 12:04:53 +00:00
marauder2k7 4caa54ad7e working example
everything is working apart from samplers......
2024-02-23 21:27:44 +00:00
marauder2k7 a1e2f781a8 Set constant buffers
added logic to set constant buffers dx side
2024-02-23 20:06:46 +00:00
marauder2k7 97ed522667 gfxD3D handles and buffermap
init handles coded.
bufferMap added.
2024-02-23 17:18:45 +00:00
marauder2k7 630bee97c7 backup 2024-02-22 21:37:44 +00:00
marauder2k7 55519aac57 Shader refactor
Refactored DX Shader compilation and reflection to be more similar to opengl
Added support for more than 1 const buffer per shader stage.

This is boilerplate code, no functionality yet, that will be added in further commits. Though this builds without errors do not try and run it at this point.
2024-02-22 09:58:45 +00:00
JeffR 0bdacb8795 Testing just disabling gfx device enumeration in test mode 2023-07-23 14:42:13 -05:00
Areloch 368b687043 This implements a fix to an issue with the CICD that causes a segfault.
The fix adds a sanity check to the D3D and GL device enumeration function that exits early if there's no registered display from the OS(implying it's running in commandline).
With newer versions of SDL, attempting to enumerate the GL device causes a segfault because the OS will return back a valid context, but the context isn't actually valid. So when tested against, it crashes. Avoiding enumerating the device when you're not in a position to render works around the issue.

TODO: If the machine is running in terminal-only mode, and thus has no valid render context, but still has a monitor plugged into the machine, it can sidestep the sanity check and still result in a segfault. Need a more robust check for that circumstance in a future fix.
2023-07-23 01:04:29 -05:00
marauder2k7 63b2aba467
Apply suggestions from code review 2023-07-19 15:41:24 +01:00
marauder2k7 e325902bac init commit 2023-07-19 13:36:14 +01:00
AtomicWalrus 75625dc679 Reverse depth & 32F buffer format
-Adds reversed depth projection model, dramatically increasing depth buffer effective resolution.
-Adds 32F depth 8U stencil format GFXFormatD32FS8X24 (following DX naming conventions). Note this is a 64-bit format, and likely not suitable for mobile platforms. Revert to GFXFormatD24S8 in renderManager.tscript for mobile & "ancient" platforms.
-Corrects alignment of texture type details array.
2023-04-14 20:13:28 -06:00
Johan Mattsson 77e808cc3a
Use correct calculation for dStrncat 2023-03-05 11:28:23 +01:00
Johan Mattsson fa5b377ec3
Fix argument to dStrncat 2023-03-04 21:47:04 +01:00