Nope, i've tried in the past but Halo just doesn't like it. Plus, this isn't really breaking any limitations in the engine, it just adds to what is already there.
Printable View
Update 27\01\10
So, after the MASSIVE response from the last release i've changed\added\removed a bunch of code for another release :D.
>>Download<<
Included in this release:
The OS d3d9 DLL
Updated shaders
An example tagset of putting post processes into a map (damnation_pp)
An already compiled damnation_pp
Latest build of usertool
New tag definitions and tag_groups.map
Source
Changed:
- All custom DxWrapper code has been moved to its own GBuffer component, which just smartens things up and makes more sense.
- In the hopes of better performance the (now) GBuffer only outputs depth into a 32bit single channel floating point texture, with velocity and normals going into two, two channel 16bit floating point textures. The normals z value is no longer stored as it can be calculated on the fly.
- There are no longer any changes made to halo's vertex shaders as the GBuffer now only uses two of its own vertex shaders. Also steps have been taken to reduce unneeded rendering whch should boost performance.
- Motion blur now works best if its amount is left as 1.0
- ZEnable, ZWriteEnable and StencilEnable no longer need to be set to false in the shader
Added:
- All post process shaders now use a tesselated quad when rendered. External shaders use a 5x5 quad while internal shaders can have their quad defined in the shader_post_process_collection tag. This could theoretically increase performance, however it does mean that....
- Shaders now require a vertex shader to function.
- An addition which could be used for any OS endevour, not just post processing, is the os_bitmap tag. As reverse engineering Halo's bitmap loading system is beyond me i've take the route of creating my own simple bitmap tag which can store any texture type in most of the directX formats. The usertool build included provides the way of compiling your own os_bitmaps.
- I've also added another tag to the set which is the shader_post_process_instance tag, which allows you to override values set in a shader_post_process tag without having multiple copies of your shader in the map cache.
- Also added is a Post Processing menu option to the OS menu which allows you to toggle internal effects, external effects and motion blur.
- The current HUD scale is now accessible at shader level so shaders that rely on the HUD can now scale appropriately.
- The GBuffer normals now include BSP normal maps.
Removed:
- The dodgy object velocity in the previous build has been removed until such a time that I know how to implement it properly.
- All fake HDR code has been disabled as it sucks ass. Might be put back in if I can think of a better way of doing things.
Fixed:
- The HUD can now be disabled with no ill effects.
- Alpha tested models (trees/bushes/etc) now render to the GBuffer correctly.
- For render points 0-2, the black flash when picking up active camouflage is gone.
TODO:
- In the shader_post_process_collection tag, effects now have "not active when zoomed" and "not active when in a vehicle" flags but these have not been implemented yet.
- Find a pointer to the current far clip distance and expose the value to shaders.
As a side effect of using my own vertex shaders for the GBuffer rather than adding code to Halo's shaders, i've decided to expand the shader replacement code so that you can edit the shaders externally. I've decompiled and saved all of Halo's vertex and pixel shaders, which you can edit and recompile with usertool. This will create two files, "vs_replacements.vsr and "ps_replacements.psr" which will be read by this build of OS and replace Halo's shaders with your edited ones. It's a bit experimental but it should work fine. Halo's pixel and vertex shaders are >>here<<. Just extract the folders into the shaders folder if you want to edit them.
Cool.
now just add the FOV hack and I'll download this :P
Nice work. I only understand about half of your post, but I can imagine the amount of work that you put into this project. :)
I actually have the render frustum near and far documented already, I just didn't include it in the public code (due to something it was being used for). I might be able to work something out for you though
I'll take a look at this stuff here in a little while :)
With your bitmap thing... Let's make a custom widget tag so we can have custom-resolution widgets... and make a better ui.map file. (have an include folder for bitmaps of each map so we can see pictures of them mb mb?) Writing up ideas and how that would work for that now.
Also, I think, in order to simplify things we should consider combining our two Open Sauces so people can use both yours and my Open Sauce at the same time. (Could produce some seriously neat things with that :D)
Downloading to take a look at it now.
it seems that when I run Halo with the usertool executable in my root folder, Halo will throw an exception error. When I rename the usertool to a non-executable file then Halo will start fine but all the textures except flags and some wall markings are completely black. When I then try to run pp_load it gives me an exception error.
This does not occur when open sauce is disabled.
EDIT: Seems it was caused by motion blur. Setting motion_blur_enabled 0 fixed it, but I obviously don't have any motion blur.
I had the same problem as Jelly.
I'm trying to change the pp effects referenced in the shaders reference file but when I load/unload it's only loading bloom
I'll have a look into the motion blur problem. Out of interest what graphics card do you have?
Also, you can turn things on and off in the yelo menu (F7). You don't have to use the console unless your changing your effects file while in game :downs:.
Make sure you are changing the Count value, and putting the correct index in the brackets when adding/removing effects.Quote:
Originally Posted by Dwood
Code:[Effects]
Count: 3 <<< ding ding!
[0]
Name: DOF
Indicies: 2
Render Point: 2
[1]
Name: VISR
Indicies: 1
Render Point: 2
[2] <<< ding ding!
Name: Bloom
Indicies: 0
Render Point: 2
Lol yeah. :P you need a better way of declaring the active post-process effects so people can manipulate them more actively... like being able to disable an individual effect or something like that.
E: I'm running an ATi 4850