[quote="masterotaku"][quote="DarkStarSword"]-snip about Dolphin-[/quote]
Thank you, DarkStarSword. Still (of two games I tried, this only happened in Baten Kaitos), when I dump shaders in Dolphin with the newest 3Dmigoto version (1.2.25), shaders have randomly one or a few errors (like "r1.xyzw = (int5)clights[1].color;") that cause this in the log:
[code]C:\Users\Alejandro\Documents\Dolphin-x64 8717\wrapper1349(82,14-17): error X3004: undeclared identifier 'int5'[/code][/quote]Can you give me a complete example of one of these shaders? I'm a bit of a noob at the decompiler (that's mostly been bo3b's domain so far), so I could have screwed up something in the ibfe instruction (like counting "c-o-l-o-r" as a 5 component swizzle), but the example you posted there does not appear to be one of those.
Thank you, DarkStarSword. Still (of two games I tried, this only happened in Baten Kaitos), when I dump shaders in Dolphin with the newest 3Dmigoto version (1.2.25), shaders have randomly one or a few errors (like "r1.xyzw = (int5)clights[1].color;") that cause this in the log:
Can you give me a complete example of one of these shaders? I'm a bit of a noob at the decompiler (that's mostly been bo3b's domain so far), so I could have screwed up something in the ibfe instruction (like counting "c-o-l-o-r" as a 5 component swizzle), but the example you posted there does not appear to be one of those.
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"]Can you give me a complete example of one of these shaders? I'm a bit of a noob at the decompiler (that's mostly been bo3b's domain so far), so I could have screwed up something in the ibfe instruction (like counting "c-o-l-o-r" as a 5 component swizzle), but the example you posted there does not appear to be one of those.
[/quote]
OK. Sorry for not not posting it before. I'll do it... in about almost 11 hours, when I'm home. I didn't have enough time this morning.
DarkStarSword said:Can you give me a complete example of one of these shaders? I'm a bit of a noob at the decompiler (that's mostly been bo3b's domain so far), so I could have screwed up something in the ibfe instruction (like counting "c-o-l-o-r" as a 5 component swizzle), but the example you posted there does not appear to be one of those.
OK. Sorry for not not posting it before. I'll do it... in about almost 11 hours, when I'm home. I didn't have enough time this morning.
3Dmigoto 1.2.26 is out. https://github.com/bo3b/3Dmigoto/releases
This includes Decompiler fixes to handle the default initializers for larger than 4 components. Tested on only a single game, but with float4x4 with initial values.
Should also be able to generate a shader for other variants, but still require hand fixes for those. Let me know when you find other variants and I can add them. I think this will allow CoH2 to be used now as well.
This includes Decompiler fixes to handle the default initializers for larger than 4 components. Tested on only a single game, but with float4x4 with initial values.
Should also be able to generate a shader for other variants, but still require hand fixes for those. Let me know when you find other variants and I can add them. I think this will allow CoH2 to be used now as well.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
TECHNICAL QUESTION:
I have a LG passive 3D TV and as you probably know this types of displays are not entirely supported by nvidia 3D vision. I can of course use EDID override and swap the eyes, or use the quality degrading 720p mode or mosaic mode with 3DTV Play. Would it be possible to add the support in 3Dmigoto for this kind of displays to allow playing games in native 3D 1080p horizontal interleaved mode? TAB mode would be the best if you want to avoid ghosting and preserve the maximum quality.
I have a LG passive 3D TV and as you probably know this types of displays are not entirely supported by nvidia 3D vision. I can of course use EDID override and swap the eyes, or use the quality degrading 720p mode or mosaic mode with 3DTV Play. Would it be possible to add the support in 3Dmigoto for this kind of displays to allow playing games in native 3D 1080p horizontal interleaved mode? TAB mode would be the best if you want to avoid ghosting and preserve the maximum quality.
DarkStarSword said:Can you give me a complete example of one of these shaders? I'm a bit of a noob at the decompiler (that's mostly been bo3b's domain so far), so I could have screwed up something in the ibfe instruction (like counting "c-o-l-o-r" as a 5 component swizzle), but the example you posted there does not appear to be one of those.
OK. Sorry for not not posting it before. I'll do it... in about almost 11 hours, when I'm home. I didn't have enough time this morning.
The time has come. Log:
D3D11 DLL starting init - v 1.2.25 - Wed Jan 20 19:55:19 2016
Trying to load original_d3d11.dll
Hooked_LoadLibraryExW switching to original dll: original_d3d11.dll to C:\Windows\system32\d3d11.dll.
Hooked_CreateDXGIFactory called with riid: IDXGIFactory
calling original CreateDXGIFactory API
CreateDXGIFactory returned factory = 000000000025FC30, result = 0
HackerDXGIFactory::EnumAdapters(class HackerDXGIFactory@000000000C951470) adapter 0 requested
created HackerDXGIAdapter wrapper = 000000000C9514D0 of 000000000025FD50
returns result = 0
HackerDXGIAdapter::GetDesc(class HackerDXGIAdapter@000000000C9514D0) called
returns adapter: NVIDIA GeForce GTX 760, sysmem=0, vidmem=2087387136
HackerDXGIFactory::MakeWindowAssociation(class HackerDXGIFactory@000000000B91A300) called with WindowHandle = 00000000001503F2, Flags = 1
Flags = DXGI_MWA_NO_WINDOW_CHANGES(no monitoring)
returns result = 0
HackerUnknown::Release(class HackerDXGIFactory@000000000B91A300), counter=3, this=000000000B91A300
HackerUnknown::Release(class HackerDXGIAdapter@000000000B91DC30), counter=5, this=000000000B91DC30
HackerDevice::CreatePixelShader called with BytecodeLength = 848, handle = 0000000001E48830, ClassLinkage = 0000000000000000
bytecode hash = 4dab6625ae76d67b
shader registered for possible reloading: 4dab6625ae76d67b_ps as bin -
returns result = 0, handle = 0000000001E46EE8
HackerDevice::CreateVertexShader called with BytecodeLength = 1104, handle = 0000000001DD2EA0, ClassLinkage = 0000000000000000
bytecode hash = b2293ce2e61dfc49
shader registered for possible reloading: b2293ce2e61dfc49_vs as bin -
returns result = 0, handle = 0000000001E47368
HackerDevice::CreatePixelShader called with BytecodeLength = 2340, handle = 0000000001E49500, ClassLinkage = 0000000000000000
bytecode hash = a4918560526792e4
shader registered for possible reloading: a4918560526792e4_ps as bin -
returns result = 0, handle = 0000000001E49E68
updating stereo texture with eyeSeparation = 0.000000e+000, separation = 0.000000e+000, convergence = 0.000000e+000, active = 0
nvapi fetched screen width: 1920.000000, height: 1080.000000
HackerDevice::CreatePixelShader called with BytecodeLength = 1224, handle = 0000000001E49500, ClassLinkage = 0000000000000000
bytecode hash = c7b4ecbf2cc3686f
shader registered for possible reloading: c7b4ecbf2cc3686f_ps as bin -
returns result = 0, handle = 0000000001E48A28
HackerDevice::CreatePixelShader called with BytecodeLength = 1460, handle = 0000000001E497D0, ClassLinkage = 0000000000000000
bytecode hash = 45d3fefdb845bfdf
shader registered for possible reloading: 45d3fefdb845bfdf_ps as bin -
returns result = 0, handle = 0000000001E48328
HackerDevice::CreatePixelShader called with BytecodeLength = 1804, handle = 0000000001E4BE10, ClassLinkage = 0000000000000000
bytecode hash = 8c637393a767e3bf
shader registered for possible reloading: 8c637393a767e3bf_ps as bin -
returns result = 0, handle = 0000000001E507E8
HackerDevice::CreateVertexShader called with BytecodeLength = 652, handle = 0000000001E59750, ClassLinkage = 0000000000000000
bytecode hash = 489c1f30e193e09f
shader registered for possible reloading: 489c1f30e193e09f_vs as bin -
returns result = 0, handle = 0000000001E50928
HackerDevice::CreateVertexShader called with BytecodeLength = 608, handle = 0000000001E595E0, ClassLinkage = 0000000000000000
bytecode hash = 59378704ab3f9994
shader registered for possible reloading: 59378704ab3f9994_vs as bin -
returns result = 0, handle = 0000000001E39DA8
HackerDevice::CreatePixelShader called with BytecodeLength = 532, handle = 0000000001E4FB80, ClassLinkage = 0000000000000000
bytecode hash = d50bb519cef93ca9
shader registered for possible reloading: d50bb519cef93ca9_ps as bin -
returns result = 0, handle = 0000000001E39EA8
HackerDevice::CreatePixelShader called with BytecodeLength = 1080, handle = 0000000001E3D3A0, ClassLinkage = 0000000000000000
bytecode hash = f12d1ec6b2d5f02b
shader registered for possible reloading: f12d1ec6b2d5f02b_ps as bin -
returns result = 0, handle = 0000000001E39FE8
HackerDevice::CreatePixelShader called with BytecodeLength = 660, handle = 0000000001E595E0, ClassLinkage = 0000000000000000
bytecode hash = 2619f8481feba267
shader registered for possible reloading: 2619f8481feba267_ps as bin -
returns result = 0, handle = 0000000001E3A0E8
HackerDevice::CreatePixelShader called with BytecodeLength = 1092, handle = 00000000254FF540, ClassLinkage = 0000000000000000
bytecode hash = 7a82cb3d12101e65
shader registered for possible reloading: 7a82cb3d12101e65_ps as bin -
returns result = 0, handle = 0000000001E3A228
HackerDevice::CreatePixelShader called with BytecodeLength = 1276, handle = 0000000001E3CAD0, ClassLinkage = 0000000000000000
bytecode hash = 0db04256e5b456ff
shader registered for possible reloading: 0db04256e5b456ff_ps as bin -
returns result = 0, handle = 0000000001E3A328
HackerDevice::CreateGeometryShader called with BytecodeLength = 988, handle = 0000000001E3C630
bytecode hash = f8ec4e031f557502
shader registered for possible reloading: f8ec4e031f557502_gs as bin -
returns result = 0, handle = 0000000001E3A468
HackerDevice::CreateGeometryShader called with BytecodeLength = 1116, handle = 0000000025501950
bytecode hash = 090a134fe4f0a72e
shader registered for possible reloading: 090a134fe4f0a72e_gs as bin -
returns result = 0, handle = 0000000001E3A568
HackerDevice::CreatePixelShader called with BytecodeLength = 748, handle = 0000000001E3C630, ClassLinkage = 0000000000000000
bytecode hash = 989d6a47232b760e
shader registered for possible reloading: 989d6a47232b760e_ps as bin -
returns result = 0, handle = 0000000001E3A7A8
HackerDevice::CreateVertexShader called with BytecodeLength = 716, handle = 0000000001DCD2A0, ClassLinkage = 0000000000000000
bytecode hash = 987459d0ab8f74a0
shader registered for possible reloading: 987459d0ab8f74a0_vs as bin -
returns result = 0, handle = 0000000001E3A8E8
HackerDevice::CreatePixelShader called with BytecodeLength = 940, handle = 00000000255001B0, ClassLinkage = 0000000000000000
bytecode hash = 8704ffe1f1ae1118
shader registered for possible reloading: 8704ffe1f1ae1118_ps as bin -
returns result = 0, handle = 0000000001E3A9E8
HackerDevice::CreateVertexShader called with BytecodeLength = 1104, handle = 0000000001E47B70, ClassLinkage = 0000000000000000
bytecode hash = b2293ce2e61dfc49
shader registered for possible reloading: b2293ce2e61dfc49_vs as bin -
returns result = 0, handle = 0000000025501AE8
HackerDevice::CreatePixelShader called with BytecodeLength = 2340, handle = 00000000255076B0, ClassLinkage = 0000000000000000
bytecode hash = a4918560526792e4
shader registered for possible reloading: a4918560526792e4_ps as bin -
returns result = 0, handle = 0000000025501C28
updating stereo texture with eyeSeparation = 1.177359e-001, separation = 1.000000e+002, convergence = 4.000000e+000, active = 1
nvapi fetched screen width: 1920.000000, height: 1080.000000
HackerDevice::CreatePixelShader called with BytecodeLength = 940, handle = 0000000001E47B70, ClassLinkage = 0000000000000000
bytecode hash = 8704ffe1f1ae1118
shader registered for possible reloading: 8704ffe1f1ae1118_ps as bin -
returns result = 0, handle = 0000000001E3A9E8
HackerDevice::CreatePixelShader called with BytecodeLength = 2596, handle = 000000002550C6A0, ClassLinkage = 0000000000000000
bytecode hash = 548a3425237494d8
shader registered for possible reloading: 548a3425237494d8_ps as bin -
returns result = 0, handle = 0000000025501D28
HackerDevice::CreateVertexShader called with BytecodeLength = 2748, handle = 000000002550D610, ClassLinkage = 0000000000000000
bytecode hash = fefd90470c9f3f76
shader registered for possible reloading: fefd90470c9f3f76_vs as bin -
returns result = 0, handle = 0000000025501E68
HackerDevice::CreateGeometryShader called with BytecodeLength = 2008, handle = 000000002550F0F0
bytecode hash = 7fcb77db49ef1a8c
shader registered for possible reloading: 7fcb77db49ef1a8c_gs as bin -
returns result = 0, handle = 0000000025501F68
HackerDevice::CreatePixelShader called with BytecodeLength = 3484, handle = 00000000254C7C30, ClassLinkage = 0000000000000000
bytecode hash = 62e4394df74b284d
shader registered for possible reloading: 62e4394df74b284d_ps as bin -
returns result = 0, handle = 00000000255020A8
HackerDevice::CreateVertexShader called with BytecodeLength = 2652, handle = 00000000254C8EB0, ClassLinkage = 0000000000000000
bytecode hash = 3ce041838d16e198
shader registered for possible reloading: 3ce041838d16e198_vs as bin -
returns result = 0, handle = 00000000255021A8
HackerDevice::CreatePixelShader called with BytecodeLength = 1896, handle = 00000000254CA930, ClassLinkage = 0000000000000000
bytecode hash = d497a2d282a9ed78
shader registered for possible reloading: d497a2d282a9ed78_ps as bin -
returns result = 0, handle = 00000000255022E8
HackerDevice::CreateVertexShader called with BytecodeLength = 2244, handle = 00000000254CABF0, ClassLinkage = 0000000000000000
bytecode hash = e0790ef4d504bf5d
shader registered for possible reloading: e0790ef4d504bf5d_vs as bin -
returns result = 0, handle = 00000000255023E8
HackerDevice::CreateGeometryShader called with BytecodeLength = 1900, handle = 00000000254CC8D0
bytecode hash = 913f7cd70aa3f406
shader registered for possible reloading: 913f7cd70aa3f406_gs as bin -
returns result = 0, handle = 0000000025502528
HackerDevice::CreatePixelShader called with BytecodeLength = 4732, handle = 00000000254DACB0, ClassLinkage = 0000000000000000
bytecode hash = 7a0220ca6dc989bf
shader registered for possible reloading: 7a0220ca6dc989bf_ps as bin -
returns result = 0, handle = 0000000025502628
HackerDevice::CreateVertexShader called with BytecodeLength = 2864, handle = 00000000254E4140, ClassLinkage = 0000000000000000
bytecode hash = 8c5a5a3064da744f
shader registered for possible reloading: 8c5a5a3064da744f_vs as bin -
returns result = 0, handle = 0000000025502768
HackerDevice::CreateGeometryShader called with BytecodeLength = 2116, handle = 00000000254E5C90
bytecode hash = 4151119c3a685230
shader registered for possible reloading: 4151119c3a685230_gs as bin -
returns result = 0, handle = 0000000025502868
HackerDevice::CreatePixelShader called with BytecodeLength = 3788, handle = 00000000254E6960, ClassLinkage = 0000000000000000
bytecode hash = bf458bafc3864338
shader registered for possible reloading: bf458bafc3864338_ps as bin -
returns result = 0, handle = 00000000254E4CE8
HackerDevice::CreatePixelShader called with BytecodeLength = 3676, handle = 00000000254E9B20, ClassLinkage = 0000000000000000
bytecode hash = 5e8104258a35ed8f
shader registered for possible reloading: 5e8104258a35ed8f_ps as bin -
returns result = 0, handle = 00000000254E4E28
HackerDevice::CreatePixelShader called with BytecodeLength = 2960, handle = 00000000254EB730, ClassLinkage = 0000000000000000
bytecode hash = 4ee5b56933f2d814
shader registered for possible reloading: 4ee5b56933f2d814_ps as bin -
returns result = 0, handle = 00000000254E4F28
HackerDevice::CreatePixelShader called with BytecodeLength = 1836, handle = 00000000254EBBD0, ClassLinkage = 0000000000000000
bytecode hash = c526d4d477bde07e
shader registered for possible reloading: c526d4d477bde07e_ps as bin -
returns result = 0, handle = 00000000254E5068
HackerDevice::CreatePixelShader called with BytecodeLength = 1364, handle = 00000000254EF310, ClassLinkage = 0000000000000000
bytecode hash = aad190e958ca1e0c
shader registered for possible reloading: aad190e958ca1e0c_ps as bin -
returns result = 0, handle = 00000000254E5168
HackerDevice::CreatePixelShader called with BytecodeLength = 2392, handle = 00000000254EB860, ClassLinkage = 0000000000000000
bytecode hash = 05066134c7e7b1f2
shader registered for possible reloading: 05066134c7e7b1f2_ps as bin -
returns result = 0, handle = 00000000254E52A8
HackerDevice::CreateVertexShader called with BytecodeLength = 2552, handle = 00000000254F0C80, ClassLinkage = 0000000000000000
bytecode hash = aad91ef4b23a5bba
shader registered for possible reloading: aad91ef4b23a5bba_vs as bin -
returns result = 0, handle = 00000000254E53A8
HackerDevice::CreatePixelShader called with BytecodeLength = 4644, handle = 00000000254F2690, ClassLinkage = 0000000000000000
bytecode hash = 160bfd3843ca76bb
shader registered for possible reloading: 160bfd3843ca76bb_ps as bin -
returns result = 0, handle = 00000000254E54E8
HackerDevice::CreateVertexShader called with BytecodeLength = 3052, handle = 00000000254F2450, ClassLinkage = 0000000000000000
bytecode hash = 055ec18d6e898645
shader registered for possible reloading: 055ec18d6e898645_vs as bin -
returns result = 0, handle = 00000000254E55E8
HackerDevice::CreatePixelShader called with BytecodeLength = 2072, handle = 00000000254F1A80, ClassLinkage = 0000000000000000
bytecode hash = bb54a93ad3ca4abd
shader registered for possible reloading: bb54a93ad3ca4abd_ps as bin -
returns result = 0, handle = 00000000254E5728
HackerDevice::CreateVertexShader called with BytecodeLength = 2340, handle = 00000000254F7F00, ClassLinkage = 0000000000000000
bytecode hash = ad91fa33764a592b
shader registered for possible reloading: ad91fa33764a592b_vs as bin -
returns result = 0, handle = 00000000254E5828
HackerDevice::CreateGeometryShader called with BytecodeLength = 2548, handle = 00000000254F8DF0
bytecode hash = 8aeef47a6c9b2b6a
shader registered for possible reloading: 8aeef47a6c9b2b6a_gs as bin -
returns result = 0, handle = 00000000254E5968
HackerDevice::CreatePixelShader called with BytecodeLength = 2788, handle = 00000000254F8C70, ClassLinkage = 0000000000000000
bytecode hash = 3cb34e3a6f1669e8
shader registered for possible reloading: 3cb34e3a6f1669e8_ps as bin -
returns result = 0, handle = 00000000254E5A68
HackerDevice::CreateGeometryShader called with BytecodeLength = 3216, handle = 0000000025511CC0
bytecode hash = ca3df2bcb0d97946
shader registered for possible reloading: ca3df2bcb0d97946_gs as bin -
returns result = 0, handle = 00000000254E5BA8
HackerDevice::CreatePixelShader called with BytecodeLength = 2072, handle = 00000000254FBF80, ClassLinkage = 0000000000000000
bytecode hash = bb54a93ad3ca4abd
shader registered for possible reloading: bb54a93ad3ca4abd_ps as bin -
returns result = 0, handle = 00000000254F9868
HackerDevice::CreatePixelShader called with BytecodeLength = 2788, handle = 00000000254FBF80, ClassLinkage = 0000000000000000
bytecode hash = 3cb34e3a6f1669e8
shader registered for possible reloading: 3cb34e3a6f1669e8_ps as bin -
returns result = 0, handle = 00000000254F99A8
HackerDevice::CreatePixelShader called with BytecodeLength = 4644, handle = 0000000025513FE0, ClassLinkage = 0000000000000000
bytecode hash = 160bfd3843ca76bb
shader registered for possible reloading: 160bfd3843ca76bb_ps as bin -
returns result = 0, handle = 00000000254F9AA8
HackerDevice::CreatePixelShader called with BytecodeLength = 4056, handle = 0000000025513FE0, ClassLinkage = 0000000000000000
bytecode hash = 12140248aa642b3b
shader registered for possible reloading: 12140248aa642b3b_ps as bin -
returns result = 0, handle = 00000000254F9BE8
HackerDevice::CreateVertexShader called with BytecodeLength = 3148, handle = 000000002551A440, ClassLinkage = 0000000000000000
bytecode hash = a9a125f9e4690534
shader registered for possible reloading: a9a125f9e4690534_vs as bin -
returns result = 0, handle = 00000000254F9CE8
HackerDevice::CreatePixelShader called with BytecodeLength = 2632, handle = 000000002551C0B0, ClassLinkage = 0000000000000000
bytecode hash = 6c5ec9392c8fbfcd
shader registered for possible reloading: 6c5ec9392c8fbfcd_ps as bin -
returns result = 0, handle = 00000000254F9E28
HackerDevice::CreatePixelShader called with BytecodeLength = 2912, handle = 0000000025524B10, ClassLinkage = 0000000000000000
bytecode hash = 082e5424256e9a35
shader registered for possible reloading: 082e5424256e9a35_ps as bin -
returns result = 0, handle = 000000002554F528
HackerDevice::CreatePixelShader called with BytecodeLength = 2808, handle = 000000002552A690, ClassLinkage = 0000000000000000
bytecode hash = c86296da06d07ce4
shader registered for possible reloading: c86296da06d07ce4_ps as bin -
returns result = 0, handle = 000000002554F668
HackerDevice::CreatePixelShader called with BytecodeLength = 2784, handle = 000000002552B990, ClassLinkage = 0000000000000000
bytecode hash = 687369e3e961d198
shader registered for possible reloading: 687369e3e961d198_ps as bin -
returns result = 0, handle = 000000002554F768
HackerDevice::CreateVertexShader called with BytecodeLength = 2952, handle = 000000002552C480, ClassLinkage = 0000000000000000
bytecode hash = 82889657c6c158ed
shader registered for possible reloading: 82889657c6c158ed_vs as bin -
returns result = 0, handle = 000000002554F8A8
HackerDevice::CreatePixelShader called with BytecodeLength = 5056, handle = 00000000255301E0, ClassLinkage = 0000000000000000
bytecode hash = 2d4f828f25b3adf6
shader registered for possible reloading: 2d4f828f25b3adf6_ps as bin -
returns result = 0, handle = 000000002554F9A8
HackerDevice::CreateVertexShader called with BytecodeLength = 3616, handle = 00000000255375B0, ClassLinkage = 0000000000000000
bytecode hash = b9e678d7abcaa440
shader registered for possible reloading: b9e678d7abcaa440_vs as bin -
returns result = 0, handle = 000000002554FAE8
HackerDevice::CreatePixelShader called with BytecodeLength = 5056, handle = 00000000255395A0, ClassLinkage = 0000000000000000
bytecode hash = 6d18667ff444d226
shader registered for possible reloading: 6d18667ff444d226_ps as bin -
returns result = 0, handle = 000000002551CB68
HackerDevice::CreatePixelShader called with BytecodeLength = 4364, handle = 000000002553BD40, ClassLinkage = 0000000000000000
bytecode hash = dc39ed30bd32e34d
shader registered for possible reloading: dc39ed30bd32e34d_ps as bin -
returns result = 0, handle = 000000002551CCA8
HackerDevice::CreateVertexShader called with BytecodeLength = 3540, handle = 000000002553DE60, ClassLinkage = 0000000000000000
bytecode hash = 8a003bdbbc669ae7
shader registered for possible reloading: 8a003bdbbc669ae7_vs as bin -
returns result = 0, handle = 000000002551CDA8
HackerDevice::CreatePixelShader called with BytecodeLength = 2072, handle = 0000000025539D00, ClassLinkage = 0000000000000000
bytecode hash = c0881fb7c41d216c
shader registered for possible reloading: c0881fb7c41d216c_ps as bin -
returns result = 0, handle = 000000002551CEE8
HackerDevice::CreatePixelShader called with BytecodeLength = 2808, handle = 0000000025539D00, ClassLinkage = 0000000000000000
bytecode hash = 18120e07f18fe516
shader registered for possible reloading: 18120e07f18fe516_ps as bin -
returns result = 0, handle = 000000002551CFE8
HackerDevice::CreatePixelShader called with BytecodeLength = 956, handle = 000000002552C000, ClassLinkage = 0000000000000000
bytecode hash = 94b960f36b0012a8
shader registered for possible reloading: 94b960f36b0012a8_ps as bin -
returns result = 0, handle = 000000002551D128
HackerDevice::CreatePixelShader called with BytecodeLength = 2348, handle = 0000000025544C70, ClassLinkage = 0000000000000000
bytecode hash = 75d883bf98d37120
shader registered for possible reloading: 75d883bf98d37120_ps as bin -
returns result = 0, handle = 000000002551D228
HackerDevice::CreatePixelShader called with BytecodeLength = 2268, handle = 00000000255455B0, ClassLinkage = 0000000000000000
bytecode hash = 53f9a42d156c61e8
shader registered for possible reloading: 53f9a42d156c61e8_ps as bin -
returns result = 0, handle = 000000002551D368
HackerDevice::CreatePixelShader called with BytecodeLength = 4196, handle = 000000002555B570, ClassLinkage = 0000000000000000
bytecode hash = ecf1dcbc1befc6a4
shader registered for possible reloading: ecf1dcbc1befc6a4_ps as bin -
returns result = 0, handle = 000000002551D468
HackerDevice::CreateVertexShader called with BytecodeLength = 2964, handle = 00000000255605E0, ClassLinkage = 0000000000000000
bytecode hash = 8e2236c5c8818ed1
shader registered for possible reloading: 8e2236c5c8818ed1_vs as bin -
returns result = 0, handle = 000000002551D5A8
HackerDevice::CreatePixelShader called with BytecodeLength = 5632, handle = 0000000025567D80, ClassLinkage = 0000000000000000
bytecode hash = 7f6a6773e420f9ae
shader registered for possible reloading: 7f6a6773e420f9ae_ps as bin -
returns result = 0, handle = 000000002551D6A8
HackerDevice::CreateVertexShader called with BytecodeLength = 5328, handle = 0000000025567190, ClassLinkage = 0000000000000000
bytecode hash = 4fe38d0e49371f9d
shader registered for possible reloading: 4fe38d0e49371f9d_vs as bin -
returns result = 0, handle = 000000002551D7E8
HackerDevice::CreatePixelShader called with BytecodeLength = 6324, handle = 000000002557C090, ClassLinkage = 0000000000000000
bytecode hash = fb70974113d6e1ad
shader registered for possible reloading: fb70974113d6e1ad_ps as bin -
returns result = 0, handle = 000000002551D8E8
HackerDevice::CreateVertexShader called with BytecodeLength = 5404, handle = 000000002557F950, ClassLinkage = 0000000000000000
bytecode hash = 3f51be073ec8e63a
shader registered for possible reloading: 3f51be073ec8e63a_vs as bin -
returns result = 0, handle = 000000002551DA28
HackerDevice::CreatePixelShader called with BytecodeLength = 6324, handle = 0000000025583090, ClassLinkage = 0000000000000000
bytecode hash = 91ef4d84ebf9db93
shader registered for possible reloading: 91ef4d84ebf9db93_ps as bin -
returns result = 0, handle = 0000000025566228
> starting at vertex shader #0. Number of vertex shaders in frame: 8
> traversing to next vertex shader #1. Number of vertex shaders in frame: 8
> traversing to previous vertex shader shader #0. Number of vertex shader shaders in frame: 8
> traversing to next vertex shader #1. Number of vertex shaders in frame: 8
>>>> vertex shader marked: vertex shader hash = 3f51be073ec8e63a
visited index buffer hash = 7de1e7e8
visited pixel shader hash = 91ef4d84ebf9db93
visited pixel shader hash = fb70974113d6e1ad
StereoScreenShot on Mark: C:\Users\Alejandro\Documents\Dolphin-x64 8727\ShaderFixes\3f51be073ec8e63a-vs.jps, result: 0
creating HLSL representation.
storing patched shader to C:\Users\Alejandro\Documents\Dolphin-x64 8727\ShaderFixes\3f51be073ec8e63a-vs_replace.txt
>Replacement shader found. Re-Loading replacement HLSL code from 3f51be073ec8e63a-vs_replace.txt
Reload source code loaded. Size = 11491
compiling replacement HLSL code with shader model vs_5_0
compile result for replacement HLSL shader: 80004005
--------------------------------------------- BEGIN ---------------------------------------------
C:\Users\Alejandro\Documents\Dolphin-x64 8727\wrapper1349(61,14-17): error X3004: undeclared identifier 'int5'
---------------------------------------------- END ----------------------------------------------
> FAILED to copy Marked shader to ShaderFixes
HackerDXGISwapChain::SetFullscreenState(class HackerDXGISwapChain@0000000024573400) called with
Fullscreen = 0
Target = 0000000000000000
returns 0
HackerDXGISwapChain::ResizeBuffers(class HackerDXGISwapChain@0000000024573400) called
returns result = 887a0001
HackerDevice::CreateVertexShader called with BytecodeLength = 1104, handle = 0000000025542F50, ClassLinkage = 0000000000000000
bytecode hash = b2293ce2e61dfc49
shader registered for possible reloading: b2293ce2e61dfc49_vs as bin -
returns result = 0, handle = 0000000025501AE8
HackerDevice::CreatePixelShader called with BytecodeLength = 2340, handle = 000000002558C740, ClassLinkage = 0000000000000000
bytecode hash = a4918560526792e4
shader registered for possible reloading: a4918560526792e4_ps as bin -
returns result = 0, handle = 0000000025501C28
updating stereo texture with eyeSeparation = 0.000000e+000, separation = 0.000000e+000, convergence = 0.000000e+000, active = 0
nvapi fetched screen width: 1920.000000, height: 1080.000000
HackerDevice::CreatePixelShader called with BytecodeLength = 940, handle = 00000000254F78F0, ClassLinkage = 0000000000000000
bytecode hash = 8704ffe1f1ae1118
shader registered for possible reloading: 8704ffe1f1ae1118_ps as bin -
returns result = 0, handle = 0000000001E3A9E8
HackerDevice::CreateVertexShader called with BytecodeLength = 1104, handle = 00000000254F78F0, ClassLinkage = 0000000000000000
bytecode hash = b2293ce2e61dfc49
shader registered for possible reloading: b2293ce2e61dfc49_vs as bin -
returns result = 0, handle = 0000000025501AE8
HackerDevice::CreatePixelShader called with BytecodeLength = 2340, handle = 000000002558C740, ClassLinkage = 0000000000000000
bytecode hash = a4918560526792e4
shader registered for possible reloading: a4918560526792e4_ps as bin -
returns result = 0, handle = 0000000025501C28
HackerDevice::CreatePixelShader called with BytecodeLength = 940, handle = 0000000025568FA0, ClassLinkage = 0000000000000000
bytecode hash = 8704ffe1f1ae1118
shader registered for possible reloading: 8704ffe1f1ae1118_ps as bin -
returns result = 0, handle = 00000000255019E8
HackerDXGISwapChain::SetFullscreenState(class HackerDXGISwapChain@0000000024573400) called with
Fullscreen = 0
Target = 0000000000000000
returns 0
HackerUnknown::Release(class HackerDXGISwapChain@0000000024573400), counter=1, this=0000000024573400
Shader (not fixed):
// ---- Created with 3Dmigoto v1.2.25 on Wed Jan 20 19:55:48 2016
@masterotaku: Yes, no change in 1.2.26 for your problem.
I took a quick look at this, and it is in fact what DarkStarSword noted, which is that it is using the length of 'color', instead of the length of 'xyzw'. As strrchr('.')
For now, just manually fix those to be (int4) instead. (or whatever the struct parameter size is. In this case it's int4 color;)
How many shaders are affected by this? I'm hesitant to make any code changes here without a game example to be able to test. You have run across a bug that is in the master source we got from Chiri, that spot has never changed.
@masterotaku: Yes, no change in 1.2.26 for your problem.
I took a quick look at this, and it is in fact what DarkStarSword noted, which is that it is using the length of 'color', instead of the length of 'xyzw'. As strrchr('.')
For now, just manually fix those to be (int4) instead. (or whatever the struct parameter size is. In this case it's int4 color;)
How many shaders are affected by this? I'm hesitant to make any code changes here without a game example to be able to test. You have run across a bug that is in the master source we got from Chiri, that spot has never changed.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
I didn't have time to test it thoroughly yesterday. I only tried Baten Kaitos and Zelda OOT (which has very few shaders), and only BK was affected. And it seemed random. Sometimes those same shaders were dumped correctly.
Today, I'll try to make them dump right, compare the code and post it. And I'll try it with more games. So I'll probably post again in around 12 hours.
I didn't have time to test it thoroughly yesterday. I only tried Baten Kaitos and Zelda OOT (which has very few shaders), and only BK was affected. And it seemed random. Sometimes those same shaders were dumped correctly.
Today, I'll try to make them dump right, compare the code and post it. And I'll try it with more games. So I'll probably post again in around 12 hours.
OK, this time I tested Zelda Twilight Princess, Baten Kaitos and Tales of Symphonia. I have uploaded the shaders here, logs included for every game: https://www.dropbox.com/s/djg6kuvpkjnugt8/bad_dolphin_shaders.7z?dl=0
For Zelda TP, I uploaded one shader with that int5 problem, and a different shader that even though it was dumped with a "beep", the content is wrong because the effect remains disabled ingame.
There are two folders for Baten Kaitos. One of them has the bad shader and the other has the good shader that randomly worked when I dumped it. This is interesting:
[code]r1.xyzw = (int5)clights[1].color;
r2.xyz = clights[1].pos.xyz + -r0.xyz;[/code]
vs
[code]r1.xyzw = (int4)clights[1].color.xyzw;
r2.xyz = clights[1].pos + -r0.xyz;[/code]
There are other similar lines in the shader.
For Tales of Symphonia, three bad shaders where the effects remained disabled after the "beep".
By the way, I'm using the 358.50 drivers with my gtx 760, if it's any help.
For Zelda TP, I uploaded one shader with that int5 problem, and a different shader that even though it was dumped with a "beep", the content is wrong because the effect remains disabled ingame.
There are two folders for Baten Kaitos. One of them has the bad shader and the other has the good shader that randomly worked when I dumped it. This is interesting:
@Oomek: Yep, bug. The Decompiler doesn't know how to handle this sort of reversed packed variables.
I think if you break the line into two:
[code]r0.x = r0.x / luminanceMax;
r0.y = r0.x / luminanceMin;
[/code]
Would you give me an example of how to swap a certain set of textures (5 to be precise) of the whole lot (around 20) tied to a specific texture slot, but only when one of the iniParamerer is set to 1? I've read the wiki page, but I didn't find it descriptive enough. I've got a shader which displays all the light sources, but at night one object has the emmisive textures burnt out to almost white. I would like to use custom textures for just that one object and only when iniParams.x is set to one. Thanks in advance.
Edit: or, if there is a way to set iniParam only when a texture with a certain hash is in use by the shader please let me know. I could then just adjust the brightness in the ps without even redoing the textures.
It would be awesome If I could just use that syntax:
[code]
[TextureOverride1]
Hash = 05fe12df
z = 1
[Present]
z = 0
[/code]
and then check the value of z in PS.
EDIT: It works! I forgot about a mandatory "checktextureoverride" call :)
[code]
[ShaderOverride1]
Hash = 602fcda7fc19cf7c
checktextureoverride = ps-t0
[/code]
Would you give me an example of how to swap a certain set of textures (5 to be precise) of the whole lot (around 20) tied to a specific texture slot, but only when one of the iniParamerer is set to 1? I've read the wiki page, but I didn't find it descriptive enough. I've got a shader which displays all the light sources, but at night one object has the emmisive textures burnt out to almost white. I would like to use custom textures for just that one object and only when iniParams.x is set to one. Thanks in advance.
Edit: or, if there is a way to set iniParam only when a texture with a certain hash is in use by the shader please let me know. I could then just adjust the brightness in the ps without even redoing the textures.
It would be awesome If I could just use that syntax:
[TextureOverride1]
Hash = 05fe12df
z = 1
[Present]
z = 0
and then check the value of z in PS.
EDIT: It works! I forgot about a mandatory "checktextureoverride" call :)
Well It would be to simple if that just worked as intended :)
Hashes of textures unfortuantely change depending on the game map. It results in dimming wrong ones because hashes of the lights I dimmed on one track are now connected to the lights I want to stay bright in another track.
I have the bad feeling that it's not something that can be overcome. Please tell me I'm wrong.
p.s. I've already tried track_texture_updates=1
Well It would be to simple if that just worked as intended :)
Hashes of textures unfortuantely change depending on the game map. It results in dimming wrong ones because hashes of the lights I dimmed on one track are now connected to the lights I want to stay bright in another track.
I have the bad feeling that it's not something that can be overcome. Please tell me I'm wrong.
[quote="Oomek"]I have the bad feeling that it's not something that can be overcome. Please tell me I'm wrong.[/quote]I'd have to study it to see what they are doing. You can get information about it in several ways:
- Dump out the textures with frame analysis and compare them to see what's different
- Look for the texture hashes in ShaderUsage.txt (only updated when dumping a shader), and look for the info about the hash (type=Texture2D...) and any operations 3DMigoto noticed being performed on it that might have invalidated the hash.
- Use Frame analysis' logging support to see how the textures are used throughout the frame
The track_texture_updates feature is to keep the texture hashes synchronised with their contents, but only when they are updated from the CPU - it will not update a texture hash if the GPU changed it (and we probably wouldn't want to either since these are mostly render targets where we don't want to match their contents).
If you find that the textures hold several lights and they are always consistently in the same place you could also check the texture coordinates in the shader. If they hold several lights but their placement can change dynamically things get... quite a bit more challenging.
Point is, I can't answer without knowing more.
Oomek said:I have the bad feeling that it's not something that can be overcome. Please tell me I'm wrong.
I'd have to study it to see what they are doing. You can get information about it in several ways:
- Dump out the textures with frame analysis and compare them to see what's different
- Look for the texture hashes in ShaderUsage.txt (only updated when dumping a shader), and look for the info about the hash (type=Texture2D...) and any operations 3DMigoto noticed being performed on it that might have invalidated the hash.
- Use Frame analysis' logging support to see how the textures are used throughout the frame
The track_texture_updates feature is to keep the texture hashes synchronised with their contents, but only when they are updated from the CPU - it will not update a texture hash if the GPU changed it (and we probably wouldn't want to either since these are mostly render targets where we don't want to match their contents).
If you find that the textures hold several lights and they are always consistently in the same place you could also check the texture coordinates in the shader. If they hold several lights but their placement can change dynamically things get... quite a bit more challenging.
Point is, I can't answer without knowing more.
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
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
Ah, right. I was about 1/3 of the way through fixing this. Let me see if I can finish this up.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
OK. Sorry for not not posting it before. I'll do it... in about almost 11 hours, when I'm home. I didn't have enough time this morning.
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
This includes Decompiler fixes to handle the default initializers for larger than 4 components. Tested on only a single game, but with float4x4 with initial values.
Should also be able to generate a shader for other variants, but still require hand fixes for those. Let me know when you find other variants and I can add them. I think this will allow CoH2 to be used now as well.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
edit: It works! This is a major update for me :D Thanks Bo3b for sorting it out.
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
I have a LG passive 3D TV and as you probably know this types of displays are not entirely supported by nvidia 3D vision. I can of course use EDID override and swap the eyes, or use the quality degrading 720p mode or mosaic mode with 3DTV Play. Would it be possible to add the support in 3Dmigoto for this kind of displays to allow playing games in native 3D 1080p horizontal interleaved mode? TAB mode would be the best if you want to avoid ghosting and preserve the maximum quality.
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
The time has come. Log:
Shader (not fixed):
Edit: I see that there is a new 3Dmigoto version now. It shouldn't affect this, right?
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
I took a quick look at this, and it is in fact what DarkStarSword noted, which is that it is using the length of 'color', instead of the length of 'xyzw'. As strrchr('.')
For now, just manually fix those to be (int4) instead. (or whatever the struct parameter size is. In this case it's int4 color;)
How many shaders are affected by this? I'm hesitant to make any code changes here without a game example to be able to test. You have run across a bug that is in the master source we got from Chiri, that spot has never changed.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
Today, I'll try to make them dump right, compare the code and post it. And I'll try it with more games. So I'll probably post again in around 12 hours.
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
For Zelda TP, I uploaded one shader with that int5 problem, and a different shader that even though it was dumped with a "beep", the content is wrong because the effect remains disabled ingame.
There are two folders for Baten Kaitos. One of them has the bad shader and the other has the good shader that randomly worked when I dumped it. This is interesting:
vs
There are other similar lines in the shader.
For Tales of Symphonia, three bad shaders where the effects remained disabled after the "beep".
By the way, I'm using the 358.50 drivers with my gtx 760, if it's any help.
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
Original ASM:
Recompiled ASM:
HLSL:
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
I think if you break the line into two:
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
Edit: or, if there is a way to set iniParam only when a texture with a certain hash is in use by the shader please let me know. I could then just adjust the brightness in the ps without even redoing the textures.
It would be awesome If I could just use that syntax:
and then check the value of z in PS.
EDIT: It works! I forgot about a mandatory "checktextureoverride" call :)
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
Hashes of textures unfortuantely change depending on the game map. It results in dimming wrong ones because hashes of the lights I dimmed on one track are now connected to the lights I want to stay bright in another track.
I have the bad feeling that it's not something that can be overcome. Please tell me I'm wrong.
p.s. I've already tried track_texture_updates=1
EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64
- Dump out the textures with frame analysis and compare them to see what's different
- Look for the texture hashes in ShaderUsage.txt (only updated when dumping a shader), and look for the info about the hash (type=Texture2D...) and any operations 3DMigoto noticed being performed on it that might have invalidated the hash.
- Use Frame analysis' logging support to see how the textures are used throughout the frame
The track_texture_updates feature is to keep the texture hashes synchronised with their contents, but only when they are updated from the CPU - it will not update a texture hash if the GPU changed it (and we probably wouldn't want to either since these are mostly render targets where we don't want to match their contents).
If you find that the textures hold several lights and they are always consistently in the same place you could also check the texture coordinates in the shader. If they hold several lights but their placement can change dynamically things get... quite a bit more challenging.
Point is, I can't answer without knowing more.
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