Adds the ground work for geometry shaders
Expands shaderData and gfxShader to allow for more shader types
note: when building a GFXShader in source you have to call setShaderStageFile with the shaderStage and the filepath for that stage.
Once we add compute shaders this will become more apparent as compute shaders are a stage of their own and do not require vertex and pixel files whereas other shaders sometimes do.
Incorrect cmake directory was messing up reading from zips
STB was failing to read from zips, it was failing to get the file info, something we were using as an early out, now if that files on the filepath, we use the memory read instead since stream needs to be a success to get to that point.
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
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.
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.
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..................
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.
Updated IES loader to use torque math functions and calls in the problem areas for mac and linux.
New F32_MIN_EX which is lower than F32_MIN (required for ies profiles)
ADDED: Ability to add IES profile as the cookie texture slot in both point lights and spot lights
TODO:
Have the IES Profile also drive the settings for the lights.
Make it work with Cookie textures. IES profiles are to be another slot in the advanced light section.
-Removed LPNG
-Removed LJPEG
-Re-Added DefferredPNGWriter from rextimmy stb work
Commented out lines about file saving and reading in gfont, these are good for debugging font saves.
it's getting there, but there have been a few spots noted where it eroneously corrupts text, so we'll have to pull this back out for a bit barring a proper resolution
review of per and post bake protocols showed that the CAPTURING shader macro was not being properly recompiled in. as opengl was not playing nice with a simple batch shader recompilation for all effected shaders, a full lightmanager restart is at time of writing required. once we have a proper globally cached scene structure stored off GPU side, we'll want to change GFXShader::addGlobalMacro("CAPTURING", String("1")); on over to dirtying that value in the cached buffer via setting a shader global uniform
review of prefilter examples shows a fixed sample count of 1024 across multiple implementations, so we'll use the standard barring further research into where that number is comming from for a scalar approach
review of gl shaders shows a doubleup in compiled state testing, so slimmed that down and added additional debugging reports
Added support for .hdr format, atm just being converted to ldr after the exposure is applied.
cleanup dds file
PNG skips 16bit altogether at the moment for textureArray issues.
Generating image previews of image assets was failing
DDS remove redundant check for stream status.
STB requires the file to be free before being written to, move check to make sure we can open the path into gBitmap and remove FileStream checks from everywhere else.