Many thanks DSS!!! great update!!
Conditional Logic/Expression Parser and Built in Performance Monitor are features i will definitly use...
also now i can monitor the Regex, always better to look numbers than "feeling"
Conditional Logic/Expression Parser and Built in Performance Monitor are features i will definitly use...
also now i can monitor the Regex, always better to look numbers than "feeling"
As many others have already said, another amazing set of features on top of countless others before it. Special thanks for implementing those features and additions specifically requested by me, should allow me to overhaul my XCom 2 overhaul in a much more sensible fashion.
[quote="DHR"]Conditional Logic/Expression Parser... also now i can monitor the Regex, always better to look numbers than "feeling"[/quote]
Actually, this comment reminded me of one of the things that had me wanting the expression parser in the first place. Can it be used in regex patterns to help calculate the register # for a cbuffer based on the offset? Or since regex is mainly just matching strings, is that impossible to do?
As many others have already said, another amazing set of features on top of countless others before it. Special thanks for implementing those features and additions specifically requested by me, should allow me to overhaul my XCom 2 overhaul in a much more sensible fashion.
DHR said:Conditional Logic/Expression Parser... also now i can monitor the Regex, always better to look numbers than "feeling"
Actually, this comment reminded me of one of the things that had me wanting the expression parser in the first place. Can it be used in regex patterns to help calculate the register # for a cbuffer based on the offset? Or since regex is mainly just matching strings, is that impossible to do?
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
[quote="DJ-RK"]Actually, this comment reminded me of one of the things that had me wanting the expression parser in the first place. Can it be used in regex patterns to help calculate the register # for a cbuffer based on the offset? Or since regex is mainly just matching strings, is that impossible to do?[/quote]
That actually comes into why ShaderRegex has room for expanding it to use multiple patterns per regex group in the future - the idea is to be able to match a constant buffer definition with one pattern to get the offset, perform some simple arithmetic on it to work out the register number, then use a second pattern to match the code and do the replacement. This will probably still be a couple of versions away, but it is planned.
DJ-RK said:Actually, this comment reminded me of one of the things that had me wanting the expression parser in the first place. Can it be used in regex patterns to help calculate the register # for a cbuffer based on the offset? Or since regex is mainly just matching strings, is that impossible to do?
That actually comes into why ShaderRegex has room for expanding it to use multiple patterns per regex group in the future - the idea is to be able to match a constant buffer definition with one pattern to get the offset, perform some simple arithmetic on it to work out the register number, then use a second pattern to match the code and do the replacement. This will probably still be a couple of versions away, but it is planned.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
[center][size="XL"][color="orange"]Custom Help Text Shader[/color][/size]
[url]https://github.com/DarkStarSword/3d-fixes/tree/master/custom_shader_help_text[/url][/center]
Displays the contents of help_short.txt in the bottom left corner for ten seconds after launch:
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/75026/[/img]
Pressing F1 will bring up the contents of the help.txt file:
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/75027/[/img]
Supports:
- Displays ASCII text read from a file
- No length restrictions
- Text formatting performed entirely on the GPU with a combination of compute, geometry and pixel shaders
- Automatic text wrapping within some bounds
- Left/middle/right top/center/bottom anchoring (short text is anchored to the lower left of the screen by default, long text is anchored to the top middle)
- Left/center/right text alignment (note the "Press F1 for help" was centered above)
- Automatic text reflowing on resolution change
- Customisable text colour
- Customisable background colour and opacity
- Customisable padding around text
- Text parameters can be customised per text box
- Could be customised for other text needs
To keep IniParam usage to a minimum (x5 and y5 are used for the window size to properly size the font and detect resolution changes), most of the parameters this shader uses are passed in via a custom parameter resource - I do want to make this a little easier to write in 3DMigoto in the future, but for now it looks like this:
[code]
[ResourceParamsFull]
type = StructuredBuffer
array = 1
bind_flags = shader_resource
data = R32_FLOAT -0.8 0.9 0.8 -1 1 0.7 0.15 1 0 0 0 0.75 0.01 0.01 1 1 0 1.0
; ^^^^Rectangle^^|^^^Colour^^^|Background|^Border^^|^ ^|^|^-- font scale
; x1 y1 x2 y2|r g b a|r g b a |horz vert| ^ |^---- text alignment: 0=left 1=center 2=right
; range -1:+1 | |r g b a |horz vert| ^------- h/v-anchor: 0=none 1=left/top 2=center 3=right/bottom
[ResourceParamsShort]
type = StructuredBuffer
array = 1
bind_flags = shader_resource
data = R32_FLOAT -0.93 -0.9 +1 -0.9 1 0.7 0.15 1 0 0 0 0.75 0.01 0.01 1 3 1 1.0
; ^Bounds Rectangle^|^^^Colour^^^|Background|^Border^^|^ ^|^|^-- font scale
; x1 y1 x2 y2 |r g b a|r g b a |horz vert| ^ |^---- text alignment: 0=left 1=center 2=right
; range -1:+1 | | | | ^--- h/v-anchor: 0=none 1=left/top 2=center 3=right/bottom
[/code]
If you're wondering what the "bind_flags" are all about - that's a quirk of how I've set up this shader to switch between the two text resources - they aren't directly bound to the shader, but rather copied by reference to another custom resource, and that resource is bound to the shader (and tested for null in the present call). That situation means 3DMigoto cannot automatically determine the correct bind flags, so they have to be manually specified. If you directly bound them to the shader you wouldn't need that.
Displays the contents of help_short.txt in the bottom left corner for ten seconds after launch:
Pressing F1 will bring up the contents of the help.txt file:
Supports:
- Displays ASCII text read from a file
- No length restrictions
- Text formatting performed entirely on the GPU with a combination of compute, geometry and pixel shaders
- Automatic text wrapping within some bounds
- Left/middle/right top/center/bottom anchoring (short text is anchored to the lower left of the screen by default, long text is anchored to the top middle)
- Left/center/right text alignment (note the "Press F1 for help" was centered above)
- Automatic text reflowing on resolution change
- Customisable text colour
- Customisable background colour and opacity
- Customisable padding around text
- Text parameters can be customised per text box
- Could be customised for other text needs
To keep IniParam usage to a minimum (x5 and y5 are used for the window size to properly size the font and detect resolution changes), most of the parameters this shader uses are passed in via a custom parameter resource - I do want to make this a little easier to write in 3DMigoto in the future, but for now it looks like this:
[ResourceParamsFull]
type = StructuredBuffer
array = 1
bind_flags = shader_resource
data = R32_FLOAT -0.8 0.9 0.8 -1 1 0.7 0.15 1 0 0 0 0.75 0.01 0.01 1 1 0 1.0
; ^^^^Rectangle^^|^^^Colour^^^|Background|^Border^^|^ ^|^|^-- font scale
; x1 y1 x2 y2|r g b a|r g b a |horz vert| ^ |^---- text alignment: 0=left 1=center 2=right
; range -1:+1 | |r g b a |horz vert| ^------- h/v-anchor: 0=none 1=left/top 2=center 3=right/bottom
[ResourceParamsShort]
type = StructuredBuffer
array = 1
bind_flags = shader_resource
data = R32_FLOAT -0.93 -0.9 +1 -0.9 1 0.7 0.15 1 0 0 0 0.75 0.01 0.01 1 3 1 1.0
; ^Bounds Rectangle^|^^^Colour^^^|Background|^Border^^|^ ^|^|^-- font scale
; x1 y1 x2 y2 |r g b a|r g b a |horz vert| ^ |^---- text alignment: 0=left 1=center 2=right
; range -1:+1 | | | | ^--- h/v-anchor: 0=none 1=left/top 2=center 3=right/bottom
If you're wondering what the "bind_flags" are all about - that's a quirk of how I've set up this shader to switch between the two text resources - they aren't directly bound to the shader, but rather copied by reference to another custom resource, and that resource is bound to the shader (and tested for null in the present call). That situation means 3DMigoto cannot automatically determine the correct bind flags, so they have to be manually specified. If you directly bound them to the shader you wouldn't need that.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Costume Mod Tutorial, covering index buffer removal, partial mesh removal, mesh editing in Blender, mesh replacement and vertex group (bone) transfers. I wouldn't suggest watching this at work, though I did try to keep the video PG:
https://www.youtube.com/watch?v=zWE0xP4MgR8
Costume Mod Tutorial, covering index buffer removal, partial mesh removal, mesh editing in Blender, mesh replacement and vertex group (bone) transfers. I wouldn't suggest watching this at work, though I did try to keep the video PG:
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
[quote="DarkStarSword"]index buffer removal, partial mesh removal[/quote]
I'm interested in this, for my (work in progress) Okami fix. I'm trying to do the most complete cel shading removal mod I can, and there is an index buffer that I want to remove and not the complete VS/PS. I'll check the video tomorrow to see if it can be toggled with a hotkey like other parts of the effect.
I'm interested in this, for my (work in progress) Okami fix. I'm trying to do the most complete cel shading removal mod I can, and there is an index buffer that I want to remove and not the complete VS/PS. I'll check the video tomorrow to see if it can be toggled with a hotkey like other parts of the effect.
Because you centered the video, it's not clickable.
Awesome work, 3Dmigoto as a mod tool is going to open up a lot of games to modder improvements, that were previously pretty much untouchable because they did not include mod tools from the developer :)
Because you centered the video, it's not clickable.
Awesome work, 3Dmigoto as a mod tool is going to open up a lot of games to modder improvements, that were previously pretty much untouchable because they did not include mod tools from the developer :)
[quote="D-Man11"]Because you centered the video, it's not clickable[/quote]Ahh, thanks - I was wondering why the post was broken. Edited to remove the center tag.
TY, watching the video where you showed your gaming room, gave me the solution I was looking for. It had never occurred to me that one of those outdoor screens would work well. The 135 inch is the perfect size to go over my wooden shutters/window.
TY, watching the video where you showed your gaming room, gave me the solution I was looking for. It had never occurred to me that one of those outdoor screens would work well. The 135 inch is the perfect size to go over my wooden shutters/window.
@DarkStarSword
That Costume Mod looks very interesting....i tried and the remove part (index buffer and sub-mesh) is very easy. In blender do you install some kind of pluging you made??
another question? Is possible to transfer a characters (bone+textures) from one game to another with this?
@DarkStarSword
That Costume Mod looks very interesting....i tried and the remove part (index buffer and sub-mesh) is very easy. In blender do you install some kind of pluging you made??
another question? Is possible to transfer a characters (bone+textures) from one game to another with this?
[quote="DHR"]In blender do you install some kind of pluging you made??[/quote]Yeah - the plugin is in my 3d-fixes repo (and there was a link in the video description).'
The plugin is not intended to be specific to DOAXVV, but that's the game I've been using to develop and test it, and it may need work for other games (it definitely needs work to support games that use multiple vertex buffers, like Witcher 3). If you do give it a try in another game, let me know how it goes.
[quote]another question? Is possible to transfer a characters (bone+textures) from one game to another with this?[/quote]
Possibly, but the bones are a problem - if you transfer a mesh from one game to another you will have to adapt it to use the skeleton in the target game - and if the character proportions aren't very close that may not work very well, but I'm not a 3D artist and am still figuring out some of this as I go and there might ways to make it work even if the proportions are wrong.
At the moment adapting it like that would be difficult - when the pose is imported into Blender, we only actually get the final deformation matrices, so in edit mode all the bones are at the origin and in pose mode they are all over the place (there's one point in the video where I briefly unhide one of the pose objects to move a mesh and you can see the bones are floating outside of the mesh). I've got a few ideas to improve that (at the very least we should be able to use the vertex to place the bones in approximately the right location, and maybe there might be some way I can do better), but I need to do more experiments and try some things and just increase my understanding of how the bones actually work.
There's also kind of an interesting possibility that we might be able to use a shader in 3DMigoto to calculate our own deformation matrices on the fly... It's a bit of a crazy idea, and it would be difficult, but it opens up some interesting possibilities, like using our own physics simulation for adding free flowing cloth.
I dunno... it will probably never happen but I kind of want to do an MLP mod for DOAXVV as a real test of how far I can push this (I mean come on, who wouldn't want to see Twilight Sparkle and Pinkie Pie play Beach Volleyball, even if they do have to be the humanised versions from EG?)...
DHR said:In blender do you install some kind of pluging you made??
Yeah - the plugin is in my 3d-fixes repo (and there was a link in the video description).'
The plugin is not intended to be specific to DOAXVV, but that's the game I've been using to develop and test it, and it may need work for other games (it definitely needs work to support games that use multiple vertex buffers, like Witcher 3). If you do give it a try in another game, let me know how it goes.
another question? Is possible to transfer a characters (bone+textures) from one game to another with this?
Possibly, but the bones are a problem - if you transfer a mesh from one game to another you will have to adapt it to use the skeleton in the target game - and if the character proportions aren't very close that may not work very well, but I'm not a 3D artist and am still figuring out some of this as I go and there might ways to make it work even if the proportions are wrong.
At the moment adapting it like that would be difficult - when the pose is imported into Blender, we only actually get the final deformation matrices, so in edit mode all the bones are at the origin and in pose mode they are all over the place (there's one point in the video where I briefly unhide one of the pose objects to move a mesh and you can see the bones are floating outside of the mesh). I've got a few ideas to improve that (at the very least we should be able to use the vertex to place the bones in approximately the right location, and maybe there might be some way I can do better), but I need to do more experiments and try some things and just increase my understanding of how the bones actually work.
There's also kind of an interesting possibility that we might be able to use a shader in 3DMigoto to calculate our own deformation matrices on the fly... It's a bit of a crazy idea, and it would be difficult, but it opens up some interesting possibilities, like using our own physics simulation for adding free flowing cloth.
I dunno... it will probably never happen but I kind of want to do an MLP mod for DOAXVV as a real test of how far I can push this (I mean come on, who wouldn't want to see Twilight Sparkle and Pinkie Pie play Beach Volleyball, even if they do have to be the humanised versions from EG?)...
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Thanks DSS...now i found the add-on....i was looking in the DOAXVV folder.
Maybe see Twilight Sparkle and Pinkie Pie in Tekken7 or Street Fighter :)
I will try (when i have more free time) with blender...i'm not an expert with blender, but i will give it shot...this open a new use to 3Dmigoto that is very interesting.
Thanks DSS...now i found the add-on....i was looking in the DOAXVV folder.
Maybe see Twilight Sparkle and Pinkie Pie in Tekken7 or Street Fighter :)
I will try (when i have more free time) with blender...i'm not an expert with blender, but i will give it shot...this open a new use to 3Dmigoto that is very interesting.
[quote="DarkStarSword"][center][size="XL"][color="orange"]Custom Help Text Shader[/color][/size]
[url]https://github.com/DarkStarSword/3d-fixes/tree/master/custom_shader_help_text[/url][/center][/quote]
This is updated - it now also supports a notification mechanism you can use to display short messages that disappear after a few seconds (I'll probably split that out into a separate shader after a while, but for now it's part of this one), e.g. I'm using this in DOAXVV to display a notice when the hotkeys are pressed to enable/disable costume mods and change the shadow mode.
To trigger this on a toggle keybinding with one message when the key is activated (first press) and a different message when it is deactivated (second press):
[code]
[KeyToggleMods]
Key = no_modifiers F2
z = 0
type = toggle
run = CommandListToggleMods
[CommandListToggleMods]
pre Resource\ShaderFixes\help.ini\Notification = ref ResourceCostumeModsDisabled
pre run = CustomShader\ShaderFixes\help.ini\FormatText
pre z5 = time + 2.0
post Resource\ShaderFixes\help.ini\Notification = ref ResourceCostumeModsEnabled
post run = CustomShader\ShaderFixes\help.ini\FormatText
post z5 = time + 2.0
[ResourceCostumeModsDisabled]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Costume Mods Disabled"
data = 67 111 115 116 117 109 101 32 77 111 100 115 32 68 105 115 97 98 108 101 100
[ResourceCostumeModsEnabled]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Costume Mods Enabled"
data = 67 111 115 116 117 109 101 32 77 111 100 115 32 69 110 97 98 108 101 100
[/code]
The key binding triggers a command list, of which the pre commands are run when the key is first activated, and the post commands are run when it is deactivated. Both of these cases assign a custom resource containing the message, run the text formatting compute shader and set z5 to the time that the message is to be hidden, which will be "time + <timeout>"
In this example I have two custom resources that hold the messages to be displayed. In this case I'm defining them right in the ini file with data= and the decimal values of each ASCII character in the message, but you can also use filename= to load them from a text file, as is done for the main help text. If you have Python installed you can easily generate these data= lines with:
[code]
print(' '.join(map(str,map(ord, "Your message here"))))
[/code]
I do intend to add the ability to write just data="message" at a later date to simplify this.
To use this for type=cycle key bindings with different messages on each cycle, you can use this:
[code]
[KeyShadows]
Key = shift F2
w = 0, 2, 1
type = cycle
run = CommandListShadowsOrig, CommandListShadowsOff, CommandListShadowsOn
[CommandListShadowsOrig]
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOrig
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
[CommandListShadowsOff]
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOff
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
[CommandListShadowsOn]
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOn
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
[ResourceShadowsOrig]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Shadows: Original"
data = 83 104 97 100 111 119 115 58 32 79 114 105 103 105 110 97 108
[ResourceShadowsOff]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Shadows: Off"
data = 83 104 97 100 111 119 115 58 32 79 102 102
[ResourceShadowsOn]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Shadows: On"
data = 83 104 97 100 111 119 115 58 32 79 110
[/code]
In this case, separate command lists are run for each stage of the cycle that assign a custom resource containing the text to be displayed, run the formatting shader and set a timeout.
Alternatively, if you only specify a single command list it will be run for each stage of the cycle and you could check the current value of w - but be aware that the command list is run *before* w is updated in this case, so you have to check the previous value:
[code]
[KeyShadows]
Key = shift F2
w = 0, 2, 1
type = cycle
run = CommandListShadows
[CommandListShadows]
; w hasn't been updated yet, so match the previous value, not the next value
if w == 1
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOrig
else
if w == 0
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOff
else
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOn
endif
endif
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
[/code]
Or, you could forgo the cycle type altogether and use the command list to update w:
[code]
[KeyShadows]
Key = shift F2
run = CommandListShadows
[CommandListShadows]
if w == 1
w = 0
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOrig
else
if w == 0
w = 2
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOff
else
w = 1
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOn
endif
endif
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
[/code]
This is updated - it now also supports a notification mechanism you can use to display short messages that disappear after a few seconds (I'll probably split that out into a separate shader after a while, but for now it's part of this one), e.g. I'm using this in DOAXVV to display a notice when the hotkeys are pressed to enable/disable costume mods and change the shadow mode.
To trigger this on a toggle keybinding with one message when the key is activated (first press) and a different message when it is deactivated (second press):
[KeyToggleMods]
Key = no_modifiers F2
z = 0
type = toggle
run = CommandListToggleMods
[CommandListToggleMods]
pre Resource\ShaderFixes\help.ini\Notification = ref ResourceCostumeModsDisabled
pre run = CustomShader\ShaderFixes\help.ini\FormatText
pre z5 = time + 2.0
post Resource\ShaderFixes\help.ini\Notification = ref ResourceCostumeModsEnabled
post run = CustomShader\ShaderFixes\help.ini\FormatText
post z5 = time + 2.0
The key binding triggers a command list, of which the pre commands are run when the key is first activated, and the post commands are run when it is deactivated. Both of these cases assign a custom resource containing the message, run the text formatting compute shader and set z5 to the time that the message is to be hidden, which will be "time + <timeout>"
In this example I have two custom resources that hold the messages to be displayed. In this case I'm defining them right in the ini file with data= and the decimal values of each ASCII character in the message, but you can also use filename= to load them from a text file, as is done for the main help text. If you have Python installed you can easily generate these data= lines with:
[ResourceShadowsOff]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Shadows: Off"
data = 83 104 97 100 111 119 115 58 32 79 102 102
[ResourceShadowsOn]
type = Buffer
format = R8_UINT
bind_flags = shader_resource
; "Shadows: On"
data = 83 104 97 100 111 119 115 58 32 79 110
In this case, separate command lists are run for each stage of the cycle that assign a custom resource containing the text to be displayed, run the formatting shader and set a timeout.
Alternatively, if you only specify a single command list it will be run for each stage of the cycle and you could check the current value of w - but be aware that the command list is run *before* w is updated in this case, so you have to check the previous value:
[KeyShadows]
Key = shift F2
w = 0, 2, 1
type = cycle
run = CommandListShadows
[CommandListShadows]
; w hasn't been updated yet, so match the previous value, not the next value
if w == 1
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOrig
else
if w == 0
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOff
else
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOn
endif
endif
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
Or, you could forgo the cycle type altogether and use the command list to update w:
[KeyShadows]
Key = shift F2
run = CommandListShadows
[CommandListShadows]
if w == 1
w = 0
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOrig
else
if w == 0
w = 2
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOff
else
w = 1
Resource\ShaderFixes\help.ini\Notification = ref ResourceShadowsOn
endif
endif
run = CustomShader\ShaderFixes\help.ini\FormatText
z5 = time + 2.0
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Conditional Logic/Expression Parser and Built in Performance Monitor are features i will definitly use...
also now i can monitor the Regex, always better to look numbers than "feeling"
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com
Actually, this comment reminded me of one of the things that had me wanting the expression parser in the first place. Can it be used in regex patterns to help calculate the register # for a cbuffer based on the offset? Or since regex is mainly just matching strings, is that impossible to do?
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
Like my fixes? Dontations can be made to: www.paypal.me/DShanz or rshannonca@gmail.com
Like electronic music? Check out: www.soundcloud.com/dj-ryan-king
That actually comes into why ShaderRegex has room for expanding it to use multiple patterns per regex group in the future - the idea is to be able to match a constant buffer definition with one pattern to get the offset, perform some simple arithmetic on it to work out the register number, then use a second pattern to match the code and do the replacement. This will probably still be a couple of versions away, but it is planned.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
https://github.com/DarkStarSword/3d-fixes/tree/master/custom_shader_help_text
Displays the contents of help_short.txt in the bottom left corner for ten seconds after launch:
Pressing F1 will bring up the contents of the help.txt file:
Supports:
- Displays ASCII text read from a file
- No length restrictions
- Text formatting performed entirely on the GPU with a combination of compute, geometry and pixel shaders
- Automatic text wrapping within some bounds
- Left/middle/right top/center/bottom anchoring (short text is anchored to the lower left of the screen by default, long text is anchored to the top middle)
- Left/center/right text alignment (note the "Press F1 for help" was centered above)
- Automatic text reflowing on resolution change
- Customisable text colour
- Customisable background colour and opacity
- Customisable padding around text
- Text parameters can be customised per text box
- Could be customised for other text needs
To keep IniParam usage to a minimum (x5 and y5 are used for the window size to properly size the font and detect resolution changes), most of the parameters this shader uses are passed in via a custom parameter resource - I do want to make this a little easier to write in 3DMigoto in the future, but for now it looks like this:
If you're wondering what the "bind_flags" are all about - that's a quirk of how I've set up this shader to switch between the two text resources - they aren't directly bound to the shader, but rather copied by reference to another custom resource, and that resource is bound to the shader (and tested for null in the present call). That situation means 3DMigoto cannot automatically determine the correct bind flags, so they have to be manually specified. If you directly bound them to the shader you wouldn't need that.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
I'm interested in this, for my (work in progress) Okami fix. I'm trying to do the most complete cel shading removal mod I can, and there is an index buffer that I want to remove and not the complete VS/PS. I'll check the video tomorrow to see if it can be toggled with a hotkey like other parts of the effect.
CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com
Awesome work, 3Dmigoto as a mod tool is going to open up a lot of games to modder improvements, that were previously pretty much untouchable because they did not include mod tools from the developer :)
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
That Costume Mod looks very interesting....i tried and the remove part (index buffer and sub-mesh) is very easy. In blender do you install some kind of pluging you made??
another question? Is possible to transfer a characters (bone+textures) from one game to another with this?
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
The plugin is not intended to be specific to DOAXVV, but that's the game I've been using to develop and test it, and it may need work for other games (it definitely needs work to support games that use multiple vertex buffers, like Witcher 3). If you do give it a try in another game, let me know how it goes.
Possibly, but the bones are a problem - if you transfer a mesh from one game to another you will have to adapt it to use the skeleton in the target game - and if the character proportions aren't very close that may not work very well, but I'm not a 3D artist and am still figuring out some of this as I go and there might ways to make it work even if the proportions are wrong.
At the moment adapting it like that would be difficult - when the pose is imported into Blender, we only actually get the final deformation matrices, so in edit mode all the bones are at the origin and in pose mode they are all over the place (there's one point in the video where I briefly unhide one of the pose objects to move a mesh and you can see the bones are floating outside of the mesh). I've got a few ideas to improve that (at the very least we should be able to use the vertex to place the bones in approximately the right location, and maybe there might be some way I can do better), but I need to do more experiments and try some things and just increase my understanding of how the bones actually work.
There's also kind of an interesting possibility that we might be able to use a shader in 3DMigoto to calculate our own deformation matrices on the fly... It's a bit of a crazy idea, and it would be difficult, but it opens up some interesting possibilities, like using our own physics simulation for adding free flowing cloth.
I dunno... it will probably never happen but I kind of want to do an MLP mod for DOAXVV as a real test of how far I can push this (I mean come on, who wouldn't want to see Twilight Sparkle and Pinkie Pie play Beach Volleyball, even if they do have to be the humanised versions from EG?)...
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
Maybe see Twilight Sparkle and Pinkie Pie in Tekken7 or Street Fighter :)
I will try (when i have more free time) with blender...i'm not an expert with blender, but i will give it shot...this open a new use to 3Dmigoto that is very interesting.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
This is updated - it now also supports a notification mechanism you can use to display short messages that disappear after a few seconds (I'll probably split that out into a separate shader after a while, but for now it's part of this one), e.g. I'm using this in DOAXVV to display a notice when the hotkeys are pressed to enable/disable costume mods and change the shadow mode.
To trigger this on a toggle keybinding with one message when the key is activated (first press) and a different message when it is deactivated (second press):
The key binding triggers a command list, of which the pre commands are run when the key is first activated, and the post commands are run when it is deactivated. Both of these cases assign a custom resource containing the message, run the text formatting compute shader and set z5 to the time that the message is to be hidden, which will be "time + <timeout>"
In this example I have two custom resources that hold the messages to be displayed. In this case I'm defining them right in the ini file with data= and the decimal values of each ASCII character in the message, but you can also use filename= to load them from a text file, as is done for the main help text. If you have Python installed you can easily generate these data= lines with:
I do intend to add the ability to write just data="message" at a later date to simplify this.
To use this for type=cycle key bindings with different messages on each cycle, you can use this:
In this case, separate command lists are run for each stage of the cycle that assign a custom resource containing the text to be displayed, run the formatting shader and set a timeout.
Alternatively, if you only specify a single command list it will be run for each stage of the cycle and you could check the current value of w - but be aware that the command list is run *before* w is updated in this case, so you have to check the previous value:
Or, you could forgo the cycle type altogether and use the command list to update w:
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
Gigabyte RTX2080TI Gaming OC, I7-6700k ~ 4.4Ghz, 3x BenQ XL2420T, BenQ TK800, LG 55EG960V (3D OLED), Samsung 850 EVO SSD, Crucial M4 SSD, 3D vision kit, Xpand x104 glasses, Corsair HX1000i, Win 10 pro 64/Win 7 64https://www.3dmark.com/fs/9529310