#Fallout New Vegas
1 messages · Page 3 of 1
Vault 21 has 0 direct lights, had to use emissives to navigate,the lobby has maybe 5 (1 stoollamp, 3 overhead lamps, 1 for the mimicing of exterior light/window light seeping | near the windows on the left of entrance)
something is broken then
because this is how V21 looks like
The colors are debug shaders, telling you how many lights are hitting an object.
Red is 10+
at least raul's shack has one "properly" Placed 😄
wait a minute ...there are 2 ,didnt see this one seems smaller 😄
whole game is like this and then they went "???? why does the game not run on consoles?????"
I really wonder...
"It must be those skeletons with every limb! Cut them in half and replace them all in the game"
6 drawcalls per wall?
let's place 30 of them!
also let's add water to the strip
And then take it away, but not fix the reflection code to only run when it would be visible, so it still dies!
Y'know what would be nice with the Remix UI? If you could right-click a texture to apply the same properties that you did for the last one.
That would make bulk assignment so much quicker, than having to navigate to the context menu which changes location every time.
Oh, also, Remix breaks VATS.
All percentages are just 0.
The only direct light here comes from "outside" .sun directional seeping through the culling cracks.most of the light here is still from emissives.
Thats the sunlight/moonlight
How'd you get it to that state?
I'm still here, going through textures. And constantly getting flashbanged by this red and yellow stuff.
feeling a little bit light headed...
@keen niche that looks like some texture/s is selected as "add light to texture"
Are you not meant to ever do that? 😨
Not in the current state.
Did you turn off normals?
I've been turning them off as I see them in the list.
ye can turn them off in this game,with ignore textures
alpha blended OFF, and go from there( even emissive blend i think it removes them)
Ah, it’s better to turn them off with the mod usda I posted last night. That’ll turn off the majority of them.
It did, but I keep finding more and shutting them off.
Gotcha, I do know there’s some that slip through. Just didn’t want you have to tag all of them manually cause there’s thousands.
try vault 21
there are interiors with waayyy more than 8. Probably remix only gets the ones currently used for lighting? Since that's always 8 at most
ha didn't see you were already checking it out haha
that place is a christmas tree
I get more than 8 light sources all the time 
NVR has an overlay shader that lets you visualise up to 24 of them as dots on the screen
That’s the limit of the shader being able to only load that many right?
I don't think so, it's just a visualization.
vanilla shader can only show 3 point lights + sun
ILS bumps that to 13
game counts waaay more lights internally
which makes whole vault 21 situation even funnier
Of course, that's per-object, but still really low.
per geo
Yeah, per strips/quads/whatever.
Maybe they never told the environmental artists about the limitation 
Ah so the pipeline used now can use up as many lights as the game loads since it isn’t being culled with the SM2 limit.
Provide a printscreen proof?
For me remix reads in lighting->Light statistic 7 lights + 1 Directional/sun (this is only with NVR_RTX mod)
Before the mod if you use fallback light, only the directional was counted in.
At the office today. 
If you turn on the DXVK rtx hud you can see the light count entering the rtx pipeline.
I typically see something around 12-28
Just caught up on the chat here -- this is so cool, props to you all for getting it working
That guide is a work in progress. I was having difficulty with the ini’s 
Updated it 👍
It feels pretty close to functional. There's definitely a lot to do, but it's remarkably stable. I played for maybe half an hour to an hour in my normal save.
Granted, at ~10 fps, but still impressive.
> 10 fps
Just as Todd intended
The FPS is a struggle. I'm not entirely sure what could be done about that, besides disabling as many base game effects as possible.
I think it’s from transparent textures. They get a different material that is harder to calculate from my understanding.
Hmm.
The normals get treated as those so
Most of the transparent textures didn't work, I had to flag them as 'legacy cutout'.
Heh, this is a funny comparison. RTX Off (Left) vs On (Right):
Y'know, the right oddly reminds me of Fallout 4.
Need that yellow filter back, can’t tell what game it is 
Actually it wouldn't be hard to restore that.
That's as simple as setting up the Color Grading in post-processing.
Oh, I found that, somehow, IMODs work with this!
Interesting. You might be seeing the roughness map in a lot of those cases.
That’s true. Might get bored later and make that 
Even with the performance as it is, it's still cool to see areas lit properly-ish.
Even though the gun's not being RTX'd for whatever reason.
I would also add that performance always nose dives when Remix is dealing with unexpected textures that don't make sense. Having a stable image increases performance by a long shot.
You mean standing in one place, or getting all assets replaced/marked?
I mostly mean just removing assets that shouldn't be there, and of course rendering improvements.
I even had a little firefight in RTX:
Those lines seem to be from bullets. Tracers, maybe?
Yes they would be marked as a beam texture
Even though there’s no PBR materials, it looks surprisingly well. I’m really excited to get those in and see how this game will look with them.
Heck, even if we can just get the game's base textures converted, it could be a huge improvement.
It's already sort of got roughness and shininess maps.
It would likely need a specialized program/script to deal with this game's unusual methods, though. 😔
For example, the alpha layer in the normal map is the specular texture, basically how shiny it is in places.
ChaiNNer lets you do this.
One sec, drafting a chain.
Assuming it's DX format otherwise it should be simple.
Would it help to know that the game has mostly-standardized texture naming?
Where you have basetexturename_n for normals, then _g for glow, etc?
I think so yeah, in that case I would probably use a really simple batch script to get all the normals into a folder of their own before processing them.
I've already done that, it's really simple with BSA Browser.
I know PBROven already lets you change the markers on textures so we can reuse the names as is and just change suffixes to hook up mats as long as hashes are consistent.
If not, we'll just have to match them by hand. 🥹
You have to match the normals to their diffuse mat.
The texture hashes do seem consistent, from what I've seen, at least.
Lemme John madden up diagram of how to do so
Exactly yeah, the normal -> diffuse is the only part that concerns me.
You'd just need to get the diffuse, wouldn't you? Create the hash of the file the same way Remix does externally, match up the diffuse with the converted other texture maps, then badda bing badda boom...?
They’re consistent till the game decides to modify them or do some mip junk.
Yes, we have the majority of it figured out except the match up part.
If you're processing them externally, then it wouldn't be a problem, since normals are named consistently in the game files with their base diffuse.
Just the name with _n appended.
The chain you see here does have speculars as _n_s but we could always batch-rename them right after.
Oh that's perfect then.
Once we match hash to game name for diffuse then it sounds like we're all set.
As an example:
That's what I'm really hoping for.
Wait so are glow and emissive map both properties?
But yeah the chain I just made will convert _n to octahedral format and split off the alpha channel into a separate_n_s
Uh... I'm not 100% certain what _em is for. Maybe the environment map mask? Which would mean that equates to reflectivity roughness, since the envmap is a cubemap meant to approximate a reflection.
ChaiNNer has a CLI mode but it's not really documented yet, I'll have to go bug people about it.
So in that case do we just ignore it for now?
Okay, yeah, it's an environment map mask.
Would it be useful for chaiNNer to be able to generate the remix hashes from the images?
Or would that be better done via the external stuff
Extremely.
I have the Python script that calculates them on my repo if that’s useful
Yeah send me a link
We already have a generate hash node, we could just add an option for whatever type of hash this is
Thanks
It’s xxhash3_64
Well that's that. 😁
I think the one node we could really use that ChaiNNer (to my knowledge) doesn't have is a branch condition.
I'd love to be able to parse the file name to determine which chain goes forwards.
Yeah trust me i wanna do that it's just tricky
Totally understandable, that said as a stopgap if I can figure out ChaiNNer CLI I might be able to hack in support.
And by support I mean just having like eight different chn files on a switch statement in Unity.
The lines 10 to 23 are important to get the mip level right, otherwise it won’t get the right hash.
Those were the magical lines that BlueAmulet figured out
Oh wow lol
I mean, that would work i guess 😂
Or maybe Python 
Oh dang, could this also be used to automatically generate a list of textures to ignore? Just get everything with _n or something, generate its hash, and output a text file to use.
You’re never going to believe this
I actually have that functionality in PBROven already.
And I think AdamPlayer has a solution 100% done too right?
Yea search this thread for ignoreTextures.usda
Oh cool, is that the method you used to make that file?
#1106553248590090351 message
No that one was a bit simpler than what I just John maddened.
That’s just generating a list of all textures with _n, hash them, replace a string in a template, and assemble it into a usda.
It uses the two Python scripts in my repo
The one I scribbled today is to get the original normals to match up with the original games textures via file names.
Originally I was going to use perceptual hashes but I think file names will be a tad bit easier.
Oh I’d probably want to have the original normals converted over to the rtx format before doing this script.
Or at least add it into the process as a flag.
Would a 'perceptual hash' be trying to figure out what diffuse a normal belongs to by 'sight'?
Correct. It’d be matching the visual of the texture that rtxremix puts out to a known texture filename
But since we have the ability to generate the hashes now, no need for that level of CS. 
Here's an updated chain that uses a folder iterator. It also renames the Octahedral Normals to use the extension _no instead of _n.
Perfect 
Isn’t there a Python snippet that has the conversion floating around somewhere?
Yeah, let me go grab it again
I'm working on a C# binding of it, but got a little sidetracked.
this thread is like great Greek scholars talking about philosophy
The gun is passed through a diffrent pass(shader?), i think its specular.
As far as I know the octahedral conversion tool here doesn't touch alpha channels, but the chain makes sure to remove alpha before the octahedral conversion just in case.
Gross it only takes PNG? Mark pls.
It's Python so I doubt it cares. This is the implementation ChaiNNer is based on if I understand correctly.
That's why putting it into chaiNNer made sense to me -- you already could load a ton of formats so it was easy to just throw that in as a node
Kinda, it was originally but then the other main contributor rewrote it all lol
He didn't like what they were doing by assuming stuff with the blue channel
I honestly feel an emptiness every time I see how forgiving Python is before going back to C#. YOU'RE GIVING ME A WHAT? TYPE! GIVE ME A TYPE!
I’m just going to do it in chainner, I don’t want to mess with converting things in Python.
Python can use type hints
I certain view direction the yellowness returns 😁 (depends what UI tex. selected ofc)
Yeah that's rasterization. 😔
Btw, doing the hashes in chaiNNer is probably a no-go. The hashing script does it based off of the bytes of the image, not the image data. So we'd need to have a node to load the raw bytes of a file rather than the image data. Which isn't entirely out of the question but it wouldn't be useful for anything other than this
The software at my work is written in 2003 era .NET. Lemme tell ya about fun and single threading
These Python scripts are 100 times easier to understand.
Aw. That’s why it was so confusing to get working in the first place.
Unity with a ChaiNNer hat on, it is then. 😏
Remix hashes it directly off of the memory in the gpu, so it’s not something trivial to copy.
I probably will need to bug you for some CLI stuff soon, just need to debug a few things first. @north sequoia
I'd also love to contribute by helping out with documentation for CLI mode if you'd like.
My goal for today is to get this working and implement it as another hashToMod template so we can have any PBR materials added back to this game easily. 
I'm not really the person you wanna talk to about that. You should be asking MSchmidt, he did all the CLI mode stuff and actually knows how to do it and how to do the input overrides and everything. I have no idea personally 😆
Wonder how far we are ahead of Marks and the Nvidia teams expectations for remix 
|| Lemme summon him to ask. Mark Mark Mark ||
He just committed skeletal mesh reading to DXVK Remix, let the man rest. 😂
Sounds good, I'll reach out.
@keen niche is there an article that lists out all the layers for the materials that fnv uses? I know you said the alpha of the normal got used as a specular.
There are resources around. I'll need to find them.
This is a real good, proven one:
https://www.nexusmods.com/newvegas/mods/76374
It's mostly about actually making full nifs, but includes a lot of material properties and stuff.
Looks like these would be the most relevant:
Is there an equivalent to parallax in RTX Remix?
Oh, this could be important to note:
I think we're just gonna add a node to calculate a hash specifically for RTX remix, which we'll probably just move to an external plugin once we have support for those. But for now i wanna make things convenient for you all
Would it be possible to just disable everything but the diffuse texture for all objects in the game
In theory, yes, but there are so many nifs.
There's the batched nif modification tool Sniff, though.
It would be easier to ask Wall to stop the game from loading them in-engine.
Wall pls
@brazen oyster pls bud
make engine accommodate the awful things we're doing to it
?
It would be appreciated if you could prevent the game from loading any texture in a nif except the diffuse.
doable
|| Can you make the graphic pipeline become a graphics slide for me please? The pipe scares me.
||
||I prefer the graphics slippery slope if I'm being perfectly honest.||
What do you have planned for that?
uhh, asking Wall what the change was, and then adding it to the plugin, along with any other remix specific hacks
So you exported it just for testing?
yeah
👌
But... Maybe Remix will cast shadows from distant mountains/objects that cover the entire world? 🤞
Smooth normals without the stitching the game does, so it just kinda... goes down?
honestly though it's mainly just the alpha blended stuff that's hurting my fps the most, but turning it off removes most of the vegetation and also various meshes that probably wrongly have alpha blending enabled I'm guessing
no no, I mean this
I wonder if it's mostly grass?
Oh dang, weird triangles! 😱
bad near clip in blender
I want to say using the command tdr (toggle decal rendering) was a huge performance gain for my FO3 test, compromises aside.
still yeah, no normals but it's not that bad
so how's this culling patch work?
oh great OneDrive failed to sync
brb
void __fastcall BSCullingProcess_ProcessEx(BSCullingProcess* apThis, void*, NiAVObject* apObject) {
apThis->pCompoundFrustum = 0;
apObject->OnVisible(apThis);
}
bool __fastcall BSOcclusionPlane__WithinFrustumEx(
BSOcclusionPlane* apThis, void*,
NiFrustumPlanes* aPlanes,
bool abViewHitPlane,
NiPoint3 akViewIntersection) {
return true;
}
bool __fastcall CompletelyWithinFrustum(void*, void*, void*) {
return true;
}
bool __fastcall WithinFrustumDistFirst(void*, void*, void*, void*) {
return true;
}
void __fastcall BSCullingProcess_SetCullModeEx(BSCullingProcess* apThis, void*, BSCullingProcess::BSCPCullingType eType) {
apThis->kCullMode = 1; // CULL_ALLPASS
}
void __fastcall BSCullingProcess_PushCullModeEx(BSCullingProcess* apThis, void*, BSCullingProcess::BSCPCullingType eType) {
apThis->eTypeStack[apThis->uiStackIndex++] = 1;
apThis->kCullMode = 1;
}
void __fastcall MTRenderManager__AddTaskEx(void*, void*, NiCamera* apCamera, BSCompoundFrustum* apFrustum, NiNode* apNode, NiTPointerListBase<NiNode*>* apGeometryList1, NiTPointerListBase<NiNode*>* apGeometryList2, BSShaderAccumulator* apShaderAccum, UInt32 aeCullMode, UInt32, UInt32) {
ThisStdCall(0xBA3390, 0, 0, apCamera, apFrustum, apNode, apGeometryList1, apGeometryList2, apShaderAccum, 1, 0, 0);
}
for (int callAddr : {0x8014F7, 0x80182E, 0x874260, 0x8742F0, 0x874316, 0x8743A6, 0x876233, 0x8767FD, }) {
ReplaceCall(callAddr, BSCullingProcess_SetCullModeEx);
}
for (int callAddr : {0x54EB4E, 0x54EB91, 0x7134DF, 0x73354D, 0x740F7D, 0x77F188, 0x78E820, 0x794939, 0x7BBD3D, 0x7C1A0D, 0x7C9D09, 0x7E480E, 0x7FBD02, 0x7FE3D1, 0x8753CA, 0x875C45, }) {
ReplaceCall(callAddr, BSCullingProcess_PushCullModeEx);
}
for (int callAddr : {0x4EA815, 0x4EAF18, 0x4EB1D7, 0x4EC769, 0x713F97, 0x874037, 0x87509C, 0xB9E6CB, }) {
ReplaceCall(callAddr, MTRenderManager__AddTaskEx);
}
for (int callAddr : {0x549CCF, 0xB5AD64, 0xC347B7, 0xC4965C, }) {
ReplaceCall(callAddr, BSOcclusionPlane__WithinFrustumEx);
}
for (int callAddr : {0xB5F25E, 0xB5F33A, 0xC49596, }) {
ReplaceCall(callAddr, WithinFrustumDistFirst);
}
ReplaceCall(0xC49690, CompletelyWithinFrustum);
SafeWrite32(0x101EA44, (UInt32)CompletelyWithinFrustum);
SafeWrite32(0x101E984, (UInt32)CompletelyWithinFrustum);
SafeWrite32(0x101E330, (UInt32)BSCullingProcess_ProcessEx);
ReplaceCall is just WriteRelCall without writing the CALL opcode
you can stub the classes in arguments
I suppose you could skip replacing stuff that's not important to the main view like water
No need to uncull shit for that
by you I obv mean me

Copying and pasting what MSchmidt told me about ChaiNNer CLI in case someone else gets to it before me:
Firstly, all of these things are possible.
The basic idea behind CLI mode is that you give chainner a .chn file to run a list of input overwrites. So if you e.g. want to set a number input to a specific value, you would use an input overwrite to do so. In the case of Load Image and Load Model, you would use an input overwrite to set the path of the file these nodes load.
The command for running a chain is this:chainner.exe run your-chain.chn --override path/to/overrides.json
overrides.jsonhas the format
{
"inputs": {
"<input id>": string | number | null
}
}```
> You can get the input id from chainner. Open the chain you want to run in CLI, and right click the input you want to overwrite. Inputs that support overrides will have an option to copy their ID.
> Finally, the return code will be 0 if all goes well, and non-zero otherwise.
I'll get my FNV normal converter hooked up to this about nine hours from now.
After that it'll be as simple as plugging in the directories as an override by writing and editing a json between edits. I won't use PBROven for this, I'll hack together something that'll turn up a result.
I'll check back in roughly that long, after I've slept.
Really excited to see it, even if it is vanilla assets.
But I'm also curious to know how it would work with higher-res texture mods, like NMC or Poco. In theory, you could use them as Remix-style replacements, instead of the base game needing to load them.
if you haven't had a chance to file a github for this yet, can you upload a copy of your rtx.conf file with all the texture hashes?
Once I get back from the office I can 👍
@brazen oyster I'm thinking the vtable for NiAVObject in NVR is not right, I just checked the disassembly between your template and my plugin and the offset differs
The algorithm itself is going to be consistent but the pipeline is going to be based on filenames, so it really depends on how those mods are structured.
Alright, culling's gone
Btw has anyone tried a no pause menu mod to see if it stops pitboy raster fallback?
Eh thought I saw one for NV now can't find it
When I get home I can see about digging name up sure it exist
Latest NVSE plugin
https://github.com/BlueAmulet/NewVegasRTXHelper/releases/tag/rtx-v0.0.3
Follow up this does not exist for fallout new Vegas just Skyrim and fallout 4
Might be possible to make a mod that keeps game running in menus by taking a look at those plugins if game keeps running then pip boy may not fall back to raster
No it's a rendering optimisation. Can only be fixed by modding the renderer
https://www.youtube.com/watch?v=ukpMFCX33O8
NVSE crashes the game with no specifics now(its not the latest plugin rtx-v0.0.3) Right before the level appears.Its not the runtime error that we had before(creating multiple bridge instances).Dont know whats the issue
- Dxvk remix release #75 (there is option in this release to remove the "wobbliness")
- Hack from BlueAmulet (Rtx remix disc-rod server)that keeps et from crashing(remix was creating multiple bridge command instances)
no Mods, except some of the textures are HD.
This is plain FNV with Some HD textures for Fo3
Lol it's marked for kids 🤣
A game with strippers
"gotta teach them young"
I would mark em for Children but only baby goats(kids) are in the options.
all that gamblin, strippers , killin ... in this particular vide0
Confirmed that the no cull modification works 
Texture replacement mods just use the same filename and path to take priority over the game's textures, so that should generally be fine.
Does this fix whatever the problem was with the config?
I kept trying to enable sunlight, but it was always getting set back to False when I started the game.
didn't know that was an issue, the settings seem to work for me so maybe?
Okay, I'm about to make some hackery.
Here's the workflow:
- Look for textures that contain "_n."
- For every normal texture, create a _no. and _nor. file
- After all normals are processed, move _no and _nr files into a folder and rename all nr to r
- Write materials based on diffuse name
Here's what I'll need: - A list of diffuses and their associated hashes
- Can't think of anything else right now but I'm sure I will when something goes wrong
Oh, I remember something about normal maps in NV not quite following convention? Needing to flip some color channel so they 'face' the right way.
Oh really?
I can't remember exactly what it was, but I know it was a thing.
I know that we need to separate Alpha.
Is that it?
For STALKER there is a weird color channel switch involved. Speaking of which, this app will support that too.
Not that, you needed to actually invert one of the RGB color channels.
I'm doing this as a standalone first then I'll integrate the functionality into PBROven when it's more complete.
Could they be OpenGL normal maps instead of DX maybe?
Oh is it OpenGL format?
I mean at the end of the day this is trivial, a single click in the chain to fix it.
Or maybe whatever I was using to make normal maps needed to do that to translate it to DX?
Once we have the workflow for making mats the actual texture operation is a walk in the park because everything is done for us.
Fair enough. I guess we just see what happens, eh? Flip whatever later if needed.
Exactly yeah, if someone wants to test the chain I sent earlier in this chat first it's exactly what I plan to use in a bit.
DX and GL normal maps are roughly the same, except for the green channel
I'll need to figure out how to use chaiNNer first.
to convert between the two you just invert the channel
That feels right, inverting the green channel.
Maybe it's because I was trying to generate the normal map with GIMP? That probably uses GL.
In that case there would likely be no problem.
It's honestly super easy to pick up and use. Here's my current FNV chain.
This just runs through everything in a folder and does the operation we need for NV, which is splitting off alpha into roughness and converting the normal before saving the new normal.
Do I need to install Python for it, and some neural network? I saw them mentioned in the readme.
It uses its own local version of Python, kind of like Blender. But you can optionally install PyTorch, ONNX, and NCNN support to mess with neural network upscalers.
But it's entirely portable.
Oh, cool!
if you download the portable version*
Speaking of upscaling and NN stuff, is that Remix tool NVidia showed off ages ago out yet?
Nope. 😂
sadly no
I thought about using helix mod to skip over the shaders that have normal maps in sampler 0, it did not work, it made everything worse
Wait did ignore material not work for these?
well, it makes it look more interesting
I still think Wall will be the best shot at that, because he can just prevent the game from loading anything more than diffuse engine-side.
If someone can walk me through how to dump the textures and hash them in bulk I can generate a USDA for it.
that ignore normal maps usda works, but it also just replaces it with a dull gray covering instead of actually hiding the call
Wait really? That's weird
the xxhash-textures.py in Scripts of Sorts is your best best for that probably
You access the game's files with BSA Browser. Just search _n.dds and it'll give you everything.
https://www.nexusmods.com/skyrimspecialedition/mods/1756
also maybe dumb question but, BAE or BSA Browser?
Don't worry that it's for Special Edition, the format is mostly the same across these games and it has support for them.
sounds similar to the problem Mafia 1 has (dull gray covering geometry)
i ran into it in another game too
strange
I don't think I've ever heard of BAE.
yeah
Nah, that's old old. BSA Browser is what I use, and is much more intuitive.
Also, Looking through the game in Intel GPA (nsight's confusing tbh), I can see that various meshes get drawn like 4 times, and some of the shaders used are normal map only shaders, so remix probably sees that, sees that the normal maps have alpha, and treats it as a bright alpha blend
ideally, yeah making the game not draw stuff multiple times, and making it only draw with the diffuse in texture slot 0 would help compatibility
Yeah, the game has separate shaders for lots of stuff, and some effects in the .nifs are separate draw calls, even in the same geometry.
I wonder if Remix could be modified directly to be able to categorize things as normals, and use them as part of its own RTX rendering?
iirc I think they said maybe but not a high priority. Since the texture tagging system already exist it should be possible to add support for add tags to normal maps, but also the fixed function games they're targeting likely don't have normals anyway
and also remix wants a special format for it's normal maps
yeah, the octahedral thing...
Okay I'm thinking there may be a really easy way to handle this without much scripting. All we really need is to rename the normals to the same as the diffuse hash.
So I'm extracting both the diffuses and the normals, and I'll use the python script to get the diffuse hashes.
Once we have them all renamed I'll just run the folder iterator on normals manually, then we'll have a material in bulk.
It's not pretty but it'll get results fast.
I can even just use PBROven on the folder if I throw it into my captures folder.
Note to self: stop assuming where folders belong in my apps. 😅
how come? can't you specify texture names in the usda, so wouldn't need to rename them?
I was going to use PBROven for convenience because it's already built for writing lots of hashes, and in PBROven's case I just use the filename.
But yes, I could absolutely just use the original names and it'd be smarter too.
Probably just gonna focus this down and try to have it done soon but I'll be in streaming while I work on it.
I think I may be using this script incorrectly, my output file turned up blank. 😵💫
Hashes stored in Hash.txt```
it takes a folder
hmm ... putting every normal as an rtx.ignoreTexture works, no solid gray things, but the usda leads to solid gray stuff
Usually solid grey USDAs means it's looking for a texture that doesn't exist, it's like an error.
I get those all the time with Anachronox when I haven't updated my output textures folder.
I'm using the one from AdamPlayer that just does
over "mat_2F6B08234982561E"
{
over "Shader"
{
bool inputs:ignore_material = 0
}
}
I guess we'll just have to make them all opacity 0.0. 😂
I also tried the token visibility = "invisible" but was still gray
Yeah token invisibility does nothing sadly.
I mean, it wasn't a bright normal map anymore at least
it did also work for when I was trying to hide meshes
I don't know why, but all the options in that RTX Light plugin just... go back to 0.
I'm having trouble with the python script, has anyone else gotten it working? I have a feeling I'm doing something incredibly dumb and silly.
this is my version, writes a list of "hash filename", just run it as xxhash-txrmap.py some_folder output.txt
https://github.com/BlueAmulet/RTXRemixStuff/blob/main/xxhash-txrmap.py
and premade hashes of the two Texture.bsa 's if it doesn't work for whatever reason
https://github.com/BlueAmulet/RTXRemixStuff/blob/main/NewVegas/texhashes.txt
Oh is that just all the hashes done?
I'm guessing the dlc packs also have textures, didn't do those
Oh wow.
They do, and mods would, as well.
Yeah in that case... this... simplifies things... 😂
We can get to that later, once we have the pipeline done the process will be a couple of clicks.
Nice, so in this case I'm just gonna hop into Unity and make some materials.
I won't need to rename the mats either.
oh btw, that list has an extra folder on it, texout and texout2, it's simply where I had extracted the bsa's, can just strip that off
No worries, I'm just going to point to my own file and strip to the last \ anyway
But... we should probably keep the directory intact. For now I'm just writing the materials for a flattened directory but I can fix it later.
well off to reading dxvk-remix code again, see if I can figure out how ignoreTextures works and how to replicate it in the usda
So for now I'm going to just handle ignoring em and m. Later on I can make a new chain so that the existing roughness layer gets em and m added on as a mask, I am admittedly rushing through this tonight to get a proof of concept done so I can wrap up some other non-Remix stuff.
The tool won't be ready but I should have an output for a flattened directory stored in mods/gameReadyAssets soon.
em and m when ignored

I'm not seeing any mention of metallic in the docs at all (which, by the way, amazing documentation, love it).
So I'm going to assume we'll worry about that later and try to ship this ASAP.
Alphas are dealt with already in the diffuse which is good because IIRC Remix doesn't support opacity maps.
Certain alpha textures do need to be marked as 'legacy cutout' in Remix, though, or you get planes of flat textures where there should be holes.
I'm not sure what makes it fail or work otherwise, though, because some alpha textures are already fine.
No updates on getting a usda with all the original material properties today, got too busy. Will have time tomorrow though 
Wait I can never remember, what texture format is best for these?
Eh, I'll get a better chain set up tomorrow, for now I'll just get stuff working
I change between all of them till it looks right in OV sometimes 
depends on the texture purpose tbh
@simple gazelle marking a material in a usda as ignore_material doesn't quite seem to have the same effect as using rtx.ignoreTextures, ignoreTextures skips the call entirely, but ignore_material is leaving a gray version of the mesh behind
I swear that F3 and FNV use the percent visibly rendered of a body part to influence hit chance.
On default game if you set bDoFaceGen=0 (or whatever its called to disable heads) it shows the forrect outline in VATs but has a 0% chance to hit.
I think it actually does. Render the limb and calculate how many pixels are visible.
Any chance I could see that usda so I can open it in Omniverse? It usually spills out errors when there's a problem.
Remix also breaks the local map, which is another separate render with a specific shader applied.
#1106553248590090351 message
Cool, will give it a look after scripting hell is over.
I'll worry about the core write today, ChaiNNer integration probably tomorrow.
hmmm, I know they don't act identically, but ignore_material should still disable that draw, not just draw it as grey. Could you post the usda for the material you're ignoring a shot of the mesh that's still there?
#1106553248590090351 message
hmmm...
uint64_t SceneManager::processDrawCallState(Rc<DxvkContext> ctx, Rc<DxvkCommandList> cmd, const DrawCallState& drawCallState, const MaterialData* overrideMaterialData) {
ScopedCpuProfileZone();
const MaterialData& renderMaterialData = overrideMaterialData != nullptr ? *overrideMaterialData : drawCallState.getMaterialData();
if (renderMaterialData.getIgnored()) {
return UINT64_MAX;
}
That's where the value is read and should prevent the draw. The replacement material should come in as the overrideMaterialData, unless the mesh being drawn is a replacement mesh
Why are you ignoring all these materials?
They’re normals
Normals, emissives, and masks.
New Vegas does some draws that have normal maps as sampler 0, so remix ends up drawing bright normal maps if it's not ignored
Ah, these are shader draw calls? I don't know how those interact with the rest of the system
is it possible the same mesh is drawn multiple times?
it is, those windows are drawn 4 times from what I've seen
Yes
couple times using the diffuse (and other textures), and then also twice with just the normal map
so are the grey draws you're seeing just what's left still being drawn?
It's probably being drawn twice with normals to account for both specular and normal.
unsure? cause using the same set of hashes in ignoreTextures gets rid of it entirely
and I can't capture with replacements to identify what's still there
even in blender though I see the 4 meshes, 2 are the diffuse and 2 are the normals
huh... the ignoreTextures list is applied earlier, in rtx_context.cpp
if (RtxOptions::Get()->shouldIgnoreTexture(originalMaterialData.getHash()))
return RtxGeometryStatus::Ignored;
There may actually be a bug there - we change a bunch of properties on the material but don't update the cache hash, then ignore materials based on that cached hash. Whereas the usd material replacement is much later, so maybe the hash has been updated before then.
Could you file a github issue about the two flags behaving differently? We should look into this further
on dxvk-remix or rtx-remix?
prefer tickets on rtx-remix
hmmm, actually it looks like the cached hash is purely from the m_colorTexture, which doesn't get changed... so not my first instinct, but there's still a difference in behavior here, so still file that ticket
We should really just unify the code for both systems
We can disable diffuse, ambient and... another third draw call I dont remember in the game's .ini, might be worth checking if this fixes the issue?
I think it stops normals too, cant remember.
how so?
Im on the toot at work, can someone send me the [Display] section of the .ini on here right quick? 😂
What you say to yourself when you realize you messed up the iterator and feel disappointed in yourself:
oh
o.
Oh nice.
Leave bDoTexturePass=1, its the albedo 👍 (but still set the other 3 passes to Zero)
Ignore all the other changes, this is from Remix 0.1.0 testing
So when this is done I expect the tool to take a directory (flattened or not, it doesn't really matter since GetFiles is recursive) and output a folder called output that contains roughness, octahedral normals, diffuse, and glow.
I'll leave the chat at that but I think this'll be done pretty soon.
Its possible also that disabling these passes might mean that Wall may not have to tweak the Renderer manually either, altho the is visible? Return true culling hack is fukin gr8 😂💖
somehow even more of the map is now normal
oh I messed up did bDoTexturePass=0 and bDoDiffusePass=1, now it works fine and doesn't need the normal map ignore usda
Nice, so in that case I'll just leave that part out and focus on the mappings. Almost done here.
My assumptions are that you'll basically use ChaiNNer to have a folder called Normal and a folder called Roughness included in your mods\gameReadyAssets directory, it'll be more flexible with another day to work on it.
Woah, what's up with the terrain? It's like... the entire Goodsprings area!
one of those pass options did actually break the game's rendering, even without rtx
Maybe the diffuse pass?
parts of the terrain lod are drawing over the ground
Maybe it's the random texture swapping thing if nothing else is available? And it just so happened to pick the general area?
turning bDoAmbientPass or bDoDiffusePass breaks the ground, but bDoSpecularPass can be turned off
and bDoDiffusePass is what seems to make the normals draw, so I guess Wall is still needed
for reference since it is visible in that broken screenshot above, the motorcycles, truck, and deck of the saloon are being buried in some terrain lod
I sleep.
Don't program when you're tired. Instructions are as follows for now:
- I'll provide the USDA in this thread soon-ish.
- Extract all _n's to a folder called Normals.
- Run chaiNNer on said folder which will spit out the textures in the subdirectories Octahedral and Roughness.
- Remove all files that end in _n.dds.
- Extract all _g textures to a folder called Emissives. (USDA will support these tomorrow)
All of these go together in your gameReadyAssets folder. Demonstration soon.
I'll need a little more time to clean this up so it's actually usable.
Are you kidding? I do my best programming when I'm tired
I don't think I'm tired enough.
I've done so much dumb stuff while tiredly programming, but the impending bedtime deadline is a fantastic motivator for getting stuff done
whatever programming i've done, i do best when i'm tired too, lol
My programming when tired is essentially a collaboration between Dr. Jekyll and Mr. Anonymous Contracted Freelancer communicating only through XML summaries.
After throwing out all the garbage I made earlier it took about ten minutes to get this done. Heh.
I now have a massive USDA and I'm just waiting for it to open so I can see if it actually works or not-- it's taking a long time.
Okay the file looks fine. I haven't implemented glow yet, part of why this was so much more aggravating than expected was because I kept getting tossed an illegal file path error that I don't usually see and I'm still figuring out why.
So it did work. I'm really quickly redoing the logic the way I should have.
When this is done it'll take a flattened directory and separate it into six subfolders for you.
It worked. 🤯
I'm just gonna add basic safety checks to make sure you do it on a real directory, there's no input validation whatsoever here
But you point it to a directory and specify your file extensions and it sorts the entire folder for you in a gameReadyAssets folder as "Diffuse", "LegacyNormals","Octahedral","Roughness","Emissives","Diffuse".
Tomorrow I'll worry about respecting the original folder structure on top of the directory which shouldn't be too much of a shift from the current system.
I'm basically just fighting System.IO right now to figure out one or two bugs standing in the way of completion. Had no idea this would take so long, and it really shouldn't.
I think I need to call it quits. I'll force it to true for now and get glows in next time.
Oh. So my checks were fine, and I had a \n in the middle of the file name. Yeah. That checks out.
🥹
That seems to have fixed it...
VirusTotal
So in short, here's how you use it:
- Dump the textures into a folder with no subdirectories
- Take all the normals (search for _n) and move them into a subdirectory
- Use the chaiNNer chain provided, set the directory to the folder, and run a folder iteration which will separate the _n files into _no and _nr
- Use the text file attached, which is both hashfile lists combined into one
- Input the folder's directory into RemixNVNormalRemap as the working directory, and set the path to the text file as well; please be careful, I don't want you messing up all the DDS's in your remix directory with this
- The application will sort all your DDS's into a directory structure of Diffuse / LegacyNormal (can be safely deleted) / Octahedral / Roughness / Emissives with an attached hashes.usda, all included inside a gameReadyAssets folder ready to drop in.
As far as I can tell all materials are hooked up properly through this.
I can clean up and automate this tomorrow, for now... 🛏️
I forgot something really important. For the chainner script i need to emphasize that your normals need to start in a separate directory. The chainner script runs through every texture and you'll end up with a lot of extra unusable clutter in your folder if you aren't careful.
How will it do emissives if we only move the _n files? Or is that some special thing it does on its own?
This thing seems to be working!
Although... how do I know when it's done?
pip boy screen as Sky tex. 😁 .
as UI you can see he screen but you turn around and the sky reverts to raster...
Dont worry , he is not armed
@dusty lynx Is et possible to connect the pipboy light with the Fallbacklight/Sphere?
Fallbacklight is not used with your latest files( i think).
It also doesn't seem to fully respect the game's flags, so lights normally hidden during the day will still show up.
But yeah, having the Pip-Boy shown in RTX will look great.
Especially with Wall's mod to make the light follow the actual Pip-Boy, so it animates with your arm.
Okay, I think chaiNNer finished, but I still have a folder full of all the original normals.
Solution:select the pipboy screen as UI texture(not worldspace) AND Sky tex. @lavish isle
You spawned in the matrix construct
Not 100% sure what to do now. How do I 'use the text file'? The .usda file? Use it with what, chaiNNer or the Unity thing?
Wait, it looks like the Unity project might want the emissives in a separate folder?
It also wants the normals in a different folder... do I point it to the octahedral, or the or the original normals?
Oh, it says 'subdirectory'?
Do I need to move things around so they're all in the same main folder now?
By default, it wants a 'Normals' directory, but the chaiNNer thing generated an 'Octahedral' folder.
Do I point it to that instead, or the original game's normals?
Uhh... I took a guess and pressed 'Generate', but I got no feedback. Did... did it work?
Hey sorry, just got up.
I really don't know if anything's happening, or if I set it up right...
So, if you're not seeing anything, that's an error because I didn't add the text file input box until the very last minute and didn't check for errors.
I tried making a copy of hashes.usda and renaming it hashes.txt to see if that helped, but nothing.
The first input box is supposed to be a direct file path to the text file that I received yesterday which I hope I shared.
It's the output of the python script.
Ya'll beating me to my goal 
You shared hashes.usda, but no .txt file.
Nap time is suspended. One sec.
It's okay, I'm going to try and tie all these scripts together into a TUI
This is the two texhashes.txt files blueamulet sent me yesterday taped together.
Before you get into the UI you need to basically just extract the normals, and run ChaiNNer on them. The reason you need to do this separately is because it's just going to parse the entire folder, which means if you have it in a folder full of emissives and diffuse textures it'll try to split those up into multiple textures and make them octahedral too.
Did that already!
Nice nice. So in that case if you have that and your other textures extracted to a folder (subdirectories are okay) you're ready to go once you have a text file full of hashes.
But I'm slightly confused by how exactly it will work.
Does it navigate folders itself and try to find all matching things, or do I need to lay them out in the set Diffuse, Normal, Roughness, etc subdirectories in the Unity project?
It just does a recursive search for DDS files.
It's supposed to run into a 1280x720 window like PBROven, but you know, lazy devs 😛
Where will the output be? In the main folder? Does it move things, or make a copy?
Is 'working' the folder with everything in it?
Yeah exactly, it's the path you extracted your textures to.
Okay, so 'Working' would be here:
I don't know about you, I think my UI looks
fine.
I think so yeah. It should have your diffuse, emissives, and normals, everything.
Yeah that looks right.
I still got no feedback from it after pointing it to the new .txt file.
Anyway put the path to that in Working Directory and the path to the hashes lookup text file, and leave the other stuff because it's working and I really don't want to debug anything else. 😅 I'm fairly sure changing the folder names won't hurt though.
...hm.
Maybe it's a weird thing where it doesn't like spaces or other characters in the file path?
I may have honestly just broken it too.
I don't think spaces should be a problem but I didn't test.
Lazy dev shipped a broken build.
I can't get it working either.
I probably broke it at the very last second trying to un-hardcode the texhashes lookup sheet.
Ah yeah that took about two seconds to find.
It originally looked up the texture sheet on Awake to grab the files while I was testing, then of course I have a nonsense placeholder in the field so it would look for that, error out, and shut off the script.
Fixed, building.
The counter number is broken but save for a huge stutter right after it finishes organizing and pulls the textures list from that file, feedback is pretty constant with the app.
Never mind it broke again. Changing the paths broke everything.
Good thing I tested this before releasing it as a working app, right?
Oh wait no it works fine lol I was reading the wrong hashes.usda from earlier in testing last night.
Shipping.
👀
I'll be on for a minute in case anything blows up, but hopefully this did it.
Sorry, stopped to write some documentation.
It should open in a 1600x900 window now, if it opens in 1024x768 I'm a silly goose. Either way it should work.
Wait, it was meant to be in a window? I thought it just went fullscreen on me.
I forgot to hit the option the first time.
Alt Enter will work either way and this window should be resizable, I think.
😮
Did that hashes file also deal with the DLCs? Because I extracted those textures, as well.
Okay, I now have a gameReadyAssets folder!
Do I just... toss that in the remix mods folder?
Pretty much yeah.
And I guess get rid of the last one?
You'll need to include a mod.usda file that links to hashes.usda as a sublayer.
The ignoreTextures_mod?
Not necessarily, you can just not use it.
You can still use ignoreTextures but I think this mod should cover the same purpose, I don't think they'll conflict.
If you did this, you would load hashes.usda then ignoreTextures would override it.
I don't know if the DLC hashes will work because while the textures were definitely sorted I didn't actually run the python script on the DLC.
Do I just toss mod.usda in the rtx-remix/mods folder, next to gameReadyAssets?
So like this?
Yup, ideally I should probably pack that in a folder 😅
And now... moment of truth, or anything else?
Moment of truth.
🤞
Hmm, I still see the corner message saying 'not production ready, layer data missing' or whatever.
Oh yeah that will always be there.
It just means there's no info saying the layer is production ready.
It's an asset quality control thing for when Nvidia was working on Portal.
I have... no idea if this worked.
Did you see loading enhancements or did it finish up quickly?
If it was a quick load it probably didn't work.
You'll also be able to see the Enhancements menu won't let you capture if it's working.
Nothing happens when I toggle the enhanced assets in the RTX menu.
This should be right, right?
There's errors coming up in Omniverse, the file isn't usable.
😢
It says it doesn't like the way I wrote ignore_material?
Oh yeah I wrote the wrong phrase... heh.
Give me two minutes to upload the new build and you'll be set, this error is silly.
Fallback light/sphere mimicing pipboy light
Well, a silly error is better than a complicated error!
I do wonder why that RTX mod doesn't catch the Pip-Boy light. NVR does, but it might also have special considerations for it.
I saw in Fallout 3 that it rendered as a bright white disk.
I suppose I'll need to re-run the Unity thing? Good thing I made a backup of the extracted textures folder before doing this!
It should just reshuffle them again.
Oh, so just run it on that folder again?
In fact you can just run the script and pull the script itself.
You don't need to move the textures, I just changed one of hte USDA things.
I'm just letting the script run to the end so I can make sure Omniverse doesn't hit another error.
Reckon I could just run it straight on the copy in rtx-remix/mods?
You could, but I wouldn't necessarily recommend it.
I haven't tested it at all.
I don't think anything should break but... well count how many times I've said that in the last three hours. 😂
Wait, so where will I run it? Because that's just a straight copy.
Honestly I think I'm just going to edit my USDA and send it, it should be 100% compatible.
I extracted the DLCs, so as long as you also did that, it should be fine.
I think I may just let the DLC sit for after I wake up, the main thing is apparently I'm getting duplicate materials so I'm not sure where that's happening or why.
You end up with duplicate hashes. I'm sure there's duplicate textures somewhere
Just gotta make sure to sanitize your list before out puting it to a usda.
Yeah you know what that is actually a much easier operation. Just really out of it 😅
Thanks, I'll get right on that
I wouldn't be surprised if there are copies of the same texture in different folders, but since I extracted them all to the same folder, any duplicates should have been overwritten...
Unless they also renamed the file.
how are things going with new vegas? i haven't been keeping up
what the heck is going on in the corner with the flag?
yes 😂
🤷♀️
Just Remix not working with smoothed normals, I guess, just treating them as flat.
hopefully it's a easy fix
also thanks for releasing True Scopes. it makes the game more fun using Scoped weapons
A shame that it probably won't work with RTX Remix, though. 😔
Unless they've retained the Portal functionality which can teleport rays, because then I could do it pretty nicely.
nooooo 😭
I think they do have a separate viewmodel option, but I can't really tell you much about how it works.
It's under Parameter Tuning.
That wouldn't be the same thing, though, would it?
I know it has something to do with rendering a view model separately from the rest of the world, but beyond that I know next to nothing about it.
Isn't that just referring to the actual held view model, the weapons and hands and stuff?
What I'd like to see is the functionality from Portal with RTX, because light and the view actually goes straight through portals, teleporting between them.
I don't know if that was built specifically for Portal and not kept around, but it would be amazingly useful and cool.
It's also something I've long thought raytracing could be used for, to have infinite* 'cameras', and full-ish resolution through them, because the normal view rays are just being translated directly to the endpoint once they hit the special surface.
Meaning, the closer you get, the more resolution a particular camera has, and you're not rendering multiple views, it's still part of the main view.
Simple: I don't know what I'm doing
I think it may have actually been the emissive map texture reference in the USDA not having a \n at the end.
💀
I have a fixed USDA with no ignores, hopefully a fixed with ignores, and a new version to ship.
Okay the one that includes ignores works too.
So, do I need to re-run it, or just replace the hashes file?
The hashes are based on the doc so if you get hashes for the DLCs that aren't in there, you'll need to run it again.
👀
That said I did add a toggle to skip the texture sorting.
I could probably save the working directory and texture hash to player prefs and load it on startup.
Yeah if it takes a year to load that's a great sign.
Hopefully tonight I'll be coherent enough to actually implement the whole chain with a single click.
I think it crashed. 😅
Oh it definitely works then.
It usually takes me a load or two to actually finish loading a mod.
Dont know what i did but seems like the sky tint effects the world.Actualy seems stuck on that same blue/purpleish tint
Alright, this is weird: The entire game is black.
No HUD, no Remix menu, nothing.
I can hear it, so I know it's working, but I'm blind.
One thing I've noticed with replacement materials is that it tends to be way more tough on transparency.
If I disable the mod again, it works.
Will disabling enhanced materials fix it?
Hm... I guess in that case we need a way to make sure particles stay transparent.
If I could access the menu, I'd try it, but simply removing the folder makes it work again.
Yeah renaming the USDA will also do the trick.
I'll probably just finish setting up NV on my end and get some sleep, but after work I'll take another look at this to figure out what went wrong. If I had to guess it's the sky dome getting fully rendered giving us trouble, but it'll be hard to tell what exactly is happening until I can look at it through Omniverse.
But why would it stop me from seeing the main menu? Or the Remix UI stuff?
|| By the way, fuck using the click package. That thing is so gd confusing.||
I'm not really sure, though rasterized assets usually don't get any replacements at all.
The fact that it blocks the UI too is... weird.
I really wish IDA's sig files were cleaner
I'm going to go ahead and call it here, I'm hoping by tonight I can have my own NV installation running to try and experiment more with it locally.
Uhh... has it just stalled? It's been here for a few minutes, now.
Also hasn't generated the new hash files. This is on a new copy of the folder with the sorted normals.
It stalls when reading the list. If I make a few adjustments it'll have a normal progress bar like the rest of the program.
As for the USDA, it usually doesn't print out until the very end.
So I forgot to share this, but this is the same file I generated with no ignore material calls.
As long as this is just using a preset text file I'm just going to leave the generator as-is and keep working at it until it actually supports the features it needs, I'm working on a fix for the mega-hitch on calling the file as well.
https://store.epicgames.com/en-US/p/fallout-new-vegas--ultimate-edition
new vegas is free on Epic right now. it should also be DRM free iirc
sadly though i believe it's the same version as microsoft store, and as a result the exe isn't compatible with NVSE
i don't have the space to download and find out
actually i do
it's only 8 GB. Microsoft Store version was a whopping 47 because they included separate copies of the game for each localization
so it may be different now.
Fallout 3 was the MS version before. i recall checking. maybe they fixed that one too
Didn't fallout 3 at some point finally get a no xlive version?
yeah
i'm not sure which versions have that patch applied though
microsoft store version is separate from xbox live if that wasn't clear
Am curious in what ways they're different then, didn't know about that
by MS version, i mean the version they include with game pass and sell on their store. it's DRM free, but the exe is different from all of the other versions. afaik NVSE doesn't support it
yeah
xNVSE is compatible with the Steam and GOG versions of the game. German No Gore, Xbox Gamepass and Bethesda.net versions are not supported.
i'm not sure what they changed, but it sucks that it breaks compatibility
mm that's not a good sign
it has the same file structure as the microsoft store version
\
😦
similar error happens with FOSE for FO3 on Epic:
so yeah, these are likely the microsoft store versions. very sad
recompiled
Epic is new actually
we are checking it out rn
and it's the only version of FNV with compiler optimizations enabled

that's interesting
i wonder why it has the same file structure as microsoft's version then?
and i wonder then if FO3 is also a separate version from MS store
MS Store and Beth versions are the same
Epic FO3 is the same too
Epic FNV is new
hm
GOG FNV and Steam are the same too
same for GOG FO3 and Steam
GOG just has steamapi shims

well, i hope that somehow NVSE will eventually support it (or that it becomes possible to patch the Epic copy)
we are working on a patch
no way we are moving all mods to new code lmao
beth please give us PDBs
xNVSE team
I think this is referring to NVSE?

Okay I'm just gonna focus on ChaiNNer integration since AdamPlayer's solution will blow mine out of the water 😂
I'm glad I went on this little experiment because I think I could probably keep refining the code and use it to work on Stalker but yeah, oof, this code is bad.
It's not that optimized yet, I'm sure it could even faster if I put in a search tree
Still gotta rewrite the mod.usda writer to be accept the 2D array
I'm sure it's better than mine... 😅 that duplicates check is complete spaghetti and I'm embarrassed by it. But I got a USDA out of so eh.
Oh I forgot about dupes 
Just bounce an error saying that the user needs to clean their data 😂
But seriously I can't believe I didn't do that.
Nah, it's easy in python
C# has Linq too, but I was too brainfried last night to really understand why it wasn't working. I did some very not Big O things.
I am really excited about PBROven though, once I have this Chainner integration done I'll basically use CLI mode to do upscaling with biased roughness.
diffuse_second_elements = [elem[1] for elem in diffusehash]
normal_second_elements = [elem[1] for elem in normalhash]
# Removing duplicates based on the second elements
diffusehash_filtered = [list(x) for x in set(tuple(x) for x in diffusehash)]
normalhash_filtered = [list(x) for x in set(tuple(x) for x in normalhash)] ```

what in tarnation
It doesn't work. Stack overflow has embarrassed me 
what is diffusehash containing, just strings, or tuples?
Strings
list(set(diffusehash))
or just have it be a set to begin with
I guess I'm also going to throw my hat in the ring for usda creator, IDA crashed on me while I was gone
I can post my spaghetti when I'm off work for the Unity based tool. It's 90% of the way there feature wise.
I'm pretty sure the version I posted right after whining about \n works: #1106553248590090351 message
But I think the black screen points to a new replacements issue we didn't know about yet, my guess being UI that's being path traced is losing transparency.
Also this:
Note that you can toggle "rtx.skipDrawCallsPostRTXInjection = True" at runtime via RTX Remix GUI. It's in Developer Menu -> Dev Settings -> Developer Options
It's actually a new veersion.
I really need to finish scrolling down before replying....
Many hours later, I finally got it to prune out the duplicate diffuse hashes.
I think I got it 
So this doesn't work with mods
Depends on the mod
It’s now a gray mess. Similar to what BlueAmulet had.
@brazen oyster What function is b67be0?
I have my own PBROven mods with the same glitch and my theory is it's transparency.
I’ll mess with it later. Burnt out from getting that new Python setup working.
Not you too... 🥺
It does allow for different types of override creations now tho, so I can make emissive and metallic ones easily.
Till later tonight 
I didn't start on mine yet, decided to try and look into the rendering bug with either bDoDiffusePass or bDoAmbientPass = 0
I need to figure out how to make replacement particles render like they're supposed to and I have a feeling all we need to do is enable opacity if the alpha of the diffuse isn't 100% 1.0.
I wonder what’s causing the gray nonsense with our replacements.
I'm going to continue my install now, I think I'm about 1/5 of the way through the Viva New Vegas instructions. So many mods... 😵💫
I didn't end up install much of them
I've only got the utilities so far.
So maybe I ought to just make sure my configs are set up.
There is a wabbajack version that is quicker.
I dont know which one ,DXVK remix #75 or the Hack from BlueAmulet did this but textures are no longer being"corrupted" after a while/those with symbols on them, tyou cant select them or deselect. That issue is gone now. Tested in fallout and Operation flashpoint(im sure it did that in OFP)
Basically get through the bug fixes section and you should be okay. I’d suggest Lumen though to add more lights to the scenes.
Cool~~ installing UE5.2 now~~
True. But I like Walls guide cause it says “you” in the credits 
So I never realized this but New Vegas has a bBackground Mouse=1 that can be applied as well. Not sure if it actually impacts anything or not.
It keeps the mouse in the window
Would leave background mouse alone, it’ll lose focus constantly.
Well that's the opposite of the mouse interacting with the background. 😅
Ohhh I see.
I thought it was similar to background Keyboard where it would block input.
The default is 0 for me but I have no idea what mods have been applied to this doc.
But yeah I'm still just not getting this game to budge. What would you say the most essential changes are?
Did you run it without remix ?
At this point I'm running all of the VNV utilities and most of the bug fixes, and I've disabled everything shader related in the INIs as well as turned cell loading on exteriors down to 3.
Good question.
Whatever the answer is, it'll be yes either way in a second 😂
Okay, got it. I think setting preloadIntro to 0 might have been the last thing I needed?
That or bUseWaterReflectionBlur.
bBackground Keyboard is enabled in every INI I see but I can't use the Remix menu... any ideas?
Oh, you have to set it to 0...
Okay, gonna give this another spin.
I would understand if it was just the game being affected, but the RTX Remix UI doesn't show up, either. I don't see the 'Press this, closing in 9 seconds', I don't see 'Loading enhancements', and the menu doesn't visibly appear when I press the hotkey combination.
Yeah I agree, something beyond bizarre is happening here. I can tell you with certainty that I've never observed that behavior in other games, regardless of what's being replaced.
I guess that could also be a crash if your bridge is set to fall back to server on crash though, right?
That's how Hitman: Codename 47 works for me, it just makes sound and I have a bridge dump waiting for me in the trex folder.
If it helps, when I reinstalled the remix mod, I did see 'Loading Enhancements...' for a while, but then it turned black, seemingly after it finished.
And it still works as it did before if I disable that mod.
My other theory is that somehow UI elements being replaced just made it freak out but Remix reliably renders on top of the screen.
Part of me wonders if it's because of how hard we're pushing it.
There's what, 17000 materials being loaded in one mod?
The most I've ever done is about 3400 for Anachronox and 3200 for Red Faction 2.
Even then I usually get a game crash the first time it finishes loading, and back in the Remix 0.1.1 days it used to crash three or four times before fully loading.
If I check this with the last run of the Unity project, where it didn't finish generating because of whatever, this is the gameReadyAssets folder:
Oh yeah in this case I mean materials, so just the ones that are actually written as mat_23490232 or whatever.
Most of those will just be ignore materials which won't be as heavy as the PBR replacements where it has to load anywhere between 1 and 4 textures.
Uhh...?
Oh yeah and any n's in the game are entirely unused.
I was going to set it up to autodelete the n afterwards but ran out of time.
Ah, is that what this is for?
Exactly, yep.
I just shoved them all out of the way so you can easily delete them because I didn't want to commit to that behavior until I offered the ability to not remove them.
I think there's an infinite loop in the last build that has a skip sorting button, the good build is the one before that.
I was pushing my luck pulling an all nighter on this as is, but getting up an hour later like "aight it's coding time..." what was I thinking?
Then again that's right when I put out the working build so I guess I was onto something 😅
The hashes.usda that version generated doesn't seem to work, unfortunately.
I don't think it was the one from 6, it was whichever version caused the grey screen.
That one, I went through Omniverse to properly debug and got a duplicate hash filter in place.
And it seems from one of the conversations like we may have hit a DXVK bug.
So, I'd want 0.0.11?
Oh, I mean of the Unity project.
Yeah that's what I meant... that was a different person with an entirely different set of logic. 😅
If it works with the rtx.conf but not the actual replacements, maybe you could try outputting to that?
That's the one I had which stalled.
From what I heard you can actually overload.
The dxvk.conf has some kind of limit introducing instability.
As for the infinite loop, I think I may have shared one version afterwards? It's weird because I know one of these works for a fact.
Hm yeah you're right, for now maybe just use the premade 0.0.12 hash and run through the texture sorting system.
I can also get you a build with the USDA writing disabled, it's not working at the moment and apparently last night I reverted to an uncivilized state of mind with no source control.
Yeah so I just cannot under any circumstances get bBackground Keyboard=0 to work.
I'm getting a crash with the mod manager and the original game launches but marks my Fallout.ini file as read only and resets the value of that one.
I’ll post my setup here in a bit. I had the same thing happen.
Drove me absolutely insane
This'll actually be my first time playing non vanilla NV, who knows, maybe I might actually enjoy it this time 😅
no amount of mods made me enjoy NV unfortunately. hopefully it does for you though
It won't if Fallout 3 compatibility improves. 😅
On that note-- I'd love to go make a replacement mod for that game as well, so I'll probably take another stab at the xxhash later.
I did get basic chainner commands working but I have a little more restructuring to do before I can call it per material.
TTW seems like the best bet right now
My xxhash mod is almost universal now 
So the last time I was messing with Fallout 3, compatibility was really good.
BlueAmulet said there's no alternative to NVSE's functions for the light stuff?
Not the dome
i wanna set up TTW and see how it goes
It’s still messing up mine.
I did manage to remove compass domes, just not vertical domes.
Got it!
For any mods to Fallout.ini, you need to first go to the game directory and modify FalloutDefault.ini, then you can take the read only tag off of Fallout.ini in Documents\My Games\ and edit it. It'll probably reset but it'll use your new preferences.
You should probably modify it in the Mod Organizer, it overwrites the ones in the folder
I tried modifying those but it had no effect. 😔
Ah, you're at where I was when I wrote the guide and said to use FalloutNV.exe instead of the mod organizer
My Mod Organizer version of the game is still crashing for some odd reason.
Here's my inis
so i know in the future, what exactly does that script do?
TextureRemix.py -o overrides.usda "Path/to/Texutre/Dump" -t normal -f "_n"
So give it a folder of textures ideally dumped from a games archives or something
Generates all the hashes for the diffuse textures, of which is based off of the filters variable.
Then, get all the "special" textures that you specify. I only have normals working right now.
Compare the names of the files, so if you have door.dds and door_n.dds it'll match those up.
Then it creates an override usda using the diffuse texture hashes and the path to the normal texture
looks like something that can be edited with the mesh in nifscope
yes theres a vertex shader thing in nifscope meshes
nifs *
extract the pip boy one and has a looks
with nifscope
NIF File Format Library and Tools
Dunno, getting a bit too sleepy to wanna troubleshoot ngl
Might just take my W of getting that script setup and take a bit more sleep tonight
So moving forward, we’ll likely want to break up the usda files and add them as sub layers.
I could probably make a small tweak to my current system to accomplish this.
I just need to undo the stupid sleep deprived validator changes.
My material writing is an iteration of strings so I can just save each string to a USDA in a subfolder instead.
normals are gone
but like on an engine level
without breaking the terrain lod and the pipboy
My stock FNV runs ,
the NVSE crashes right before the level loads,(not the runtime error that we had in them old days)
For me I wasn't able to use lStewieAl's Tweaks mod, having it enable was crashing my game
yeah as soon as I enabled that again I crash before main menu fully loads
Normals should be gone now
https://github.com/BlueAmulet/NewVegasRTXHelper/releases/tag/rtx-v0.0.4
also uhh ... yeah I tried making my own usda to load normal maps, didn't work for whatever reason, not only that but the flash legacy red option flashes everything as if my usda's ignored.
If you try to load your USDA into Omniverse (assuming it's not too big and crashes the program) it'll usually tell you the problem.
I can't even figure out how to download omniverse, the page for it says Industry and Job Title but no fields are selectable from both
With the hash sheet before, the two that got us were this:
- Duplicate hash entries
- Invisible formatting characters in the strings
Yeah registering was a pain. I figure it doesn't have to be perfect if this is your only use case for the service.
Oh wait, you made True Scopes?
...
I mean if you were feeling spicy, and if they're 3D models...
If you cooked up a .bsa with a unique material for the lenses we could actually set them to be replaced with the Translucent Remix material type with correct IOR and everything.
Ideally we'd be able to get Remix to replace the model with everything set up appropriately in Remix, but I guess we're stuck on waiting for Godot Stable Hashes 😂
The only problem with that is... there's no actual hole in the weapons.
True Scopes sidesteps that by using a camera on the far end, and then a screen on the near end that the camera's view is projected on, so you see 'through' the scope model.
That's why I was hoping Portal with RTX's ray teleportation is still in, because then I could make a 'camera' with the RTX stuff, by teleporting light from one side of the scope to the other.
I think I saw code for that in dxvk-remix, so probably
By the way, the new DXVK Remix added a ton of development and debug tools to the GUI.
Tons of stuff that were only in debug builds, like free camera controls or skipping all rasterized content.
Dont technically need a hole. If we set part of the static mesh to a transparent material, and add geometry for the inside of the scope, no hole needed.
Ive definitely seem some bits of Remix referring to portals and teleporting Rays, but Ill c9nfess I dont know either how to utilise them or if they work in the non-portal build 🤷♀️
Yes, but then that defeats the purpose of the mod, which was to avoid directly affecting any weapon meshes and doing it dynamically.
Oh, Im just thinking about Remix solutions, sorry I misunderstood.
Unless... you're saying some weird Remix thing lets you make a material that causes stuff behind it to be transparent, too?
If we can get the ray portals working, then we could have the proper lens refraction to A) Get the rays on the other side of the scope, and B) Zoom them in.
It wouldn't be controllable, unless we could do some weird stuff where we have double-layer ray refraction, because I can control the distance between 'lenses' via script.
I guess how a normal, real scope works, huh?
Imagine that, the first mod with a Remix-specific version, using RTX features in a game which didn't originally support it?
yeah, it's pretty handy. now all we need is the ray tracing toggle 😛
Honestly yeah I'm seeing that more and more with Remix. The fix for rendering glitches is to basically toss out the hacks and just make a real thing. Kind of like when you're dealing with UE1 or other old games that have light corona sprites, the only way to make your fake lighting look good is to remove the texture and have a physical light show up.
I wish there was more docs on how the shader capture works in Remix because I'd love to really dive into that. Hitman Blood Money especially feels like it's just waiting to get cracked open, especially as the game has undocumented fixed-function shaders.
If I could disable RT in release builds I could actually look at how it tries to render in fixed-function.
the debug builds are miserably slow. i've needed that toggle so many times now but i can't use it
there's at least 3 games i'm interested in where it'd help a ton
I think having the toggle for skipping all non-pathtraced content is a great start.
But yeah... hopefully soon.
I want to start committing to the source but I still haven't even been able to build it... soon, I guess.
Its the tiniest thing, but a toggle would be amazing for Before / After comparisons, and for development to match the original artistic v i s i o n of a scene and for testing, to get past bits that crash, or comparing oddities to the Rasterised Scene to help ID issues with Remix etc.
Unfortunately my brain is Very Smooth and I do not have VS setup nor the build chain.
vanilla dxvk also lets you set the shader model iirc
#general-remix message
Wait hang on 👀
did this get linked yet?
BSShaderPPLightingProperty::GetRenderPasses
ah, I ended up hooking 0xBA9EE0 and just blocking various render pass numbers
306, 318, 334. Prevents normals and weird black transparent mesh from drawing. the bDoThingPass options in the ini had some bad side effects
not that I can see?
heh nice
also, another thing that could be useful for you, sec
it's possible NVR already hooks there
for (int callAddr : {0xB74000, 0xB740B3, 0xB7419F, 0xB8019D, 0xB80221, 0xB828BA, 0xB82981, 0xB82A4A, 0xB87584, 0xB8764E, 0xB8772E, 0xB8780E, 0xB878D8, 0xB879B4, 0xB87AC2, 0xB87FC3, 0xB880AF, 0xB88179, 0xBA51B1, 0xBABC8B, 0xBABD9B, 0xBB02F7, 0xBB1590, 0xBB615F, 0xBBA4FA, 0xBBA52E, 0xBBA555, 0xBC0A31, 0xBC4701, 0xBC5131, 0xBC638E, 0xBCA1D0, 0xBCB59E, 0xBCB683, 0xBCCD9B, 0xBCF2A0, 0xBD09A4, 0xBD0A6B, 0xBD178C, 0xBD28F0, 0xBD3B00, 0xBD3BEA, 0xBD50DB, 0xBD521B, 0xC03B61 }) {
ReplaceCall(callAddr, CreateVertexShader);
}
for (int callAddr : {0xB78720, 0xB78907, 0xB802A5, 0xB80323, 0xB83D45, 0xB87B7E, 0xB87C4C, 0xB87D2C, 0xB87E15, 0xB87EE3, 0xB88269, 0xB8836B, 0xB8844B, 0xBA5255, 0xBABF67, 0xBAC0AA, 0xBB041C, 0xBB1707, 0xBB17DD, 0xBB18C5, 0xBB61E3, 0xBB6261, 0xBBB5A5, 0xBBB5E5, 0xBBB687, 0xBBB6C0, 0xBBB717, 0xBC0ADB, 0xBC47AB, 0xBC5280, 0xBC6590, 0xBC661E, 0xBC66A6, 0xBC672E, 0xBC67BC, 0xBC684A, 0xBC68D8, 0xBCA350, 0xBCB75C, 0xBCE3BA, 0xBCE48A, 0xBCF745, 0xBD182F, 0xBD18E1, 0xBD29E4, 0xBD2AB2, 0xBD3EE5, 0xBD517F, 0xBD52BF, 0xC03BED }) {
ReplaceCall(callAddr, CreatePixelShader);
}```
NiD3DVertexShader* __stdcall CreateVertexShader(const char* path,
const void* Size,
const char* a3,
const char* compiledShaderName) {
NiD3DVertexShader* shader = StdCall<NiD3DVertexShader*>(0xBE0FE0, path, Size, a3, compiledShaderName);
shader->SetName(compiledShaderName);
return shader;
}
NiD3DPixelShader* __stdcall CreatePixelShader(char* path,
const void* Size,
const char* a3,
const char* compiledShaderName) {
NiD3DPixelShader* shader = StdCall<NiD3DPixelShader*>(0xBE1750, path, Size, a3, compiledShaderName);
shader->SetName(compiledShaderName);
return shader;
}
In NiObjectNET
void SetName(const char* newName) { m_kName.m_kHandle = newName; };
yeah those hooks already are in nvr
this will allow you to see shader names if you ever grab them at runtime from the pass
@brazen oyster oh right, what's the vtable for NiAVObject supposed to look like, cause where you have OnVisible is not where NVR has it
virtual void UpdateControllers(float arg);
virtual void ApplyTransform(void);
virtual void Unk_25(void);
virtual NiAVObject* GetObject_(BSFixedString* kName);
virtual NiAVObject* GetObjectByName(BSFixedString* kName);
virtual void SetSelectiveUpdateFlags(float arg, bool updateProperties);
virtual void UpdateDownwardPass(const NiUpdateData* arData, UInt32 uFlags);
virtual void UpdateSelectedDownwardPass(NiUpdateData* arData, UInt32 uFlags);
virtual void UpdateRigidDownwardPass(NiUpdateData* arData, UInt32 uFlags);
virtual void UpdateWorldBound(void* arg);
virtual void UpdateTransform(void);
virtual void UpdateWorldData(void);
virtual void Unk_2F(NiCullingProcess* tgt);
virtual void UpdateBounds(NiUpdateData* arData);
virtual void Unk_31(void* arg);
virtual void Unk_32(void* arg);
virtual void DetachParent(void* arg);
virtual void Unk_34(void* arg);
virtual void OnVisible(NiCullingProcess* kCuller);
virtual void PurgeRendererData(void* arg);
yeah, NVR had it on 2F
NiObject:
virtual const NiRTTI* GetRTTI(void);
virtual NiNode* IsNiNode(void);
virtual BSFadeNode* IsFadeNode(void);
virtual BSMultiBoundNode* IsMultiBoundNode(void);
virtual NiGeometryData* IsGeometry(void);
virtual NiTriBasedGeom* IsTriBasedGeometry(void);
virtual NiTriStrips* IsTriStrips(void);
virtual NiTriShape* IsTriShape(void);
virtual BSSegmentedTriShape* IsSegmentedTriShape(void);
virtual BSResizableTriShape* IsResizableTriShape(void);
virtual NiParticles* IsParticlesGeom(void);
virtual NiLines* IsLinesGeom(void);
virtual bhkCollisionObject* IsBhkNiCollisionObject(void);
virtual bhkBlendCollisionObject* IsBhkBlendCollisionObject(void);
virtual bhkRigidBody* IsBhkRigidBody(void);
virtual bhkLimitedHingeConstraint* IsBhkLimitedHingeConstraint(void);
virtual NiObject* CreateClone(NiCloningProcess* kCloning);
virtual void LoadBinary(NiStream* kStream);
virtual void LinkObject(NiStream* kStream);
virtual void RegisterStreamables(NiStream* kStream);
virtual void SaveBinary(NiStream* kStream);
virtual bool IsEqual(NiObject* pkObject);
virtual void GetViewerStrings(NiTArray<char*>* pkStrings);
virtual void AddViewerStrings(NiTArray<char*>* pkStrings);
virtual void ProcessClone(NiCloningProcess* kCloning);
virtual void PostLinkObject(NiStream* kStream);
virtual bool StreamCanSkip(void);
virtual const NiRTTI* GetStreamableRTTI(void);
virtual void SetBound(NiBound* pNewBound);
virtual void GetBlockAllocationSize(void);
virtual UInt32* GetGroup(void);
virtual void SetGroup(void* pkGroup);
virtual void Unk_22(void);
NiRefObject
virtual void Destroy(bool bFreeThis);
virtual void DeleteThis();
is it working/playable now or no
Depends on your definition.
does it crash still and does the screen shake violently
doesn't crash (needs custom bridge) and doesn't shake violently (needs newer dxvk-remix)
also uh, if the alpha of a normal map is supposed to be it's reflectiveness, then what are these _m files?
masks
for env mapping
diffuse color = diffuse 
diffuse alpha = alpha 
-
_n
normal color = normal
normal alpha = specularity -
_g
glow mask/ fake skin SSS/ hair layer -
_p
parallax -
_e
cube map -
_em/_m
cube map mask
alright, got diffuse, normals, specularity, glowing (doesn't work but I did try), and cube map masks supported in my usda writer
pretty happy too, only takes 8 seconds to parse through all the textures, split alpha off the normals, and write the usda
What’s your usda writer method? 
Only Stock FNV(for me).
the NVSE/NVReloaded is crashing right when the level loads with no specific error.Just sends report to microsoft.
No Shaking/wobblines(dxvk-remix #75 has option to solve this) , and the crashing was solved with BlueAmulet fix/hack
Those 2 problems are solved, others remain
Did you patch it?
With which one?
Simple patcher to make Fallout New Vegas 4GB Aware. Supports all known Steam and GoG versions. The Bethesda.net and XBOX Game pass versions are NOT supported since NVSE will not support them either.
How are you using BlueAmulets mod without xnvse? 
This hack(for remix )not the the dlls for ingame-lights @jagged chasm
Btw,this is pined/Main post , for those who need et.
Oh gotcha
Would it be helpful to post my whole game setup, without game files ofc?
@jagged chasm dont worry, i need to test the FNV 4gb first, i was using from oblivion.
Still same crash split second when entering the game.
Latest JIP hinted me that im using older version.Also nvse is older | 6_2_4 needs 6.2.6.We shall see if thats the problem
https://ntcore.com/?page_id=371 try this one
lates jip + nvse made et worse, immediate crash. with this FalloutNVpatch.
the Rmurrays 4gb made et crash right before the menu loads. back to the start. 😑
I believe the oblivion and ntcore patchers are just generic patchers in that all they do is set the 4GB LAA flag. The New Vegas one is actually specific to FNV as it additionally forces the game to automatically load xNVSE. You can simulate the same thing by using the Force load libraries option in Mod Organizer 2 with nvse_1_4.dll
6.2.6 is an entire year and a month old, 6.3.0 is latest
Ye , i see that i downloaded 6.3.0 . Problem with remix loading to the menu was the Reloaded intro. but still.Loading a save crashes when i see the game load for a split second ,w/pathtracing.Might be rtx.conf issue actualy
Hmm...doesnt even create rtx.conf. My mistake appears only when we save changes.
While looking through FO3's textures I realized that I made a mistake.
I wrote my USDA system for FNV based on the assumption that all normalswould be marked as _n. But I forgot another tag for normals... (1)
Most of these terrain related normals are just using the original names as duplicates instead of being renamed.
No way, they copied and pasted the name?
I wonder if this would cause some of the problems we've seen sofar.

This is in my Diffuse folder from the F:NV replacements packer I made.
So if I just fix the validation loop to what it was doing before stutter and all, and make (1) output to normals as well, it should be fine.
That's the weirdest part, it's consistent.
Wait, never mind, there's other (1)'s as well.
😔 TODD!
Howard?
Far as i see , only mentioned in special thanks. He didnt made FNV. But if he's reponsible for gamebryo ...🤷♂️
😁
This is the case for both FO3 and New Vegas.
I should update my python script to recreate the whole material based off the exported textures. I think that’d fix the gray material issue 
I think this adds way more extra design complications.
I was using EndsWith to parse most of the materials.
We have normals that end in _n (1), diffuse AND normals that end with no extension but (1)...
This thought crossed my mind but I thought "Nah, it's a AAA title, they have standards." And I knew I was lying to myself, but I was too scared to know.
I'll probably just hardcode it. 😂
Not sure how useful it is but looking through FO3, it looks like legacy normals are consistently called x<integer coord>y<integer coord> (1) while the associated diffuse has no (1).




