I have two more problems I need assistance with. In the d3d11 log, I'm getting the fault "error X3018: invalid subscript 'xyzw'", but this time, the line reads:
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
r0 = LightMaskTexture.Load(r0); //override passes, but lights are missing
r0 = LightMaskTexture.Load(r0.xyz).xyzw; //override fails
r0.xyz = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
r0.xyz = LightMaskTexture.Load(r0.xyz).xyz; //override fails
r0.xyzw = LightMaskTexture.Load(r0.xyzw); //override passes, but lights are missing
r0.xyzw = LightMaskTexture.Load(r0); //override passes, but lights are missing
Here's the full shader:
// ---- Created with 3Dmigoto v1.2.29 on Mon Feb 15 14:43:57 2016
You may try to change the lines:
[code]
Texture2D<uint> LightMaskTexture : register(t0);
...
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;[/code]
to
[code]
Texture2D<uint4> LightMaskTexture : register(t0);
...
r0.xyzw = LightMaskTexture.Load(r0.xy).xyzw;[/code]
and for God's sake wrap that code into the [code] block please.
[quote="Oomek"]
....
and for God's sake wrap that code into the [code] block please.[/quote]
Heh, funny;)
Just pay attention to where the code ends;) Is incomplete;)
That's why it appears like that;)
Each post has a MAX number of characters! When you make the post everything looks fine! But if you hit refresh you get something like the post above;) Where the shader text is incomplete since is too long and hence the code block doesn't work:(
Had this issue here on numerous occasions...Had to use pastebin:(
Oomek said:
....
and for God's sake wrap that code into the [code]block please.
Heh, funny;)
Just pay attention to where the code ends;) Is incomplete;)
That's why it appears like that;)
Each post has a MAX number of characters! When you make the post everything looks fine! But if you hit refresh you get something like the post above;) Where the shader text is incomplete since is too long and hence the code block doesn't work:(
Had this issue here on numerous occasions...Had to use pastebin:(
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
Oomek said:I see it now. Does splitting the code into several blocks help anything?
Across multiple posts... Yes, should work;)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
[center][size="L"][color="orange"]3DMigoto and cmd_Decompiler 1.2.30 are out:[/color]
[url]https://github.com/bo3b/3Dmigoto/releases/tag/1.2.30[/url][/size][/center]
- Fixes a regression introduced in 1.2.28 which crashes when using stereo2mono
- Fixes a rare crash related to the resource tracking in multi-threaded games
- StereoParams and IniParams are now bound at the draw calls for compatibility with some games (e.g. Akiba's Trip)
- Support for preload_shaders has been dropped
[color="orange"][size="M"][b]cmd_Decompiler[/b][/size][/color]
This is the first release of the command line decompiler. This is distributed in a separate zip file from 3DMigoto itself. This tool is intended for use with scripts that extract shaders externally from 3DMigoto (e.g. my Unity scripts), but can be used as a general purpose decompiler / disassembler / assembler (for a compiler use fxc).
This can decompile binary shaders from the command line using 3DMigoto's decompiler (-D). It can also assemble (-a) shaders into binary using Flugan's assembler, and can disassemble (-d) binary shaders into assembly with Flugan's precision fix. It supports POSIX style command line parsing, so run with --help to see the full range of options it supports.
Note that assembling shaders with this tool does not work quite the same as 3DMigoto (3DMigoto will eventually move to this model after this has undergone some more testing). The assembler in 3DMigoto cannot change the input and output signatures of the shader and instead re-uses the signatures from the original shaders (preventing adding new inputs/outputs). cmd_Decompiler generates new input + output signatures from the corresponding comment blocks in the shader assembly, and therefore does not require an original binary to assemble, and can add new inputs & outputs.
It currently does not parse the resource sections, which means that shaders assembled with this tool will be missing type information (we often refer to this as missing headers) if they are later decompiled.
[color="orange"][size="M"][b]OM Blend State Overrides[/b][/size][/color]
This version adds the ability to override the OM blend state. Currently this is restricted to use in CustomShader sections due to it's complexity, but the astute will recognise that if it was needed for an existing shader it is trivial to work around - since a CustomShader that does not specify any shaders will use those already bound to the pipeline, and since is able to use 'Draw = from_caller' it can effectively replace the original draw call if the original draw call is modified to produce no output (e.g. by conditionally disabling the output of the original shader, or unbinding and rebinding the render targets around the original draw call).
The following options are available:
[code]
blend
alpha
mask
blend[0] blend[1] blend[2] blend[3] blend[4] blend[5] blend[6] blend[7]
alpha[0] alpha[1] alpha[2] alpha[3] alpha[4] alpha[5] alpha[6] alpha[7]
mask[0] mask[1] mask[2] mask[3] mask[4] mask[5] mask[6] mask[7]
alpha_to_coverage
sample_mask
blend_factor[0] blend_factor[1] blend_factor[2] blend_factor[3]
[/code]
... simple, right? ... No, Not really?
The simplest option is disabling blending altogether, and for that all you need to do is:
[code]
blend = disable
[/code]
Which is equivelent to using only the pixel shader output and discarding the original value from the render target:
[code]
blend = ADD ONE ZERO
alpha = ADD ONE ZERO
[/code]
These are also the default values. If even one blend option is specified the entire blend state will be overridden - there is no support for merging it with the current blend state at present.
To do something more complicated like enabling alpha blending you might do something like this:
[code]
blend = ADD ONE SRC_ALPHA
[/code]
The arguments to blend= (and alpha=) are <OPERATION> <SOURCE_FACTOR> <DESTINATION_FACTOR>
Source is the output from the pixel shader
Destination is whatever was already on the render target
Operation is one of ADD, SUBTRACT, REV_SUBTRACT, MIN, MAX, which corresponds to the options documented here:
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/ff476088(v=vs.85).aspx[/url]
SOURCE_FACTOR and DESTINATION_FACTOR are from these possibilities:
ZERO, ONE, SRC_COLOR, INV_SRC_COLOR, SRC_ALPHA, INV_SRC_ALPHA, DEST_ALPHA, INV_DEST_ALPHA, DEST_COLOR, INV_DEST_COLOR, SRC_ALPHA_SAT, BLEND_FACTOR, INV_BLEND_FACTOR, SRC1_COLOR, INV_SRC1_COLOR, SRC1_ALPHA, INV_SRC1_ALPHA
Which correspond to the options documented here:
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/ff476086(v=vs.85).aspx[/url]
blend, alpha and mask set the option for all simultaneous render targets. To set different blend options on different render targets, use the variants with [] after the option.
alpha_to_coverage (0/1), sample_mask (hexadecimal) and blend_factor (float) are common to all render targets (the four blend_factors are for RGBA, not render targets).
Further reading on blend states and the supported options:
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/bb205120(v=vs.85).aspx#Blending[/url]
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/bb205072(v=vs.85).aspx[/url]
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/ff476462(v=vs.85).aspx[/url]
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/ff476087(v=vs.85).aspx[/url]
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/ff476200(v=vs.85).aspx[/url]
The related support for overriding the depth/stencil state is not yet implemented (and is low on my priority list until someone asks for it).
- Fixes a regression introduced in 1.2.28 which crashes when using stereo2mono
- Fixes a rare crash related to the resource tracking in multi-threaded games
- StereoParams and IniParams are now bound at the draw calls for compatibility with some games (e.g. Akiba's Trip)
- Support for preload_shaders has been dropped
cmd_Decompiler
This is the first release of the command line decompiler. This is distributed in a separate zip file from 3DMigoto itself. This tool is intended for use with scripts that extract shaders externally from 3DMigoto (e.g. my Unity scripts), but can be used as a general purpose decompiler / disassembler / assembler (for a compiler use fxc).
This can decompile binary shaders from the command line using 3DMigoto's decompiler (-D). It can also assemble (-a) shaders into binary using Flugan's assembler, and can disassemble (-d) binary shaders into assembly with Flugan's precision fix. It supports POSIX style command line parsing, so run with --help to see the full range of options it supports.
Note that assembling shaders with this tool does not work quite the same as 3DMigoto (3DMigoto will eventually move to this model after this has undergone some more testing). The assembler in 3DMigoto cannot change the input and output signatures of the shader and instead re-uses the signatures from the original shaders (preventing adding new inputs/outputs). cmd_Decompiler generates new input + output signatures from the corresponding comment blocks in the shader assembly, and therefore does not require an original binary to assemble, and can add new inputs & outputs.
It currently does not parse the resource sections, which means that shaders assembled with this tool will be missing type information (we often refer to this as missing headers) if they are later decompiled.
OM Blend State Overrides
This version adds the ability to override the OM blend state. Currently this is restricted to use in CustomShader sections due to it's complexity, but the astute will recognise that if it was needed for an existing shader it is trivial to work around - since a CustomShader that does not specify any shaders will use those already bound to the pipeline, and since is able to use 'Draw = from_caller' it can effectively replace the original draw call if the original draw call is modified to produce no output (e.g. by conditionally disabling the output of the original shader, or unbinding and rebinding the render targets around the original draw call).
The simplest option is disabling blending altogether, and for that all you need to do is:
blend = disable
Which is equivelent to using only the pixel shader output and discarding the original value from the render target:
blend = ADD ONE ZERO
alpha = ADD ONE ZERO
These are also the default values. If even one blend option is specified the entire blend state will be overridden - there is no support for merging it with the current blend state at present.
To do something more complicated like enabling alpha blending you might do something like this:
blend = ADD ONE SRC_ALPHA
The arguments to blend= (and alpha=) are <OPERATION> <SOURCE_FACTOR> <DESTINATION_FACTOR>
Source is the output from the pixel shader
Destination is whatever was already on the render target
blend, alpha and mask set the option for all simultaneous render targets. To set different blend options on different render targets, use the variants with [] after the option.
alpha_to_coverage (0/1), sample_mask (hexadecimal) and blend_factor (float) are common to all render targets (the four blend_factors are for RGBA, not render targets).
Further reading on blend states and the supported options:
[quote="4everAwake"]I have two more problems I need assistance with. In the d3d11 log, I'm getting the fault "error X3018: invalid subscript 'xyzw'", but this time, the line reads:
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
[/quote]That should have worked, so there might be a second problem somewhere. Did Oomek's suggestion help?
[quote]Also, for another shader, I'm getting the error "wrapper1349(142,27-30): error X3004: undeclared identifier 'int7'".
There are multiple lines with int7, but here's one line:
r0.x = (int)r0.x & (int7)LightProperties.LightID;[/quote]
Try removing the (int7) - that is a bug in the decompiler that counted 7 letters in "LightID" as a swizzle and is now the second time we have seen this. In this case LightID already has a type so it should be safe to drop the cast.
4everAwake said:I have two more problems I need assistance with. In the d3d11 log, I'm getting the fault "error X3018: invalid subscript 'xyzw'", but this time, the line reads:
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
That should have worked, so there might be a second problem somewhere. Did Oomek's suggestion help?
Also, for another shader, I'm getting the error "wrapper1349(142,27-30): error X3004: undeclared identifier 'int7'".
There are multiple lines with int7, but here's one line:
r0.x = (int)r0.x & (int7)LightProperties.LightID;
Try removing the (int7) - that is a bug in the decompiler that counted 7 letters in "LightID" as a swizzle and is now the second time we have seen this. In this case LightID already has a type so it should be safe to drop the cast.
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"][quote="4everAwake"]I have two more problems I need assistance with. In the d3d11 log, I'm getting the fault "error X3018: invalid subscript 'xyzw'", but this time, the line reads:
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
[/quote]That should have worked, so there might be a second problem somewhere. Did Oomek's suggestion help?[/quote]
Override is failing with the same error (invalid subscript). I think this issue may be similar to the error that was present in Star Wars Battlefront, where some shaders were being decompiled incorrectly. In the below example, no faults were logged, but the shadows were missing:
[url]https://forums.geforce.com/default/topic/883659/3d-vision/star-wars-battlefront-2015-3d-vision-thread/post/4691539/#4691539[/url]
[quote]
[quote]Also, for another shader, I'm getting the error "wrapper1349(142,27-30): error X3004: undeclared identifier 'int7'".
There are multiple lines with int7, but here's one line:
r0.x = (int)r0.x & (int7)LightProperties.LightID;[/quote]
Try removing the (int7) - that is a bug in the decompiler that counted 7 letters in "LightID" as a swizzle and is now the second time we have seen this. In this case LightID already has a type so it should be safe to drop the cast.
[/quote]
Yup, it works. Thank you!
4everAwake said:I have two more problems I need assistance with. In the d3d11 log, I'm getting the fault "error X3018: invalid subscript 'xyzw'", but this time, the line reads:
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
That should have worked, so there might be a second problem somewhere. Did Oomek's suggestion help?
Override is failing with the same error (invalid subscript). I think this issue may be similar to the error that was present in Star Wars Battlefront, where some shaders were being decompiled incorrectly. In the below example, no faults were logged, but the shadows were missing:
Also, for another shader, I'm getting the error "wrapper1349(142,27-30): error X3004: undeclared identifier 'int7'".
There are multiple lines with int7, but here's one line:
r0.x = (int)r0.x & (int7)LightProperties.LightID;
Try removing the (int7) - that is a bug in the decompiler that counted 7 letters in "LightID" as a swizzle and is now the second time we have seen this. In this case LightID already has a type so it should be safe to drop the cast.
[center][size="L"][color="orange"]3DMigoto 1.2.31 is out:[/color]
[url]https://github.com/bo3b/3Dmigoto/releases/tag/1.2.31[/url][/size][/center]
- Fixes a regression introduced in 1.2.30 which could cause StereoParams and IniParams not to be bound to domain, geometry and hull shaders in some circumstances (hunting = 0 or 2 with no [ShaderOverride] sections)
- Makes the present call command list a little more consistent with other command lists. The pre command list is run slightly earlier so that the current frame count will be correct (for max_copies_per_frame), and adds a post command list run at the start of the next frame (after StereoParams has been updated).
- Makes the overlay render after custom shaders run from the present call.
- Copying to a render target will now always default to copy by reference.
- Adds a "bb" Back Buffer target to arbitrary resource copying.
Most of these changes are intended to make things easier and more consistent when running a custom shader on the present call - the back buffer access in particular is useful for games like MGSV which don't have the back buffer assigned as a render target during the present call (I used a similar technique to example 1 in that game to debug the AO, but had to tie the custom shader to a shader late in the frame instead of the present call).
[size="M"][color="orange"]Example 1: Output the result of a shader directly to the screen in real time:[/color][/size]
[img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-19%20-%20173036.0.jps[/img]
[code]
[ResourceDebug]
[ShaderOverrideTileLightingPS]
Hash=05845fdfcf6059bb
post ResourceDebug = o1
[ResourceBackupo0]
[CustomShaderDebug]
vs = ShaderFixes\full_screen.hlsl
ps = ShaderFixes\output-t100.hlsl
blend = disable
ResourceBackupo0 = ref o0
o0 = bb
ps-t100 = ResourceDebug
Draw = 6, 0
post ps-t100 = null
post o0 = ResourceBackupo0
[Present]
run = CustomShaderDebug
[/code]
ShaderFixes\full_screen.hlsl:
[code]
void main(
out float4 pos : SV_Position0,
uint vertex : SV_VertexID)
{
// Not using vertex buffers so manufacture our own coordinates.
// You may have to adjust this depending on whether the game is using
// clockwise or counterclockwise for front-facing surfaces:
switch(vertex) {
case 0:
pos.xy = float2(1, -1);
break;
case 1:
pos.xy = float2(-1, -1);
break;
case 2:
pos.xy = float2(-1, 1);
break;
case 3:
pos.xy = float2(-1, 1);
break;
case 4:
pos.xy = float2(1, -1);
break;
case 5:
pos.xy = float2(1, 1);
break;
default:
pos.xy = 0;
break;
};
pos.zw = float2(0, 1);
}
[/code]
ShaderFixes\output-t100.hlsl:
[code]
Texture2D<float4> t100 : register(t100);
void main(float4 pos : SV_Position0, out float4 result : SV_Target0)
{
result = t100.Load(int3(pos.xy, 0));
}
[/code]
Depending on the effect you may need to scale the result to see it clearly, and if the render target you are examining is a different size to the resolution you may need to scale pos.
[size="M"][color="orange"]Example 2: Convert a game/application from side-by-side to 3D Vision
(e.g. Unity -vrmode split, UE4 -emulatestereo):[/color][/size]
[code]
[Present]
run = CustomShaderSBS2Stereo
[ResourceBackupo0]
[CustomShaderSBS2Stereo]
vs = ShaderFixes\full_screen.hlsl
ps = ShaderFixes\sbs2stereo.hlsl
blend = disable
ResourceBackupo0 = ref o0
ps-t100 = bb
o0 = bb
draw = 6, 0
post ps-t100 = null
post o0 = ResourceBackupo0
[/code]
ShaderFixes\full_screen.hlsl (not quite the same as example 1 - this has an additional texcoord output):
[code]
void main(
out float4 pos : SV_Position0,
out float2 texcoord : TEXCOORD0,
uint vertex : SV_VertexID)
{
// Not using vertex buffers so manufacture our own coordinates.
// You may have to adjust this depending on whether the game is using
// clockwise or counterclockwise for front-facing surfaces:
switch(vertex) {
case 0:
pos.xy = float2(-1, -1);
break;
case 1:
pos.xy = float2(1, -1);
break;
case 2:
pos.xy = float2(-1, 1);
break;
case 3:
pos.xy = float2(-1, 1);
break;
case 4:
pos.xy = float2(1, -1);
break;
case 5:
pos.xy = float2(1, 1);
break;
default:
pos.xy = 0;
break;
};
pos.zw = float2(0, 1);
texcoord = pos.xy * float2(1, -1);
}
[/code]
ShaderFixes\sbs2stereo.hlsl:
[code]
Texture2D<float4> StereoParams : register(t125);
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> t100 : register(t100);
void main(float4 pos : SV_Position0, float4 texcoord: TEXCOORD0, out float4 result : SV_Target0)
{
float4 stereo = StereoParams.Load(0);
float4 params = IniParams.Load(0);
float width, height;
float x = texcoord.x;
float y = texcoord.y;
// Optionally zoom in to somewhat counter VR distortion
if (params.x) {
x = x * 0.65;
y = y * 0.445;
}
// Convert side-by-side to stereo:
x = x / 2 - 0.5 * stereo.z;
// Convert to texture coordinates:
t100.GetDimensions(width, height);
x = (x / 2 + 0.5) * width;
y = (y / 2 + 0.5) * height;
result = t100.Load(float3(x, y, 0));
result.w = 1;
}
[/code]
Note that you may need to prevent 3D Vision from adjusting the position of any shader if you get a doubled image (e.g. set StereoTextureEnable = 0 in the profile, or reduce separation. Exception: In the whirligig VR video player with '-vrmode split' the separation is harmless and allows the video to be pushed back to infinity).
This example is available for Whirligig here:
[url]https://forums.geforce.com/default/topic/908302/3d-vision/how-to-play-vr-images-and-videos-in-3dvision-using-the-whirligig-vr-player/post/4810984/#4810984[/url]
Going the other way (3D Vision -> SBS) should be possible by using something similar to this combined with the stereo2mono copy mode, though that does not solve the output problem (3D Vision must still be enabled).
- Fixes a regression introduced in 1.2.30 which could cause StereoParams and IniParams not to be bound to domain, geometry and hull shaders in some circumstances (hunting = 0 or 2 with no [ShaderOverride] sections)
- Makes the present call command list a little more consistent with other command lists. The pre command list is run slightly earlier so that the current frame count will be correct (for max_copies_per_frame), and adds a post command list run at the start of the next frame (after StereoParams has been updated).
- Makes the overlay render after custom shaders run from the present call.
- Copying to a render target will now always default to copy by reference.
- Adds a "bb" Back Buffer target to arbitrary resource copying.
Most of these changes are intended to make things easier and more consistent when running a custom shader on the present call - the back buffer access in particular is useful for games like MGSV which don't have the back buffer assigned as a render target during the present call (I used a similar technique to example 1 in that game to debug the AO, but had to tie the custom shader to a shader late in the frame instead of the present call).
Example 1: Output the result of a shader directly to the screen in real time:
[ResourceDebug]
[ShaderOverrideTileLightingPS]
Hash=05845fdfcf6059bb
post ResourceDebug = o1
void main(
out float4 pos : SV_Position0,
uint vertex : SV_VertexID)
{
// Not using vertex buffers so manufacture our own coordinates.
// You may have to adjust this depending on whether the game is using
// clockwise or counterclockwise for front-facing surfaces:
switch(vertex) {
case 0:
pos.xy = float2(1, -1);
break;
case 1:
pos.xy = float2(-1, -1);
break;
case 2:
pos.xy = float2(-1, 1);
break;
case 3:
pos.xy = float2(-1, 1);
break;
case 4:
pos.xy = float2(1, -1);
break;
case 5:
pos.xy = float2(1, 1);
break;
default:
pos.xy = 0;
break;
};
pos.zw = float2(0, 1);
}
ShaderFixes\output-t100.hlsl:
Texture2D<float4> t100 : register(t100);
void main(float4 pos : SV_Position0, out float4 result : SV_Target0)
{
result = t100.Load(int3(pos.xy, 0));
}
Depending on the effect you may need to scale the result to see it clearly, and if the render target you are examining is a different size to the resolution you may need to scale pos.
Example 2: Convert a game/application from side-by-side to 3D Vision
(e.g. Unity -vrmode split, UE4 -emulatestereo):
ShaderFixes\full_screen.hlsl (not quite the same as example 1 - this has an additional texcoord output):
void main(
out float4 pos : SV_Position0,
out float2 texcoord : TEXCOORD0,
uint vertex : SV_VertexID)
{
// Not using vertex buffers so manufacture our own coordinates.
// You may have to adjust this depending on whether the game is using
// clockwise or counterclockwise for front-facing surfaces:
switch(vertex) {
case 0:
pos.xy = float2(-1, -1);
break;
case 1:
pos.xy = float2(1, -1);
break;
case 2:
pos.xy = float2(-1, 1);
break;
case 3:
pos.xy = float2(-1, 1);
break;
case 4:
pos.xy = float2(1, -1);
break;
case 5:
pos.xy = float2(1, 1);
break;
default:
pos.xy = 0;
break;
};
pos.zw = float2(0, 1);
texcoord = pos.xy * float2(1, -1);
}
// Optionally zoom in to somewhat counter VR distortion
if (params.x) {
x = x * 0.65;
y = y * 0.445;
}
// Convert side-by-side to stereo:
x = x / 2 - 0.5 * stereo.z;
// Convert to texture coordinates:
t100.GetDimensions(width, height);
x = (x / 2 + 0.5) * width;
y = (y / 2 + 0.5) * height;
result = t100.Load(float3(x, y, 0));
result.w = 1;
}
Note that you may need to prevent 3D Vision from adjusting the position of any shader if you get a doubled image (e.g. set StereoTextureEnable = 0 in the profile, or reduce separation. Exception: In the whirligig VR video player with '-vrmode split' the separation is harmless and allows the video to be pushed back to infinity).
Going the other way (3D Vision -> SBS) should be possible by using something similar to this combined with the stereo2mono copy mode, though that does not solve the output problem (3D Vision must still be enabled).
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
Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?
Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.
Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?
Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.
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"]Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?[/quote] Right, this is one of the big remaining missing features. There's a feature request open for it here:
https://github.com/bo3b/3Dmigoto/issues/33
[quote]Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.[/quote]We've had that support since the very first arbitrary resource copying support was added - matrices are in constant buffers, so you copy them by copying the constant buffer they are in. If you need to invert a matrix you can do so with a bit of HLSL (check the matrix.hlsl file I include with most recent fixes).
DJ-RK said:Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?
Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.
We've had that support since the very first arbitrary resource copying support was added - matrices are in constant buffers, so you copy them by copying the constant buffer they are in. If you need to invert a matrix you can do so with a bit of HLSL (check the matrix.hlsl file I include with most recent fixes).
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"][quote="DJ-RK"]Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?[/quote] Right, this is one of the big remaining missing features. There's a feature request open for it here:
https://github.com/bo3b/3Dmigoto/issues/33
[quote]Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.[/quote]We've had that support since the very first arbitrary resource copying support was added - matrices are in constant buffers, so you copy them by copying the constant buffer they are in. If you need to invert a matrix you can do so with a bit of HLSL (check the matrix.hlsl file I include with most recent fixes).
[/quote]
How exactly do I copy a cbuffer from one shader to another? I know how to filter on a texture (for the depth UI) but never tried to copy a cbuffer from one shader to another before;)
DJ-RK said:Is there any functionality in 3DMigoto which allows it to set preset screen convergence/separation values that are triggered when certain shaders are being rendered? I tried using the convergence setting in the shader override setting, but the way I read the description I interpret that as the custom convergence applies to that shader only, not the entire screen. Is that correct?
Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.
We've had that support since the very first arbitrary resource copying support was added - matrices are in constant buffers, so you copy them by copying the constant buffer they are in. If you need to invert a matrix you can do so with a bit of HLSL (check the matrix.hlsl file I include with most recent fixes).
How exactly do I copy a cbuffer from one shader to another? I know how to filter on a texture (for the depth UI) but never tried to copy a cbuffer from one shader to another before;)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
[quote="helifax"]How exactly do I copy a cbuffer from one shader to another? I know how to filter on a texture (for the depth UI) but never tried to copy a cbuffer from one shader to another before;)[/quote][url]https://github.com/bo3b/3Dmigoto/wiki/Resource-Copying[/url]
BTW can you all edit that wiki? @Helifax if memory serves we gave you commit access to 3DMigoto some time back so you should be able to (or was that someone else I'm thinking of?), but I'm not sure if it allows people without commit access like @Oomek to edit it directly. If you can't edit it I suppose you can clone it locally, edit it there then send us a pull request, or you can ask bo3b for commit access.
Some of the pages are fairly out of date by now and many of the recent features are not documented on it at all, and it would be good if people could try to update it a little.
helifax said:How exactly do I copy a cbuffer from one shader to another? I know how to filter on a texture (for the depth UI) but never tried to copy a cbuffer from one shader to another before;)
BTW can you all edit that wiki? @Helifax if memory serves we gave you commit access to 3DMigoto some time back so you should be able to (or was that someone else I'm thinking of?), but I'm not sure if it allows people without commit access like @Oomek to edit it directly. If you can't edit it I suppose you can clone it locally, edit it there then send us a pull request, or you can ask bo3b for commit access.
Some of the pages are fairly out of date by now and many of the recent features are not documented on it at all, and it would be good if people could try to update it a little.
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
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;
I tried a number of combinations including:
r0 = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
r0 = LightMaskTexture.Load(r0); //override passes, but lights are missing
r0 = LightMaskTexture.Load(r0.xyz).xyzw; //override fails
r0.xyz = LightMaskTexture.Load(r0.xyz); //override passes, but lights are missing
r0.xyz = LightMaskTexture.Load(r0.xyz).xyz; //override fails
r0.xyzw = LightMaskTexture.Load(r0.xyzw); //override passes, but lights are missing
r0.xyzw = LightMaskTexture.Load(r0); //override passes, but lights are missing
Here's the full shader:
Also, for another shader, I'm getting the error "wrapper1349(142,27-30): error X3004: undeclared identifier 'int7'".
There are multiple lines with int7, but here's one line:
r0.x = (int)r0.x & (int7)LightProperties.LightID;
And here's the full shader:
Dual boot Win 7 x64 & Win 10 (1809) | Geforce Drivers 417.35
to
and for God's sake wrap that code into the [code]block please.
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
Heh, funny;)
Just pay attention to where the code ends;) Is incomplete;)
That's why it appears like that;)
Each post has a MAX number of characters! When you make the post everything looks fine! But if you hit refresh you get something like the post above;) Where the shader text is incomplete since is too long and hence the code block doesn't work:(
Had this issue here on numerous occasions...Had to use pastebin:(
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
Across multiple posts... Yes, should work;)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
https://github.com/bo3b/3Dmigoto/releases/tag/1.2.30
- Fixes a regression introduced in 1.2.28 which crashes when using stereo2mono
- Fixes a rare crash related to the resource tracking in multi-threaded games
- StereoParams and IniParams are now bound at the draw calls for compatibility with some games (e.g. Akiba's Trip)
- Support for preload_shaders has been dropped
cmd_Decompiler
This is the first release of the command line decompiler. This is distributed in a separate zip file from 3DMigoto itself. This tool is intended for use with scripts that extract shaders externally from 3DMigoto (e.g. my Unity scripts), but can be used as a general purpose decompiler / disassembler / assembler (for a compiler use fxc).
This can decompile binary shaders from the command line using 3DMigoto's decompiler (-D). It can also assemble (-a) shaders into binary using Flugan's assembler, and can disassemble (-d) binary shaders into assembly with Flugan's precision fix. It supports POSIX style command line parsing, so run with --help to see the full range of options it supports.
Note that assembling shaders with this tool does not work quite the same as 3DMigoto (3DMigoto will eventually move to this model after this has undergone some more testing). The assembler in 3DMigoto cannot change the input and output signatures of the shader and instead re-uses the signatures from the original shaders (preventing adding new inputs/outputs). cmd_Decompiler generates new input + output signatures from the corresponding comment blocks in the shader assembly, and therefore does not require an original binary to assemble, and can add new inputs & outputs.
It currently does not parse the resource sections, which means that shaders assembled with this tool will be missing type information (we often refer to this as missing headers) if they are later decompiled.
OM Blend State Overrides
This version adds the ability to override the OM blend state. Currently this is restricted to use in CustomShader sections due to it's complexity, but the astute will recognise that if it was needed for an existing shader it is trivial to work around - since a CustomShader that does not specify any shaders will use those already bound to the pipeline, and since is able to use 'Draw = from_caller' it can effectively replace the original draw call if the original draw call is modified to produce no output (e.g. by conditionally disabling the output of the original shader, or unbinding and rebinding the render targets around the original draw call).
The following options are available:
... simple, right? ... No, Not really?
The simplest option is disabling blending altogether, and for that all you need to do is:
Which is equivelent to using only the pixel shader output and discarding the original value from the render target:
These are also the default values. If even one blend option is specified the entire blend state will be overridden - there is no support for merging it with the current blend state at present.
To do something more complicated like enabling alpha blending you might do something like this:
The arguments to blend= (and alpha=) are <OPERATION> <SOURCE_FACTOR> <DESTINATION_FACTOR>
Source is the output from the pixel shader
Destination is whatever was already on the render target
Operation is one of ADD, SUBTRACT, REV_SUBTRACT, MIN, MAX, which corresponds to the options documented here:
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476088(v=vs.85).aspx
SOURCE_FACTOR and DESTINATION_FACTOR are from these possibilities:
ZERO, ONE, SRC_COLOR, INV_SRC_COLOR, SRC_ALPHA, INV_SRC_ALPHA, DEST_ALPHA, INV_DEST_ALPHA, DEST_COLOR, INV_DEST_COLOR, SRC_ALPHA_SAT, BLEND_FACTOR, INV_BLEND_FACTOR, SRC1_COLOR, INV_SRC1_COLOR, SRC1_ALPHA, INV_SRC1_ALPHA
Which correspond to the options documented here:
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476086(v=vs.85).aspx
blend, alpha and mask set the option for all simultaneous render targets. To set different blend options on different render targets, use the variants with [] after the option.
alpha_to_coverage (0/1), sample_mask (hexadecimal) and blend_factor (float) are common to all render targets (the four blend_factors are for RGBA, not render targets).
Further reading on blend states and the supported options:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb205120(v=vs.85).aspx#Blending
https://msdn.microsoft.com/en-us/library/windows/desktop/bb205072(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476462(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476087(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476200(v=vs.85).aspx
The related support for overriding the depth/stencil state is not yet implemented (and is low on my priority list until someone asks for it).
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
Try removing the (int7) - that is a bug in the decompiler that counted 7 letters in "LightID" as a swizzle and is now the second time we have seen this. In this case LightID already has a type so it should be safe to drop the cast.
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
Override is failing with the same error (invalid subscript). I think this issue may be similar to the error that was present in Star Wars Battlefront, where some shaders were being decompiled incorrectly. In the below example, no faults were logged, but the shadows were missing:
https://forums.geforce.com/default/topic/883659/3d-vision/star-wars-battlefront-2015-3d-vision-thread/post/4691539/#4691539
Yup, it works. Thank you!
Dual boot Win 7 x64 & Win 10 (1809) | Geforce Drivers 417.35
https://github.com/bo3b/3Dmigoto/releases/tag/1.2.31
- Fixes a regression introduced in 1.2.30 which could cause StereoParams and IniParams not to be bound to domain, geometry and hull shaders in some circumstances (hunting = 0 or 2 with no [ShaderOverride] sections)
- Makes the present call command list a little more consistent with other command lists. The pre command list is run slightly earlier so that the current frame count will be correct (for max_copies_per_frame), and adds a post command list run at the start of the next frame (after StereoParams has been updated).
- Makes the overlay render after custom shaders run from the present call.
- Copying to a render target will now always default to copy by reference.
- Adds a "bb" Back Buffer target to arbitrary resource copying.
Most of these changes are intended to make things easier and more consistent when running a custom shader on the present call - the back buffer access in particular is useful for games like MGSV which don't have the back buffer assigned as a render target during the present call (I used a similar technique to example 1 in that game to debug the AO, but had to tie the custom shader to a shader late in the frame instead of the present call).
Example 1: Output the result of a shader directly to the screen in real time:
ShaderFixes\full_screen.hlsl:
ShaderFixes\output-t100.hlsl:
Depending on the effect you may need to scale the result to see it clearly, and if the render target you are examining is a different size to the resolution you may need to scale pos.
Example 2: Convert a game/application from side-by-side to 3D Vision
(e.g. Unity -vrmode split, UE4 -emulatestereo):
ShaderFixes\full_screen.hlsl (not quite the same as example 1 - this has an additional texcoord output):
ShaderFixes\sbs2stereo.hlsl:
Note that you may need to prevent 3D Vision from adjusting the position of any shader if you get a doubled image (e.g. set StereoTextureEnable = 0 in the profile, or reduce separation. Exception: In the whirligig VR video player with '-vrmode split' the separation is harmless and allows the video to be pushed back to infinity).
This example is available for Whirligig here:
https://forums.geforce.com/default/topic/908302/3d-vision/how-to-play-vr-images-and-videos-in-3dvision-using-the-whirligig-vr-player/post/4810984/#4810984
Going the other way (3D Vision -> SBS) should be possible by using something similar to this combined with the stereo2mono copy mode, though that does not solve the output problem (3D Vision must still be enabled).
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
Also, am I correct in understanding that we're still to yet have matrix copying/sharing incorporated? (besides passing from a VS to a PS through outputs) I read the section on resource sharing on the wiki, and again, I didn't interpreted anything in that to relate to copying matrices.
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
https://github.com/bo3b/3Dmigoto/issues/33
We've had that support since the very first arbitrary resource copying support was added - matrices are in constant buffers, so you copy them by copying the constant buffer they are in. If you need to invert a matrix you can do so with a bit of HLSL (check the matrix.hlsl file I include with most recent fixes).
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
How exactly do I copy a cbuffer from one shader to another? I know how to filter on a texture (for the depth UI) but never tried to copy a cbuffer from one shader to another before;)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
BTW can you all edit that wiki? @Helifax if memory serves we gave you commit access to 3DMigoto some time back so you should be able to (or was that someone else I'm thinking of?), but I'm not sure if it allows people without commit access like @Oomek to edit it directly. If you can't edit it I suppose you can clone it locally, edit it there then send us a pull request, or you can ask bo3b for commit access.
Some of the pages are fairly out of date by now and many of the recent features are not documented on it at all, and it would be good if people could try to update it a little.
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