Skip to content
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

Missing Techniques: Known Issues #12

Closed
SE2Dev opened this issue Jun 1, 2016 · 10 comments
Closed

Missing Techniques: Known Issues #12

SE2Dev opened this issue Jun 1, 2016 · 10 comments

Comments

@SE2Dev
Copy link
Collaborator

SE2Dev commented Jun 1, 2016

At the time of writing this, most features work relatively reliably. There are, however a number of issues that need to be resolved.

  • CoD2Rad occasionally produces blue / orange patterns in lightmaps (presumably due to the default texture being used in place of the correct color maps during radiosity calculations - however replacing the default texture does not appear to resolve the issue)
  • Radiant has issues rendering nearly all skybox models (the visible results vary based on GPU vendor)
  • Radiant does not draw many models correctly or at all (Caused by rerouting the used techsets / techniques, etc. to WAW variants - this may be resolvable by rewriting a large portion of the renderer to natively support BO1 techsets, techniques, shaders, etc.)
  • Radiant does not render certain blend / decal materials correctly when modifying transparency (See above)
  • Many water materials do not function correctly (do not draw, don't produce swimmable water, don't compile etc.) - the drawing issue is caused by a number of techniques that were not included in the mod tools

At present, several source files required by the material pipeline can be rebuilt from in-game data rather easily. These include:

  • Techsets
  • Shaders

All materials depend on a single techset, and all techsets depend on up to 130 different techniques, as seen below:
alt text

Furthermore, all techniques depend on a single vertex shader, pixel shader, and statemap, as seen below:
alt text

The issue lies in the fact that technique source are extremely difficult to rebuild from compiled game data, with statemaps being arguably even more difficult than that. As a result, it is currently unknown if these materials will ever be drawn correctly.

@SE2Dev SE2Dev modified the milestone: Initial Release Jun 1, 2016
@SE2Dev SE2Dev changed the title The Current State of LinkerMod, etc. Known Issues Jun 1, 2016
@ghost
Copy link

ghost commented Jun 2, 2016

I can give a report on missing sets, I've got about 30 or so linker complains about.

@SE2Dev
Copy link
Collaborator Author

SE2Dev commented Jun 2, 2016

Its not so much about not knowing which ones are missing, but rather, how to rebuild them.

@ghost
Copy link

ghost commented Jun 3, 2016

is it possible to automate the process to rebuild some of them from gamedata?

@SE2Dev
Copy link
Collaborator Author

SE2Dev commented Jun 3, 2016

Techsets and shaders are rather easy to automate, but techniques are an entirely different story.

The source files are raw text files whereas the compiled data is binary, all of the material & shader sources, dests, consts, samplers need to be correctly determined. Even after that is sorted out you'd have to be able to determine which statemap file was associated with the given technique (yet in the game data - the statemaps are associated to materials). Overall, automating the extraction of techniques is an extremely complex process, but manually recreating over 20,000 files by hand is obviously impractical.

@ghost
Copy link

ghost commented Jun 3, 2016

Yeah I browsed through the techniques when installing the tools, I also was looking in to being able to decompile fx so we can get some necessary fx files obviously these can be remade, but for the actual feel of bo1, it would be better to have a decompiler.

@SE2Dev
Copy link
Collaborator Author

SE2Dev commented Jun 3, 2016

I haven't really looked into FX, but like techniques they're compiled into binary data so it's rather difficult to regenerate them. Even though it is theoretically possible, the missing materials would render many of them useless.

And no effectively fully decompiling materials is nearly impossible due to the way statemaps are compiled.

@ghost
Copy link

ghost commented Jun 3, 2016

Is setup ready to read the ff's to extract data? I noticed you actually read the file headers as well, but you still use the extension byte search method, do we still not have a way to get each asset's start and ending offset? Only asking because some of the file types don't contain an extension.

@SE2Dev
Copy link
Collaborator Author

SE2Dev commented Jun 3, 2016

The only other option is to reverse engineer every single asset type in the fast files due to the way they are stored.

The current code I'm using for techniques / techsets / shaders works similarly to Lemon or Lime but it's so experimental and is changing so frequently I haven't bothered to push it yet.

@ghost
Copy link

ghost commented Jun 3, 2016

That's what I was going to ask, can we dump each xasset from the fastfiles and work from there? In memory works too, obviously this would only needed to be done on our end as they'd just be packaged up once, no need for everyone to rip them themselves.

@SE2Dev SE2Dev changed the title Known Issues Missing Techniques: Known Issues Jun 11, 2016
@SE2Dev
Copy link
Collaborator Author

SE2Dev commented Apr 24, 2018

I'm closing this issue as it was semi-resolved in 8f0aabc

@SE2Dev SE2Dev closed this as completed Apr 24, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant