Jump to content
  • 0

Support for ENB Complex Grass In LOD


z929669

Question

@sheson I am wondering if you have looked at complex grass support in LOD. I don't know if it's even possible, given the ENB requirements vs DynDOLOD atlas-texture requirements, but there is no way I can find to get a good LOD match in all lighting/weather conditions with LOD grass behaving similarly to loaded grass in terms of light sources and observer PoV.

Basically, ENB-CG looks at lower-left pixels of 2:1 (vertical:horizontal) texture atlas with diffuse/normal, opacity/specular in the alpha. I'm not sure if this could work using the DynDOLOD atlas and grass components of the super meshes, but figured you would have some idea of the limitations for LOD.

I created CG for vanilla and Cathedral Landscapes for testing purposes if you ever have appetite for looking into it.

Link to comment
Share on other sites

Recommended Posts

  • 0

TexGen already supports complex grass. TexGen splits the diffuse and normal map from the single texture when generating grass LOD billboards.
The generated grass LOD billboard have a diffuse and a normal map texture, like the HD tree LOD billboards.

LOD uses the default shader where diffuse and normal map texture are already separate. I would expect the purpose of complex grass (e.g. grass with normal map textures) to behave more like the default shader now in terms of lighting.

Object LOD uses hardcoded internal billboard for grass LOD. We need to find out what normal vector(s) ENB uses for the double sided triangles or what else it might be doing different compared to the default shader and if it can be done in the default shader for LOD or emulated.

Link to comment
Share on other sites

  • 0
1 hour ago, sheson said:

TexGen already supports complex grass. TexGen splits the diffuse and normal map from the single texture when generating grass LOD billboards.
The generated grass LOD billboard have a diffuse and a normal map texture, like the HD tree LOD billboards.

LOD uses the default shader where diffuse and normal map texture are already separate. I would expect the purpose of complex grass (e.g. grass with normal map textures) to behave more like the default shader now in terms of lighting.

Object LOD uses hardcoded internal billboard for grass LOD. We need to find out what normal vector(s) ENB uses for the double sided triangles or what else it might be doing different compared to the default shader and if it can be done in the default shader for LOD or emulated.

I poked Boris and some others thinking about this on the ENB Discord. https://discord.com/channels/708699116519161907/708703386161381387/996783478446235688

I don't have the knowledge to be of much assistance on either side (but I can test).

Link to comment
Share on other sites

  • 0

The normal map needs a alpha specular map with rgb(127,127,127) pixels in lower left corner for SSS. Pixels for normal lower left must be valid normal like rgb(127,127,255). THis is what ENB is reading for the effect to work.

I have inspected the TexGen temp folder created during processing and have seen how the atlas is split apart presumably to grab the diffuse/normal for the atlas, so keeping the specular alpha in the normal atlas may be possible if grasses were split from the combined DynDOLOD texture atlas.

But who knows what the mesh needs on the grass billboard node ...

Link to comment
Share on other sites

  • 0

With the information from the discord it might be possible for me to test with different normal/bi/tangents vectors in the LOD meshes and rendered normal map textures of the grass LOD billboards. I can not promise to be quick about it, because of being busy.

ENB could target grass LOD shapes and their shader specifically by looking for BSSubIndexTriShapes with the Name "grass" in the LOD meshes. If other unique identifiers in the shader settings of the LOD meshes is required, that can be added as well. I have full control over the generated LOD meshes, we can do whatever we want.

  • Like 1
Link to comment
Share on other sites

  • 0
On 7/14/2022 at 2:21 AM, sheson said:

With the information from the discord it might be possible for me to test with different normal/bi/tangents vectors in the LOD meshes and rendered normal map textures of the grass LOD billboards. I can not promise to be quick about it, because of being busy.

ENB could target grass LOD shapes and their shader specifically by looking for BSSubIndexTriShapes with the Name "grass" in the LOD meshes. If other unique identifiers in the shader settings of the LOD meshes is required, that can be added as well. I have full control over the generated LOD meshes, we can do whatever we want.

Sounds like a plan. I assume you noticed that the testing with the normals-only prepass FX Boris provided on the Discord reveals that the grass LOD normals aren't rendered for some reason. If that's the case, then getting them to render would be key. It may be that they don't resolve in game against the terrain normals, but IDK.

On another note for your testing, I learned (DoubleYou suggested) that grass fill/LOD matching is better with constant DynDOLOD_SSE.ini T/B-RGB values of 1.0 0.5 (so no color bias; other brightness settings at your defualt), and reduced TexGen direct/ambient. This is the best matching I've gotten for complex grass in all weathers and ToD on the tundra. I assume that without the color bias, snow, Rift, and Reach grasses will also match well:

SkyrimSE 2022-07-14 14-38-16-88.jpgSkyrimSE 2022-07-14 14-38-25-40.jpg

 

That's with ENB-CG active and FakeLighting/SSS > 0 in ENB (so with 'optimal' ENB-CG lighting bias). Here's recommended DynDOLOD/TexGen (≥alpha 96) settings for the record:

;Without ENB complex grass
; grass LOD brightness multipliers
GrassBrightnessTopR=0.500
GrassBrightnessTopG=0.500
GrassBrightnessTopB=0.500
; make bottom darker to fake shadowing
GrassBrightnessBottomR=0.500
GrassBrightnessBottomG=0.500
GrassBrightnessBottomB=0.500

;With ENB complex grass
; grass LOD brightness multipliers
ComplexGrassBrightnessTopR=0.500
ComplexGrassBrightnessTopG=0.500
ComplexGrassBrightnessTopB=0.500
; make bottom darker to fake shadowing
ComplexGrassBrightnessBottomR=0.500
ComplexGrassBrightnessBottomG=0.500
ComplexGrassBrightnessBottomB=0.500

*NOTE: DynDOLOD defaults for the above settings correspond to the vanilla game and the vanilla game using "Vanilla Complex Grass for ENB" mod and default ENB 0.475.

TexGen Grass Direct=110, Ambient=15 (this should be close but untested)

TexGen HD grass Direct=0, Ambient=160

EDIT: the grass also looks fuller in LOD with these settings. And from this angle with 5000 timescale, all weathers/ToD look good. Presumably, this would also work for non-CG grass with and without ENB with slight proportional decrease of TexGen direct/ambient

EDIT: Link to latest discussion from second round of testing: https://discord.com/channels/708699116519161907/708703386161381387/997244135880790098

EDIT: The important thing to note about top/bottom DynDOLOD brightness settings above is that they are all equal to allow color tone to be governed by the game, textures, shaders, and underlying configuration. This eliminates DynDOLOD itself as a source of bias to color. To allow controlled bias by the end user, setting a constant of 0.5 as opposed to 1.0 may be preferable.  TexGen Direct/Ambient can be used to compensate.

Link to comment
Share on other sites

  • 0

Some videos from testing using same settings as above:

1. With ENB complex grass:

2. With ENB complex grass, but no SSS and no Fake Lights on the complex grass (doesn't seem to really have much impact):

3. With ENB, but no complex grass. This shows that the ENB used does modify grass color outside of complex grass setting.

4. No ENB. Grass almost exactly matches grass LOD.

 

Link to comment
Share on other sites

  • 0
12 hours ago, z929669 said:

Sounds like a plan. I assume you noticed that the testing with the normals-only prepass FX Boris provided on the Discord reveals that the grass LOD normals aren't rendered for some reason. If that's the case, then getting them to render would be key. It may be that they don't resolve in game against the terrain normals, but IDK.

The normals of LOD may not be shown with the fx, however all LOD including grass LOD has working normal vectors and maps as they are currently intended. ENB does something on top of full grass which we may or may not be able to add to the LOD shader or calculate into the shape vertex data for it.

12 hours ago, z929669 said:

On another note for your testing, I learned (DoubleYou suggested) that grass fill/LOD matching is better with DynDOLOD_SSE.ini T/B-RGB values of 1.0 (so no color bias; other brightness settings at your defualt), and reduced TexGen direct/ambient. This is the best matching I've gotten for complex grass in all weathers and ToD on the tundra. I assume that without the color bias, snow, Rift, and Reach grasses will also match well:

See, normal vectors are obviously working... The RGB values in the INI are to match the vanilla grass, vanilla grass shader and the vanilla post process etc. with the default TexGen settings for grass LOD billboards. If there are changes to anyone of those, values need adjusting.

  • Like 1
Link to comment
Share on other sites

  • 0

See updates to DynDOLOD 3 Alpha 96.

Generate HD Grass LOD billboards with TexGen. https://dyndolod.info/Help/TexGen#Grass-HD-Grass-Tree-HD-Tree-Rendered

 

HD Grass LOD billboards will automatically use an external billboard NIF to match what ENB does to full grass https://dyndolod.info/Help/Grass-LOD#Internal-Billboards-and-External-Billboards

The billboard needs to use 8 trinagles instead of 4, so lower density accordingly for performance. the usual double side billboard will be too bright on the side opposite to the light source/sun.

Default settings tested with vanilla complex grass and all other ENB effects disabled.

Any other lighting settings applied to full complex grass obviously won't be applied to LOD, unless Boris adds custom LOD shaders that could do that (that could also allow to use 4 triangles again if the flip normal feature could/would be added to the LOD shader)

  • Thanks 1
Link to comment
Share on other sites

  • 0

My initial runs using alpha 96. preliminary testing to find the ideal TexGen settings.

Configs used:

TexGen_SSE.INIDynDOLOD_SSE.ini

mesh rules (included for kicks):

DynDOLOD_SSE_Default.ini

 

TexGen Direct/Ambient (all else remains equal):

0/135 (default)  >>  0/145  >>  0/155

SkyrimSE 2022-09-12 16-25-22-00.jpgSkyrimSE 2022-09-12 18-09-10-38.jpgSkyrimSE 2022-09-12 22-33-16-78.jpg

I have not yet done any weather/lighting tests, but this grass LOD looks quite good.

(EDIT: LOD8 grass has no grass) Note that LOD4 grass seems to be slightly darker than LOD8 grass (and full grass)

 

Link to comment
Share on other sites

  • 0

ENB Complex Grass says you don't use these textures for LOD Generation;

ENB Complex Grass - Patch Compendium for various grass mods at Skyrim Special Edition Nexus - Mods and Community (nexusmods.com)

DynDOLOD3 Alpha97 takes care of this now, or the Complex Grass Author needs to update the complex grass mods to work with the Complex Grass feature?

Also are all the settings to now be changed to 0.500? And I also noticed ';With ENB complex grass' shows all the sections as TopR, no TopB, TopG, BottomR, or BottomG, BottomB.

So if I'm going to use Complex Grass, I should make the settings the same?

;With ENB complex grass
; grass LOD brightness multipliers
ComplexGrassBrightnessTopR=0.500
ComplexGrassBrightnessTopR=0.500
ComplexGrassBrightnessTopR=0.500
; make bottom darker to fake shadowing
ComplexGrassBrightnessTopR=0.500
ComplexGrassBrightnessTopR=0.500
ComplexGrassBrightnessTopR=0.500

On the subject of the grass LOD brightness multipliers, are we still using 1.0 for all of them?

; grass LOD brightness multipliers
GrassBrightnessTopR=0.400
GrassBrightnessTopG=0.445
GrassBrightnessTopB=0.450
; make bottom darker to fake shadowing
GrassBrightnessBottomR=0.200
GrassBrightnessBottomG=0.223
GrassBrightnessBottomB=0.225

LOD4/8/16 should still be Level 0 for Z-fighting, as it was mentioned to me earlier? I'm using Alpha97...

LAST, are there any other new changes I should be aware of that also need editing in any INI, etc.? I did notice the new screen shots for TexGen and DynDOLOD on the wiki.

I ran Alpha97 today for the first time, it took twice as long as Alpha95, but I had Complex Grass installed for Folkvangr , and Origins Of Forests, so would the complex grass double the time it takes for Alpha97 to complete?

Also when I started the game using Alpha97 there was no grass or trees rendered in the distance.

Going from one version of DynDOLOD to another, do I have to disable DynDOLOD and save the game, then disable, or uninstall DynDOLOD, load the save, then save again?

Did the behaviour of file creation from DynDOLOD change from Alpha95 to 97? Because I now noticed I have this path, I didn't have before.

C:\Users\USER\AppData\Local\Skyrim Special Edition
DynDOLOD_settings
DynDOLOD_SSE_next-object.fid
DynDOLOD_SSE_next-object-esm.fid
DynDOLODesm.fid
DynDOLODesp.fid
Plugins.sseviewsettings


Is it possible in a next release to keep all this under the DynDOLOD directory instead?

THANKS

 

Edited by mooit
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.