3Dmigoto now open-source...
  56 / 141    
@DarkStarSword May I know when you are planning to implement the blending states override?
@DarkStarSword May I know when you are planning to implement the blending states override?

EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64

Posted 02/14/2016 05:06 PM   
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: [code]// ---- Created with 3Dmigoto v1.2.29 on Mon Feb 15 14:43:57 2016 cbuffer _Globals : register(b0) { bool PhyreContextSwitches : packoffset(c0); float3 DeferredPos : packoffset(c0.y); float3 DeferredDir : packoffset(c1); float4 DeferredDiffuseColor : packoffset(c2); float4 DeferredSpecularColor : packoffset(c3); float4 DeferredSpotAngles : packoffset(c4); float4 DeferredAttenParams : packoffset(c5); float4 DeferredAreaParams : packoffset(c6); float4 DeferredShadowMask : packoffset(c7); float DeferredShadowAlpha : packoffset(c8); float4x4 DeferredWorldTransform : packoffset(c9); float4x4 DeferredInverseWorldTransform : packoffset(c13); float4x4 DeferredShadowMatrix : packoffset(c17); float4x4 DeferredSplit0Transform : packoffset(c21); float4x4 DeferredSplit1Transform : packoffset(c25); float4x4 DeferredSplit2Transform : packoffset(c29); float4x4 DeferredSplit3Transform : packoffset(c33); float4 DeferredSplitDistances : packoffset(c37); float3 DeferredBoxSize : packoffset(c38); uint LightListSize : packoffset(c38.w); float2 Split0ShadowBufferInvSize : packoffset(c39); float2 Split1ShadowBufferInvSize : packoffset(c39.z); float2 Split2ShadowBufferInvSize : packoffset(c40); float2 Split3ShadowBufferInvSize : packoffset(c40.z); float3 IrradianceHalfCellSize : packoffset(c41); float IrradianceScale : packoffset(c41.w); float IrradianceBias : packoffset(c42); float2 DofFocusScale : packoffset(c42.y); float3 AOColor : packoffset(c43) = {0,0,0}; float LightRange : packoffset(c43.w) = {0}; float3 eyeDirectionWS : packoffset(c44); float3 AOSnowColor : packoffset(c45) = {0.100000001,0.100000001,0.159999996}; } cbuffer SceneWideParameterConstantBuffer : register(b1) { float4x4 ViewProjection : packoffset(c0); float4x4 View : packoffset(c4); float4x4 Projection : packoffset(c8); float4x4 ViewInverse : packoffset(c12); float3 EyePosition : packoffset(c16); float cameraNearTimesFar : packoffset(c16.w); float3 GlobalAmbientColor : packoffset(c17); float cameraFarMinusNear : packoffset(c17.w); float2 cameraNearFar : packoffset(c18); float2 ViewportWidthHeight : packoffset(c18.z); float2 screenWidthHeightInv : packoffset(c19); float2 screenWidthHeight : packoffset(c19.z); float4x4 PrevViewProj : packoffset(c20); float4 Jitter : packoffset(c24); float2 InvProjXY : packoffset(c25); uint PointLightCount : packoffset(c25.z); uint SpotLightCount : packoffset(c25.w); uint FoliageSpheresCount : packoffset(c26); float time : packoffset(c26.y); float2 CubeFadeValues : packoffset(c26.z); float4 FogParameters0 : packoffset(c27); float4 FogParameters1 : packoffset(c28); float4 FogParameters2 : packoffset(c29); float4 FogParameters3 : packoffset(c30); float3 CubeSunDir : packoffset(c31); float padding0 : packoffset(c31.w); float3 CubeSunColor : packoffset(c32); float padding1 : packoffset(c32.w); float2 WindDirection : packoffset(c33); } cbuffer LightListConstantBuffer : register(b2) { struct { float4 position; float4 color; float4 direction; float4 params; } LightList[32] : packoffset(c0); } SamplerState PointSampler_s : register(s0); SamplerState TrilinearSampler_s : register(s1); SamplerState LinearSampler_s : register(s2); Texture2D<uint> LightMaskTexture : register(t0); Texture2D<float4> EnvLookupTexture : register(t1); TextureCube<float4> IrradianceEnvSampler0 : register(t2); TextureCube<float4> IrradianceEnvSampler1 : register(t3); TextureCube<float4> SpecularEnvSampler0 : register(t4); TextureCube<float4> SpecularEnvSampler1 : register(t5); Texture2D<float> LinearDepthBuffer : register(t6); Texture2D<float4> GbufferColorBuffer : register(t7); Texture2D<float4> GbufferNormalBuffer : register(t8); Texture2D<float4> GbufferExtraBuffer : register(t9); Texture2D<float4> AOBuffer : register(t10); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float2 v1 : TEXCOORD0, out float3 o0 : SV_TARGET0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; uint4 bitmask, uiDest; float4 fDest; r0.xy = ViewportWidthHeight.xy * v1.xy; r0.xy = (int2)r0.xy; r0.xy = (uint2)r0.xy >> 4; r0.zw = float2(0,0); r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw; //---------------------------invalid subscript r1.xyzw = LinearDepthBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; //-invalid subscript r0.y = cameraNearFar.y * r1.x; r0.z = cmp(LightRange < r0.y); r0.x = r0.z ? 0 : r0.x; r0.zw = v1.xy * float2(1,-1) + float2(0,1); r0.zw = r0.zw * float2(2,2) + float2(-1,-1); r0.zw = InvProjXY.xy * r0.zw; r1.xy = r0.zw * r0.yy; r1.z = -r0.y; r1.w = 1; r2.x = dot(r1.xyzw, ViewInverse._m00_m10_m20_m30); r2.y = dot(r1.xyzw, ViewInverse._m01_m11_m21_m31); r2.z = dot(r1.xyzw, ViewInverse._m02_m12_m22_m32); r0.yzw = EyePosition.xyz + -r2.xyz; r1.x = dot(r0.yzw, r0.yzw); r1.x = rsqrt(r1.x); r1.yzw = r1.xxx * r0.yzw; r3.xyzw = GbufferNormalBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; r4.xyzw = GbufferColorBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; r5.xyzw = GbufferExtraBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; r6.xyzw = AOBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; r3.xy = r3.xy * float2(2,2) + float2(-1,-1); r6.yzw = float3(1,1,1) + -abs(r3.xyx); r7.z = r6.y + -abs(r3.y); r2.w = cmp(r7.z < 0); r3.zw = cmp(r3.xy >= float2(0,0)); r3.zw = r3.zw ? float2(1,1) : float2(-1,-1); r3.zw = r6.zw * r3.zw; r7.xy = r2.ww ? r3.zw : r3.xy; r2.w = dot(r7.xyz, r7.xyz); r2.w = rsqrt(r2.w); r3.xyz = r7.xyz * r2.www; r2.w = max(0.0799999982, r5.y); r3.w = r2.w * r2.w; r4.w = r3.w * r3.w; r3.w = r3.w * r3.w + -1; r2.w = r2.w * 0.5 + 0.5; r2.w = r2.w * r2.w; r6.y = r2.w * r2.w; r2.w = -r2.w * r2.w + 1; r6.zw = float2(0.959999979,16) * r5.xz; r5.z = dot(r3.xyz, r1.yzw); r7.x = saturate(r5.z); r7.z = r7.x * r7.x; r7.z = r2.w * r7.z + r6.y; r7.z = sqrt(r7.z); r7.z = r7.x + r7.z; r7.z = 1 / r7.z; r4.w = r7.z * r4.w; r4.w = 0.318309873 * r4.w; r7.z = r7.x + r6.x; r7.z = r7.z * r7.z + r6.x; r7.z = saturate(-1 + r7.z); r7.y = r5.y; r8.xyzw = EnvLookupTexture.SampleLevel(LinearSampler_s, r7.xy, 0).xyzw; r5.x = r8.y * r5.x; r5.x = r8.x * 0.0399999991 + r5.x; r5.y = r5.z + r5.z; r8.xyz = r3.xzy * -r5.yyy + r1.ywz; r5.y = 2 / r7.y; r5.y = -1.99998999 + r5.y; r5.y = log2(r5.y); r5.y = r5.y * -1.11571777 + 5.5; r5.y = max(0, r5.y); r5.z = max(abs(r8.x), abs(r8.z)); r5.z = max(r5.z, abs(r8.y)); r7.x = exp2(r5.y); r7.x = -r7.x * 0.0078125 + 1; r9.xyz = cmp(r5.zzz != abs(r8.xyz)); r7.xyw = r8.xyz * r7.xxx; r7.xyw = r9.xyz ? r7.xyw : r8.xyz; r7.xyw = -r7.xyw; r8.xyzw = SpecularEnvSampler0.SampleLevel(TrilinearSampler_s, r7.xyw, r5.y).xyzw; r9.xyzw = IrradianceEnvSampler0.SampleLevel(LinearSampler_s, r3.xyz, 0).xyzw; r9.xyz = CubeFadeValues.xxx * r9.xyz; r9.xyz = float3(3.14159274,3.14159274,3.14159274) * r9.xyz; r8.xyz = CubeFadeValues.xxx * r8.xyz; r5.z = cmp(0 < CubeFadeValues.y); if (r5.z != 0) { r10.xyzw = SpecularEnvSampler1.SampleLevel(TrilinearSampler_s, r7.xyw, r5.y).xyzw; r11.xyzw = IrradianceEnvSampler1.SampleLevel(LinearSampler_s, r3.xyz, 0).xyzw; r7.xyw = CubeFadeValues.yyy * r11.xyz; r9.xyz = r7.xyw * float3(3.14159274,3.14159274,3.14159274) + r9.xyz; r8.xyz = r10.xyz * CubeFadeValues.yyy + r8.xyz; } r5.y = saturate(dot(r3.xyz, CubeSunDir.xyz)); r0.yzw = r0.yzw * r1.xxx + CubeSunDir.xyz; r1.x = dot(r0.yzw, r0.yzw); r1.x = rsqrt(r1.x); r0.yzw = r1.xxx * r0.yzw; r1.x = saturate(dot(r3.xyz, r0.yzw)); r0.y = saturate(dot(CubeSunDir.xyz, r0.yzw)); r0.z = r1.x * r1.x; r0.z = r0.z * r3.w + 1; r0.z = r0.z * r0.z; r0.z = 1 / r0.z; r0.z = r4.w * r0.z; r0.w = r5.y * r5.y; r0.w = r0.w * r2.w + r6.y; r0.w = (uint)r0.w >> 1; r0.w = (int)r0.w + 0x1fbd1df5; r0.w = r5.y + r0.w; r0.w = 1 / r0.w; r0.y = 1 + -r0.y; r1.x = r0.y * r0.y; r1.x = r1.x * r1.x; r0.y = r1.x * r0.y; r0.y = r6.z * r0.y + 0.0399999991; r7.xyw = r3.xyz * float3(0.200000003,0.200000003,0.200000003) + CubeSunDir.xyz; r1.x = saturate(dot(-r7.xyw, r1.yzw)); r5.z = saturate(dot(-CubeSunDir.xyz, r3.xyz)); r1.x = r1.x * r1.x; r5.z = r5.z * r5.w; r1.x = r1.x * r5.w + r5.z; r1.x = r5.y + r1.x; r7.xyw = CubeSunColor.xyz * r1.xxx + r9.xyz; r0.z = r0.z * r0.w; r0.y = r0.z * r0.y; r0.y = r0.y * r5.y; r0.yzw = CubeSunColor.xyz * r0.yyy; r0.yzw = r8.xyz * r5.xxx + r0.yzw; r1.x = cmp(r5.w == 0.000000); r5.xyz = r7.xyw; r8.xyzw = r0.yzwx; while (true) { if (r8.w == 0) break; r9.x = (uint)r8.w << 16; r9.y = r9.x ? r9.x : r8.w; r9.z = (uint)r9.y << 8; r9.xw = r9.xx ? float2(15,7) : float2(31,23); r9.xy = r9.zz ? r9.wz : r9.xy; r9.z = (uint)r9.y << 4; r9.w = (int)r9.x + -4; r9.xy = r9.zz ? r9.wz : r9.xy; r9.z = (uint)r9.y << 2; r9.w = (int)r9.x + -2; r9.xy = r9.zz ? r9.wz : r9.xy; r9.y = (uint)r9.y << 1; r9.z = (int)r9.x + -1; r9.x = r9.y ? r9.z : r9.x; r9.x = r8.w ? r9.x : -1; r9.y = 1 << (int)r9.x; r9.y = ~(int)r9.y; r9.y = (int)r8.w & (int)r9.y; r9.x = (uint)r9.x << 2; r10.xyz = LightList[r9.x].position.xyz + -r2.xyz; r9.z = dot(r10.xyz, r10.xyz); r9.w = rsqrt(r9.z); r11.xyz = r10.xyz * r9.www; r10.w = saturate(dot(r3.xyz, r11.xyz)); r11.w = saturate(dot(r11.xyz, LightList[r9.x].direction.xyz)); r12.x = -LightList[r9.x].params.w * LightList[r9.x].params.z; r11.w = saturate(r11.w * LightList[r9.x].params.z + r12.x); r11.w = r11.w * r11.w; r12.x = LightList[r9.x].params.y + -LightList[r9.x].params.x; r9.z = r9.w * r9.z + -LightList[r9.x].params.x; r12.x = 1 / r12.x; r9.z = saturate(r12.x * r9.z); r12.x = r9.z * -2 + 3; r9.z = r9.z * r9.z; r9.z = -r12.x * r9.z + 1; r9.z = r11.w * r9.z; r12.xyz = r3.xyz * float3(0.200000003,0.200000003,0.200000003) + r11.xyz; r11.w = saturate(dot(-r12.xyz, r1.yzw)); r12.x = saturate(dot(-r11.xyz, r3.xyz)); r11.w = r11.w * r11.w + r12.x; r11.w = r11.w * r5.w; r11.w = r11.w * r9.z; r12.xyz = r11.www * LightList[r9.x].color.xyz + r5.xyz; r9.z = r9.z * r10.w; r11.w = cmp(0 >= r9.z); r11.w = r1.x ? r11.w : 0; if (r11.w != 0) { r5.xyz = r12.xyz; r8.w = r9.y; continue; } r10.xyz = r10.xyz * r9.www + r1.yzw; r9.w = dot(r10.xyz, r10.xyz); r9.w = rsqrt(r9.w); r10.xyz = r10.xyz * r9.www; r9.w = saturate(dot(r3.xyz, r10.xyz)); r10.x = saturate(dot(r11.xyz, r10.xyz)); r9.w = r9.w * r9.w; r9.w = r9.w * r3.w + 1; r9.w = r9.w * r9.w; r9.w = 1 / r9.w; r9.w = r9.w * r4.w; r10.x = 1 + -r10.x; r10.y = r10.x * r10.x; r10.y = r10.y * r10.y; r10.x = r10.y * r10.x; r10.x = r6.z * r10.x + 0.0399999991; r10.y = r10.w * r10.w; r10.y = r10.y * r2.w + r6.y; r10.y = (uint)r10.y >> 1; r10.y = (int)r10.y + 0x1fbd1df5; r10.y = r10.w + r10.y; r10.y = 1 / r10.y; r9.w = r10.y * r9.w; r9.w = r9.w * r10.x; r9.w = r9.w * r9.z; r5.xyz = LightList[r9.x].color.xyz * r9.zzz + r12.xyz; r8.xyz = LightList[r9.x].color.xyz * r9.www + r8.xyz; r8.w = r9.y; } r0.x = 1 + -r6.x; r0.xyz = AOColor.xyz * r0.xxx; r0.xyz = r5.xyz * r6.xxx + r0.xyz; r1.xyz = r8.xyz * r7.zzz; r0.xyz = r0.xyz * r4.xyz; r0.xyz = r0.xyz * float3(0.305577457,0.305577457,0.305577457) + r1.xyz; o0.xyz = r4.xyz * r6.www + r0.xyz; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546 // // using 3Dmigoto v1.2.29 on Mon Feb 15 14:43:57 2016 // // // Buffer Definitions: // // cbuffer $Globals // { // // bool PhyreContextSwitches; // Offset: 0 Size: 4 [unused] // float3 DeferredPos; // Offset: 4 Size: 12 [unused] // float3 DeferredDir; // Offset: 16 Size: 12 [unused] // float4 DeferredDiffuseColor; // Offset: 32 Size: 16 [unused] // float4 DeferredSpecularColor; // Offset: 48 Size: 16 [unused] // float4 DeferredSpotAngles; // Offset: 64 Size: 16 [unused] // float4 DeferredAttenParams; // Offset: 80 Size: 16 [unused] // float4 DeferredAreaParams; // Offset: 96 Size: 16 [unused] // float4 DeferredShadowMask; // Offset: 112 Size: 16 [unused] // float DeferredShadowAlpha; // Offset: 128 Size: 4 [unused] // float4x4 DeferredWorldTransform; // Offset: 144 Size: 64 [unused] // float4x4 DeferredInverseWorldTransform;// Offset: 208 Size: 64 [unused] // float4x4 DeferredShadowMatrix; // Offset: 272 Size: 64 [unused] // float4x4 DeferredSplit0Transform; // Offset: 336 Size: 64 [unused] // float4x4 DeferredSplit1Transform; // Offset: 400 Size: 64 [unused] // float4x4 DeferredSplit2Transform; // Offset: 464 Size: 64 [unused] // float4x4 DeferredSplit3Transform; // Offset: 528 Size: 64 [unused] // float4 DeferredSplitDistances; // Offset: 592 Size: 16 [unused] // float3 DeferredBoxSize; // Offset: 608 Size: 12 [unused] // uint LightListSize; // Offset: 620 Size: 4 [unused] // float2 Split0ShadowBufferInvSize; // Offset: 624 Size: 8 [unused] // float2 Split1ShadowBufferInvSize; // Offset: 632 Size: 8 [unused] // float2 Split2ShadowBufferInvSize; // Offset: 640 Size: 8 [unused] // float2 Split3ShadowBufferInvSize; // Offset: 648 Size: 8 [unused] // float3 IrradianceHalfCellSize; // Offset: 656 Size: 12 [unused] // float IrradianceScale; // Offset: 668 Size: 4 [unused] // float IrradianceBias; // Offset: 672 Size: 4 [unused] // float2 DofFocusScale; // Offset: 676 Size: 8 [unused] // float3 AOColor; // Offset: 688 Size: 12 // = 0x00000000 0x00000000 0x00000000 // float LightRange; // Offset: 700 Size: 4 // = 0x00000000 // float3 eyeDirectionWS; // Offset: 704 Size: 12 [unused] // float3 AOSnowColor; // Offset: 720 Size: 12 [unused] // = 0x3dcccccd 0x3dcccccd 0x3e23d70a // // } // // cbuffer SceneWideParameterConstantBuffer // { // // float4x4 ViewProjection; // Offset: 0 Size: 64 [unused] // float4x4 View; // Offset: 64 Size: 64 [unused] // float4x4 Projection; // Offset: 128 Size: 64 [unused] // float4x4 ViewInverse; // Offset: 192 Size: 64 // float3 EyePosition; // Offset: 256 Size: 12 // float cameraNearTimesFar; // Offset: 268 Size: 4 [unused] // float3 GlobalAmbientColor; // Offset: 272 Size: 12 [unused] // float cameraFarMinusNear; // Offset: 284 Size: 4 [unused] // float2 cameraNearFar; // Offset: 288 Size: 8 // float2 ViewportWidthHeight; // Offset: 296 Size: 8 // float2 screenWidthHeightInv; // Offset: 304 Size: 8 [unused] // float2 screenWidthHeight; // Offset: 312 Size: 8 [unused] // float4x4 PrevViewProj; // Offset: 320 Size: 64 [unused] // float4 Jitter; // Offset: 384 Size: 16 [unused] // float2 InvProjXY; // Offset: 400 Size: 8 // uint PointLightCount; // Offset: 408 Size: 4 [unused] // uint SpotLightCount; // Offset: 412 Size: 4 [unused] // uint FoliageSpheresCount; // Offset: 416 Size: 4 [unused] // float time; // Offset: 420 Size: 4 [unused] // float2 CubeFadeValues; // Offset: 424 Size: 8 // float4 FogParameters0; // Offset: 432 Size: 16 [unused] // float4 FogParameters1; // Offset: 448 Size: 16 [unused] // float4 FogParameters2; // Offset: 464 Size: 16 [unused] // float4 FogParameters3; // Offset: 480 Size: 16 [unused] // float3 CubeSunDir; // Offset: 496 Size: 12 // float padding0; // Offset: 508 Size: 4 [unused] // float3 CubeSunColor; // Offset: 512 Size: 12 // float padding1; // Offset: 524 Size: 4 [unused] // float2 WindDirection; // Offset: 528 Size: 8 [unused] // // } // // cbuffer LightListConstantBuffer // { // // struct // { // // float4 position; // Offset: 0 // float4 color; // Offset: 16 // float4 direction; // Offset: 32 // float4 params; // Offset: 48 // // } LightList[32]; // Offset: 0 Size: 2048 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // PointSampler sampler NA NA 0 1 // TrilinearSampler sampler NA NA 1 1 // LinearSampler sampler NA NA 2 1 // LightMaskTexture texture uint 2d 0 1 // EnvLookupTexture texture float4 2d 1 1 // IrradianceEnvSampler0 texture float4 cube 2 1 // IrradianceEnvSampler1 texture float4 cube 3 1 // SpecularEnvSampler0 texture float4 cube 4 1 // SpecularEnvSampler1 texture float4 cube 5 1 // LinearDepthBuffer texture float 2d 6 1 // GbufferColorBuffer texture float4 2d 7 1 // GbufferNormalBuffer texture float4 2d 8 1 // GbufferExtraBuffer texture float4 2d 9 1 // AOBuffer texture float4 2d 10 1 // $Globals cbuffer NA NA 0 1 // SceneWideParameterConstantBuffer cbuffer NA NA 1 1 // LightListConstantBuffer cbuffer NA NA 2 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float // TEXCOORD 0 xy 1 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_TARGET 0 xyz 0 TARGET float xyz // ps_4_0 dcl_constantbuffer cb0[44], immediateIndexed dcl_constantbuffer cb1[33], immediateIndexed dcl_constantbuffer cb2[128], dynamicIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default dcl_resource_texture2d (uint,uint,uint,uint) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_resource_texturecube (float,float,float,float) t2 dcl_resource_texturecube (float,float,float,float) t3 dcl_resource_texturecube (float,float,float,float) t4 dcl_resource_texturecube (float,float,float,float) t5 dcl_resource_texture2d (float,float,float,float) t6 dcl_resource_texture2d (float,float,float,float) t7 dcl_resource_texture2d (float,float,float,float) t8 dcl_resource_texture2d (float,float,float,float) t9 dcl_resource_texture2d (float,float,float,float) t10 dcl_input_ps linear v1.xy dcl_output o0.xyz dcl_temps 13 mul r0.xy, v1.xyxx, cb1[18].zwzz ftoi r0.xy, r0.xyxx ushr r0.xy, r0.xyxx, l(4) mov r0.zw, l(0,0,0,0) ld r0.xyzw, r0.xyzw, t0.xyzw sample_l r1.xyzw, v1.xyxx, t6.xyzw, s0, l(0.000000) mul r0.y, r1.x, cb1[18].y lt r0.z, cb0[43].w, r0.y movc r0.x, r0.z, l(0), r0.x mad r0.zw, v1.xxxy, l(0.000000, 0.000000, 1.000000, -1.000000), l(0.000000, 0.000000, 0.000000, 1.000000) mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) mul r0.zw, r0.zzzw, cb1[25].xxxy mul r1.xy, r0.yyyy, r0.zwzz mov r1.z, -r0.y mov r1.w, l(1.000000) dp4 r2.x, r1.xyzw, cb1[12].xyzw dp4 r2.y, r1.xyzw, cb1[13].xyzw dp4 r2.z, r1.xyzw, cb1[14].xyzw add r0.yzw, -r2.xxyz, cb1[16].xxyz dp3 r1.x, r0.yzwy, r0.yzwy rsq r1.x, r1.x mul r1.yzw, r0.yyzw, r1.xxxx sample_l r3.xyzw, v1.xyxx, t8.xyzw, s0, l(0.000000) sample_l r4.xyzw, v1.xyxx, t7.xyzw, s0, l(0.000000) sample_l r5.xyzw, v1.xyxx, t9.xyzw, s0, l(0.000000) sample_l r6.xyzw, v1.xyxx, t10.xyzw, s0, l(0.000000) mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) add r6.yzw, -|r3.xxyx|, l(0.000000, 1.000000, 1.000000, 1.000000) add r7.z, -|r3.y|, r6.y lt r2.w, r7.z, l(0.000000) ge r3.zw, r3.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) movc r3.zw, r3.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) mul r3.zw, r3.zzzw, r6.zzzw movc r7.xy, r2.wwww, r3.zwzz, r3.xyxx dp3 r2.w, r7.xyzx, r7.xyzx rsq r2.w, r2.w mul r3.xyz, r2.wwww, r7.xyzx max r2.w, r5.y, l(0.080000) mul r3.w, r2.w, r2.w mul r4.w, r3.w, r3.w mad r3.w, r3.w, r3.w, l(-1.000000) mad r2.w, r2.w, l(0.500000), l(0.500000) mul r2.w, r2.w, r2.w mul r6.y, r2.w, r2.w mad r2.w, -r2.w, r2.w, l(1.000000) mul r6.zw, r5.xxxz, l(0.000000, 0.000000, 0.960000, 16.000000) dp3 r5.z, r3.xyzx, r1.yzwy mov_sat r7.x, r5.z mul r7.z, r7.x, r7.x mad r7.z, r2.w, r7.z, r6.y sqrt r7.z, r7.z add r7.z, r7.z, r7.x div r7.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z mul r4.w, r4.w, r7.z mul r4.w, r4.w, l(0.318309873) add r7.z, r6.x, r7.x mad r7.z, r7.z, r7.z, r6.x add_sat r7.z, r7.z, l(-1.000000) mov r7.y, r5.y sample_l r8.xyzw, r7.xyxx, t1.xyzw, s2, l(0.000000) mul r5.x, r5.x, r8.y mad r5.x, r8.x, l(0.040000), r5.x add r5.y, r5.z, r5.z mad r8.xyz, r3.xzyx, -r5.yyyy, r1.ywzy div r5.y, l(2.000000), r7.y add r5.y, r5.y, l(-1.999990) log r5.y, r5.y mad r5.y, r5.y, l(-1.11571777), l(5.500000) max r5.y, r5.y, l(0.000000) max r5.z, |r8.z|, |r8.x| max r5.z, |r8.y|, r5.z exp r7.x, r5.y mad r7.x, -r7.x, l(0.00781250000), l(1.000000) ne r9.xyz, r5.zzzz, |r8.xyzx| mul r7.xyw, r7.xxxx, r8.xyxz movc r7.xyw, r9.xyxz, r7.xyxw, r8.xyxz mov r7.xyw, -r7.xyxw sample_l r8.xyzw, r7.xywx, t4.xyzw, s1, r5.y sample_l r9.xyzw, r3.xyzx, t2.xyzw, s2, l(0.000000) mul r9.xyz, r9.xyzx, cb1[26].zzzz mul r9.xyz, r9.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000) mul r8.xyz, r8.xyzx, cb1[26].zzzz lt r5.z, l(0.000000), cb1[26].w if_nz r5.z sample_l r10.xyzw, r7.xywx, t5.xyzw, s1, r5.y sample_l r11.xyzw, r3.xyzx, t3.xyzw, s2, l(0.000000) mul r7.xyw, r11.xyxz, cb1[26].wwww mad r9.xyz, r7.xywx, l(3.14159274, 3.14159274, 3.14159274, 0.000000), r9.xyzx mad r8.xyz, r10.xyzx, cb1[26].wwww, r8.xyzx endif dp3_sat r5.y, r3.xyzx, cb1[31].xyzx mad r0.yzw, r0.yyzw, r1.xxxx, cb1[31].xxyz dp3 r1.x, r0.yzwy, r0.yzwy rsq r1.x, r1.x mul r0.yzw, r0.yyzw, r1.xxxx dp3_sat r1.x, r3.xyzx, r0.yzwy dp3_sat r0.y, cb1[31].xyzx, r0.yzwy mul r0.z, r1.x, r1.x mad r0.z, r0.z, r3.w, l(1.000000) mul r0.z, r0.z, r0.z div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z mul r0.z, r0.z, r4.w mul r0.w, r5.y, r5.y mad r0.w, r0.w, r2.w, r6.y ishr r0.w, r0.w, l(1) iadd r0.w, r0.w, l(0x1fbd1df5) add r0.w, r0.w, r5.y div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w add r0.y, -r0.y, l(1.000000) mul r1.x, r0.y, r0.y mul r1.x, r1.x, r1.x mul r0.y, r0.y, r1.x mad r0.y, r6.z, r0.y, l(0.040000) mad r7.xyw, r3.xyxz, l(0.200000, 0.200000, 0.000000, 0.200000), cb1[31].xyxz dp3_sat r1.x, -r7.xywx, r1.yzwy dp3_sat r5.z, -cb1[31].xyzx, r3.xyzx mul r1.x, r1.x, r1.x mul r5.z, r5.w, r5.z mad r1.x, r1.x, r5.w, r5.z add r1.x, r1.x, r5.y mad r7.xyw, cb1[32].xyxz, r1.xxxx, r9.xyxz mul r0.z, r0.w, r0.z mul r0.y, r0.y, r0.z mul r0.y, r5.y, r0.y mul r0.yzw, r0.yyyy, cb1[32].xxyz mad r0.yzw, r8.xxyz, r5.xxxx, r0.yyzw eq r1.x, r5.w, l(0.000000) mov r5.xyz, r7.xywx mov r8.xyzw, r0.yzwx loop breakc_z r8.w ishl r9.x, r8.w, l(16) movc r9.y, r9.x, r9.x, r8.w ishl r9.z, r9.y, l(8) movc r9.xw, r9.xxxx, l(15,0,0,7), l(31,0,0,23) movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx ishl r9.z, r9.y, l(4) iadd r9.w, r9.x, l(-4) movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx ishl r9.z, r9.y, l(2) iadd r9.w, r9.x, l(-2) movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx ishl r9.y, r9.y, l(1) iadd r9.z, r9.x, l(-1) movc r9.x, r9.y, r9.z, r9.x movc r9.x, r8.w, r9.x, l(-1) ishl r9.y, l(1), r9.x not r9.y, r9.y and r9.y, r8.w, r9.y ishl r9.x, r9.x, l(2) add r10.xyz, -r2.xyzx, cb2[r9.x + 0].xyzx dp3 r9.z, r10.xyzx, r10.xyzx rsq r9.w, r9.z mul r11.xyz, r9.wwww, r10.xyzx dp3_sat r10.w, r3.xyzx, r11.xyzx dp3_sat r11.w, r11.xyzx, cb2[r9.x + 2].xyzx mul r12.x, cb2[r9.x + 3].z, -cb2[r9.x + 3].w mad_sat r11.w, r11.w, cb2[r9.x + 3].z, r12.x mul r11.w, r11.w, r11.w add r12.x, -cb2[r9.x + 3].x, cb2[r9.x + 3].y mad r9.z, r9.w, r9.z, -cb2[r9.x + 3].x div r12.x, l(1.000000, 1.000000, 1.000000, 1.000000), r12.x mul_sat r9.z, r9.z, r12.x mad r12.x, r9.z, l(-2.000000), l(3.000000) mul r9.z, r9.z, r9.z mad r9.z, -r12.x, r9.z, l(1.000000) mul r9.z, r9.z, r11.w mad r12.xyz, r3.xyzx, l(0.200000, 0.200000, 0.200000, 0.000000), r11.xyzx dp3_sat r11.w, -r12.xyzx, r1.yzwy dp3_sat r12.x, -r11.xyzx, r3.xyzx mad r11.w, r11.w, r11.w, r12.x mul r11.w, r5.w, r11.w mul r11.w, r9.z, r11.w mad r12.xyz, r11.wwww, cb2[r9.x + 1].xyzx, r5.xyzx mul r9.z, r10.w, r9.z ge r11.w, l(0.000000), r9.z and r11.w, r1.x, r11.w if_nz r11.w mov r5.xyz, r12.xyzx mov r8.w, r9.y continue endif mad r10.xyz, r10.xyzx, r9.wwww, r1.yzwy dp3 r9.w, r10.xyzx, r10.xyzx rsq r9.w, r9.w mul r10.xyz, r9.wwww, r10.xyzx dp3_sat r9.w, r3.xyzx, r10.xyzx dp3_sat r10.x, r11.xyzx, r10.xyzx mul r9.w, r9.w, r9.w mad r9.w, r9.w, r3.w, l(1.000000) mul r9.w, r9.w, r9.w div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w mul r9.w, r4.w, r9.w add r10.x, -r10.x, l(1.000000) mul r10.y, r10.x, r10.x mul r10.y, r10.y, r10.y mul r10.x, r10.x, r10.y mad r10.x, r6.z, r10.x, l(0.040000) mul r10.y, r10.w, r10.w mad r10.y, r10.y, r2.w, r6.y ishr r10.y, r10.y, l(1) iadd r10.y, r10.y, l(0x1fbd1df5) add r10.y, r10.y, r10.w div r10.y, l(1.000000, 1.000000, 1.000000, 1.000000), r10.y mul r9.w, r9.w, r10.y mul r9.w, r10.x, r9.w mul r9.w, r9.z, r9.w mad r5.xyz, cb2[r9.x + 1].xyzx, r9.zzzz, r12.xyzx mad r8.xyz, cb2[r9.x + 1].xyzx, r9.wwww, r8.xyzx mov r8.w, r9.y endloop add r0.x, -r6.x, l(1.000000) mul r0.xyz, r0.xxxx, cb0[43].xyzx mad r0.xyz, r5.xyzx, r6.xxxx, r0.xyzx mul r1.xyz, r7.zzzz, r8.xyzx mul r0.xyz, r4.xyzx, r0.xyzx mad r0.xyz, r0.xyzx, l(0.305577457, 0.305577457, 0.305577457, 0.000000), r1.xyzx mad o0.xyz, r4.xyzx, r6.wwww, r0.xyzx ret // Approximately 219 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] 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: [code]// ---- Created with 3Dmigoto v1.2.27 on Sun Feb 07 00:11:44 2016 cbuffer _Globals : register(b0) { float4x4 ScreenToWorldMatrix : packoffset(c0); float4 SpherePositionRadius : packoffset(c4); bool bDecompressSceneColor : packoffset(c5); float4 LightColorAndFalloffExponent : packoffset(c6); float3 DistanceFieldParameters : packoffset(c7); float4x4 ScreenToShadowMatrix : packoffset(c8); float4 ShadowBufferAndTexelSize : packoffset(c12); float ShadowOverrideFactor : packoffset(c13); bool bReceiveDynamicShadows : packoffset(c13.y); bool bEnableDistanceShadowFading : packoffset(c13.z); float2 DistanceFadeParameters : packoffset(c14); float4 DeferredRenderingParameters : packoffset(c15); float4 UVScaleBias : packoffset(c16); int MinZ : packoffset(c17); float4 ClearColor : packoffset(c18); float4 LevelVolumeDimensions : packoffset(c19); float4 LevelVolumePosition : packoffset(c20); float4 VoxelSizeUVW : packoffset(c21); float4 VoxelSizeXYZ : packoffset(c22); uint LightID : packoffset(c23); struct { float3 WorldPosition; float InvRadius; float3 Color; float FallOffExponent; float3 Direction; float SourceLength; float2 SpotAngles; float2 MinShadowOpacity; float SourceRadius; float MinRoughness; float CharacterLight; float InvSquaredFalloff; uint LightID; float3 Padding; } LightProperties : packoffset(c24); float LightingOptions : packoffset(c30); } cbuffer PSOffsetConstants : register(b2) { float4 ScreenPositionScaleBias : packoffset(c0); float4 MinZ_MaxZRatio : packoffset(c1); float NvStereoEnabled : packoffset(c2); float4 DiffuseOverrideParameter : packoffset(c3); float4 SpecularOverrideParameter : packoffset(c4); float4 CameraPositionPS : packoffset(c5); float4 ScreenTexelSize : packoffset(c6); float4 ViewportPositionScaleBias : packoffset(c7); float4 TransLightingVolumeMin : packoffset(c8); float4 TransLightingVolumeInvSize : packoffset(c9); float2 NumMSAASamples : packoffset(c10); } SamplerState WorldNormalGBufferTexture_s : register(s0); SamplerState SpecularGBufferTexture_s : register(s1); SamplerState DiffuseGBufferTexture_s : register(s2); SamplerState TransmissionGBufferTexture_s : register(s3); SamplerState SceneDepthTexture_s : register(s4); SamplerState LightAttenuationTexture_s : register(s5); SamplerState PreIntegratedBRDFTexture_s : register(s6); Texture2D<float4> LightAttenuationTexture : register(t0); Texture2D<float4> SceneDepthTexture : register(t1); Texture2D<float4> WorldNormalGBufferTexture : register(t2); Texture2D<float4> DiffuseGBufferTexture : register(t3); Texture2D<float4> TransmissionGBufferTexture : register(t4); Texture2D<float4> SpecularGBufferTexture : register(t5); Texture2D<float4> PreIntegratedBRDFTexture : register(t6); Texture3D<uint> LightVolumeClippingTexture : register(t7); Texture3D<uint> VisBlockingTexture : register(t8); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : TEXCOORD0, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13; uint4 bitmask, uiDest; float4 fDest; r0.xy = v0.xy / v0.ww; r0.zw = r0.xy * ScreenPositionScaleBias.xy + ScreenPositionScaleBias.wz; r1.xyzw = LightAttenuationTexture.SampleLevel(LightAttenuationTexture_s, r0.zw, 0).xyzw; r2.xyzw = r1.xyzw * r1.xyzw; r1.x = r2.x + r2.y; r1.x = r1.z * r1.z + r1.x; r1.x = r1.x * r2.w; r1.x = cmp(0 < r1.x); if (r1.x != 0) { r1.x = SceneDepthTexture.SampleLevel(SceneDepthTexture_s, r0.zw, 0).x; r1.x = min(0.999000013, r1.x); r1.x = r1.x * MinZ_MaxZRatio.z + -MinZ_MaxZRatio.w; r1.x = 1 / r1.x; r0.xy = r1.xx * r0.xy; r1.yzw = ScreenToWorldMatrix._m01_m11_m21 * r0.yyy; r1.yzw = ScreenToWorldMatrix._m00_m10_m20 * r0.xxx + r1.yzw; r1.xyz = ScreenToWorldMatrix._m02_m12_m22 * r1.xxx + r1.yzw; r1.xyz = ScreenToWorldMatrix._m03_m13_m23 + r1.xyz; if (LightProperties.LightID != 0) { r3.xyz = -LevelVolumePosition.xyz + r1.xyz; r4.xyz = LevelVolumeDimensions.xyz * r3.xyz; r3.xyz = r3.xyz * LevelVolumeDimensions.xyz + float3(-0.5,-0.5,-0.5); r5.xyz = floor(r3.xyz); r5.xyz = (uint3)r5.xyz; r6.xyz = (uint3)r5.xyz; r3.xyz = saturate(-r6.xyz + r3.xyz); r4.xyz = floor(r4.xyz); r4.xyz = (uint3)r4.xyz; r4.w = 0; r0.x = VisBlockingTexture.Load(r4.xyzw).x; r4.xyzw = (int4)r0.xxxx & int4(2,1,8,4); r4.xyzw = cmp((int4)r4.xyzw != int4(0,0,0,0)); r7.xyz = cmp(r3.xyz < float3(0.5,0.5,0.5)); r4.xz = r4.xz ? r7.xy : 0; r3.xy = r4.xz ? float2(0,0) : r3.xy; r4.xz = cmp(float2(0.5,0.5) < r3.xy); r4.xy = r4.xz ? r4.yw : 0; r4.xy = r4.xy ? float2(1,1) : r3.xy; r0.xy = (int2)r0.xx & int2(32,16); r0.xy = cmp((int2)r0.xy != int2(0,0)); r0.x = r7.z ? r0.x : 0; r0.x = r0.x ? 0 : r3.z; r1.w = cmp(0.5 < r0.x); r0.y = r0.y ? r1.w : 0; r4.z = r0.y ? 1 : r0.x; r3.xyz = float3(1,1,1) + -r4.xyz; r5.w = 0; r0.x = LightVolumeClippingTexture.Load(r5.xyzw).x; r0.x = (int)r0.x & (int7)LightProperties.LightID; r5.xyz = float3(1,0,0) + r6.xyz; r5.xyz = (uint3)r5.xyz; r5.w = 0; r0.y = LightVolumeClippingTexture.Load(r5.xyzw).x; r0.y = (int)r0.y & (int7)LightProperties.LightID; r5.xyz = float3(1,1,0) + r6.xyz; r5.xyz = (uint3)r5.xyz; r5.w = 0; r1.w = LightVolumeClippingTexture.Load(r5.xyzw).x; r1.w = (int)r1.w & (int7)LightProperties.LightID; r5.xyz = float3(0,1,0) + r6.xyz; r5.xyz = (uint3)r5.xyz; r5.w = 0; r3.w = LightVolumeClippingTexture.Load(r5.xyzw).x; r3.w = (int)r3.w & (int7)LightProperties.LightID; r5.xyz = float3(0,0,1) + r6.xyz; r5.xyz = (uint3)r5.xyz; r5.w = 0; r4.w = LightVolumeClippingTexture.Load(r5.xyzw).x; r4.w = (int)r4.w & (int7)LightProperties.LightID; r5.xyz = float3(1,0,1) + r6.xyz; r5.xyz = (uint3)r5.xyz; r5.w = 0; r5.x = LightVolumeClippingTexture.Load(r5.xyzw).x; r5.x = (int)r5.x & (int7)LightProperties.LightID; r5.yzw = float3(1,1,1) + r6.xyz; r7.xyz = (uint3)r5.yzw; r7.w = 0; r5.y = LightVolumeClippingTexture.Load(r7.xyzw).x; r5.y = (int)r5.y & (int7)LightProperties.LightID; r6.xyz = float3(0,1,1) + r6.xyz; r6.xyz = (uint3)r6.xyz; r6.w = 0; r5.z = LightVolumeClippingTexture.Load(r6.xyzw).x; r5.z = (int)r5.z & (int7)LightProperties.LightID; r0.x = r0.x ? r3.x : 0; r0.y = r0.y ? r4.x : 0; r0.x = r0.x + r0.y; r0.y = r3.w ? r3.x : 0; r1.w = r1.w ? r4.x : 0; r0.y = r1.w + r0.y; r0.y = r0.y * r4.y; r0.x = r0.x * r3.y + r0.y; r0.y = r4.w ? r3.x : 0; r1.w = r5.x ? r4.x : 0; r0.y = r1.w + r0.y; r1.w = r5.z ? r3.x : 0; r3.x = r5.y ? r4.x : 0; r1.w = r3.x + r1.w; r1.w = r1.w * r4.y; r0.y = r0.y * r3.y + r1.w; r0.y = r0.y * r4.z; r0.x = r0.x * r3.z + r0.y; r0.x = log2(r0.x); r0.x = 2.5 * r0.x; r0.x = exp2(r0.x); } else { r0.x = 1; } r0.y = cmp(0 < r0.x); if (r0.y != 0) { r3.xyzw = WorldNormalGBufferTexture.SampleLevel(WorldNormalGBufferTexture_s, r0.zw, 0).xyzw; r4.xyzw = r3.xyzw * float4(2,2,2,1) + float4(-1,-1,-1,-0); r0.y = dot(r4.xyzw, r4.xyzw); r0.y = rsqrt(r0.y); r3.xyz = r4.xyz * r0.yyy; r0.y = 255 * r3.w; r0.y = ceil(r0.y); r0.y = (uint)r0.y; r4.xyzw = TransmissionGBufferTexture.SampleLevel(TransmissionGBufferTexture_s, r0.zw, 0).xyzw; r5.xy = (int2)r0.yy & int2(2,8); if (r5.x == 0) { r1.w = (int)r0.y & 4; if (r1.w != 0) { r4.xyz = r4.xyz * float3(2,2,2) + float3(-1,-1,-1); } else { r1.w = (int)r0.y & 32; if (r1.w != 0) { r4.xyz = r4.xyz * float3(2,2,2) + float3(-1,-1,-1); } else { r4.xyz = float3(0,0,0); } } } r1.w = cmp(0 < LightProperties.CharacterLight); r3.w = cmp((int)r5.y == 0); r1.w = r1.w ? r3.w : 0; r3.w = cmp(0 < LightProperties.InvRadius); if (r3.w != 0) { r5.yzw = LightProperties.WorldPosition.xyz + -r1.xyz; r3.w = dot(r5.yzw, r5.yzw); r6.x = rsqrt(r3.w); r6.xyz = r6.xxx * r5.yzw; r6.w = sqrt(r3.w); r7.x = cmp(0 < LightProperties.InvSquaredFalloff); r7.y = cmp(0 < LightProperties.SourceLength); r8.xyz = LightProperties.SourceLength * -LightProperties.Direction.xyz; r9.xyz = -r8.xyz * float3(0.5,0.5,0.5) + r5.yzw; r8.xyz = r8.xyz * float3(0.5,0.5,0.5) + r5.yzw; r7.z = dot(r9.xyz, r9.xyz); r7.w = dot(r8.xyz, r8.xyz); r7.zw = sqrt(r7.zw); r8.w = dot(r9.xyz, r8.xyz); r8.w = r7.z * r7.w + r8.w; r8.w = 9.99999975e-005 + r8.w; r8.w = 2 / r8.w; r10.y = 32000 * r8.w; r8.w = dot(r3.xyz, r9.xyz); r8.x = dot(r3.xyz, r8.xyz); r7.zw = r8.wx / r7.zw; r7.z = r7.z + r7.w; r10.x = saturate(0.5 * r7.z); r3.w = 1 + r3.w; r3.w = 1 / r3.w; r8.y = 32000 * r3.w; r8.x = dot(r3.xyz, r6.xyz); r9.xy = r7.yy ? r10.xy : r8.xy; r3.w = LightProperties.InvRadius * r6.w; r3.w = r3.w * r3.w; r3.w = -r3.w * r3.w + 1; r3.w = max(0, r3.w); r3.w = r3.w * r3.w; r9.z = r9.y * r3.w; r7.yzw = LightProperties.InvRadius * r5.yzw; r3.w = dot(r7.yzw, r7.yzw); r3.w = min(1, r3.w); r3.w = 1 + -r3.w; r3.w = log2(r3.w); r3.w = LightProperties.FallOffExponent * r3.w; r8.z = exp2(r3.w); r7.xy = r7.xx ? r9.xz : r8.xz; r3.w = dot(r6.xyz, LightProperties.Direction.xyz); r3.w = -LightProperties.SpotAngles.x + r3.w; r3.w = saturate(LightProperties.SpotAngles.y * r3.w); r3.w = r3.w * r3.w; } else { r7.x = dot(r3.xyz, LightProperties.Direction.xyz); r5.yzw = LightProperties.Direction.xyz; r7.y = 1; r3.w = 1; } r6.x = cmp(0 < r7.y); r6.y = cmp(0 < r3.w); r6.x = r6.y ? r6.x : 0; r1.w = cmp((int)r1.w == 0); r1.w = r1.w ? r6.x : 0; if (r1.w != 0) { r6.xyzw = DiffuseGBufferTexture.SampleLevel(DiffuseGBufferTexture_s, r0.zw, 0).xyzw; r1.xyz = -CameraPositionPS.xyz + r1.xyz; r1.w = dot(r1.xyz, r1.xyz); r1.w = rsqrt(r1.w); r1.xyz = r1.xyz * r1.www; r8.xyzw = SpecularGBufferTexture.SampleLevel(SpecularGBufferTexture_s, r0.zw, 0).xyzw; r8.xyzw = float4(1,1,1,1) + r8.xyzw; r9.xyzw = float4(0.5,0.5,0.5,0.5) * r8.xyzw; r0.z = r6.w * 0.75 + 0.25; r10.xyzw = r0.zzzz * r2.xyzw; r0.z = saturate(r0.z * r2.w + -LightProperties.MinShadowOpacity.x); r0.z = LightProperties.MinShadowOpacity.y * r0.z; r2.xyz = r9.xyz * r0.zzz; r0.yw = (int2)r0.yy & int2(32,4); r1.w = cmp(0 < LightProperties.SourceRadius); if (r1.w != 0) { r1.w = cmp(0 < LightProperties.SourceLength); if (r1.w != 0) { r1.w = dot(-LightProperties.Direction.xyz, -LightProperties.Direction.xyz); r1.w = rsqrt(r1.w); r8.xyz = -LightProperties.Direction.xyz * r1.www; r1.w = dot(r1.xyz, r3.xyz); r1.w = r1.w + r1.w; r11.xyz = r3.xyz * -r1.www + r1.xyz; r8.xyz = LightProperties.SourceLength * r8.xyz; r12.xyz = -r8.xyz * float3(0.5,0.5,0.5) + r5.yzw; r1.w = dot(r11.xyz, r8.xyz); r13.xyz = r1.www * r11.xyz + -r8.xyz; r2.w = dot(r12.xyz, r13.xyz); r1.w = r1.w * r1.w; r1.w = LightProperties.SourceLength * LightProperties.SourceLength + -r1.w; r1.w = saturate(r2.w / r1.w); r8.xyz = r1.www * r8.xyz + r12.xyz; r1.w = dot(r8.xyz, r11.xyz); r11.xyz = r1.www * r11.xyz + -r8.xyz; r1.w = dot(r11.xyz, r11.xyz); r1.w = sqrt(r1.w); r1.w = saturate(LightProperties.SourceRadius / r1.w); r8.xyz = r11.xyz * r1.www + r8.xyz; r1.w = dot(r8.xyz, r8.xyz); r1.w = sqrt(r1.w); r1.w = 1 / r1.w; r2.w = LightProperties.SourceLength * r1.w; r2.w = 1.57079637 * r2.w; r6.w = LightProperties.SourceLength * r1.w + 1; r2.w = r2.w / r6.w; r6.w = LightProperties.SourceRadius * r1.w; r6.w = 1.57079637 * r6.w; r1.w = LightProperties.SourceRadius * r1.w + 1; r1.w = r6.w / r1.w; r6.w = r9.w * r9.w; r2.w = r2.w * 0.333330005 + r6.w; r2.w = sqrt(r2.w); r2.w = min(1, r2.w); r2.w = r9.w / r2.w; r2.w = r2.w * r2.w; r1.w = r1.w * 0.333330005 + r6.w; r1.w = sqrt(r1.w); r1.w = min(1, r1.w); r1.w = r9.w / r1.w; r1.w = r1.w * r1.w; r1.w = r1.w * r1.w; r1.w = r2.w * r1.w; } else { r2.w = dot(r1.xyz, r3.xyz); r2.w = r2.w + r2.w; r11.xyz = r3.xyz * -r2.www + r1.xyz; r2.w = dot(r5.yzw, r11.xyz); r11.xyz = r2.www * r11.xyz + -r5.yzw; r2.w = dot(r11.xyz, r11.xyz); r2.w = sqrt(r2.w); r2.w = saturate(LightProperties.SourceRadius / r2.w); r8.xyz = r11.xyz * r2.www + r5.yzw; r2.w = dot(r8.xyz, r8.xyz); r2.w = sqrt(r2.w); r2.w = LightProperties.SourceRadius / r2.w; r6.w = 1.57079637 * r2.w; r2.w = 1 + r2.w; r2.w = r6.w / r2.w; r2.w = 0.333330005 * r2.w; r2.w = r9.w * r9.w + r2.w; r2.w = sqrt(r2.w); r2.w = min(1, r2.w); r2.w = r9.w / r2.w; r2.w = r2.w * r2.w; r1.w = r2.w * r2.w; } r2.w = r9.w; } else { r6.w = 1 + -LightProperties.MinRoughness; r2.w = r9.w * r6.w + LightProperties.MinRoughness; r8.xyz = r5.yzw; r1.w = 1; } r6.w = dot(r8.xyz, r8.xyz); r6.w = rsqrt(r6.w); r11.xyz = r8.xyz * r6.www; if (r0.y != 0) { r0.y = dot(r11.xyz, r4.xyz); r7.z = -r0.y * r0.y + 1; r4.z = dot(-r1.xyz, r4.xyz); r7.w = -r4.z * r4.z + 1; r7.zw = sqrt(r7.zw); r0.y = r4.z * r0.y; r0.y = saturate(r7.z * r7.w + -r0.y); r4.z = r2.w * r2.w; r4.z = r4.z * r4.z; r4.z = 1 / r4.z; r7.z = cmp(r0.y < 9.99999997e-007); r0.y = log2(r0.y); r0.y = r4.z * r0.y; r0.y = exp2(r0.y); r0.y = r7.z ? 0 : r0.y; r12.xyz = r0.yyy * r2.xyz; r12.xyz = r12.xyz * r1.www; } else { r8.xyz = r8.xyz * r6.www + -r1.xyz; r0.y = dot(r8.xyz, r8.xyz); r0.y = rsqrt(r0.y); r8.xyz = r8.xyz * r0.yyy; r0.y = saturate(dot(r3.xyz, r11.xyz)); r4.z = saturate(dot(r3.xyz, -r1.xyz)); r6.w = saturate(dot(r3.xyz, r8.xyz)); r7.z = saturate(dot(-r1.xyz, r8.xyz)); r7.w = r2.w * r2.w; r7.w = r7.w * r7.w; r8.x = r6.w * r7.w + -r6.w; r6.w = r8.x * r6.w + 1; r6.w = r6.w * r6.w; r6.w = r7.w / r6.w; r6.w = 0.318309873 * r6.w; r2.w = r2.w * 0.5 + 0.5; r2.w = r2.w * r2.w; r7.w = 0.5 * r2.w; r2.w = -r2.w * 0.5 + 1; r4.z = r4.z * r2.w + r7.w; r4.z = 1 / r4.z; r0.y = r0.y * r2.w + r7.w; r0.y = 1 / r0.y; r0.y = r0.y * r4.z; r0.y = r0.y * r6.w; r2.w = saturate(50 * r2.y); r8.xyz = -r9.xyz * r0.zzz + r2.www; r2.w = r7.z * -5.55472994 + -6.98316002; r2.w = r2.w * r7.z; r2.w = exp2(r2.w); r8.xyz = r8.xyz * r2.www + r2.xyz; r0.y = 0.25 * r0.y; r8.xyz = r0.yyy * r8.xyz; r12.xyz = saturate(r8.xyz * r1.www); } if (r0.w != 0) { r4.x = saturate(r7.x * 0.5 + 0.5); r8.xyz = PreIntegratedBRDFTexture.SampleLevel(PreIntegratedBRDFTexture_s, r4.xw, 0).xyz; r8.xyz = r8.xyz * r6.xyz; r7.x = saturate(r7.x); r11.xyz = r7.xxx * r12.xyz; r8.xyz = r8.xyz * float3(0.318309873,0.318309873,0.318309873) + r11.xyz; } else { if (r5.x != 0) { r0.y = dot(r5.yzw, r5.yzw); r0.y = rsqrt(r0.y); r11.xyz = r5.yzw * r0.yyy; r5.xyz = r5.yzw * r0.yyy + -r1.xyz; r0.y = dot(r5.xyz, r5.xyz); r0.y = rsqrt(r0.y); r5.xyz = r5.xyz * r0.yyy; r0.y = saturate(dot(r3.xyz, r11.xyz)); r0.w = saturate(dot(r3.xyz, -r1.xyz)); r1.w = saturate(dot(r3.xyz, r5.xyz)); r2.w = saturate(dot(-r1.xyz, r5.xyz)); r4.x = saturate(r4.x); r3.x = r4.x * r4.x; r3.x = r3.x * r3.x; r3.x = 2 / r3.x; r3.y = -2 + r3.x; r3.x = 0.5 * r3.x; r3.z = cmp(r1.w < 9.99999997e-007); r4.x = log2(r1.w); r3.y = r4.x * r3.y; r3.y = exp2(r3.y); r3.y = r3.z ? 0 : r3.y; r3.x = r3.x * r3.y; r1.x = dot(r11.xyz, -r1.xyz); r1.x = r1.x * 2 + 2; r1.x = 1 / r1.x; r1.y = saturate(50 * r4.y); r1.y = r1.y + -r4.y; r1.z = r2.w * -5.55472994 + -6.98316002; r1.z = r1.z * r2.w; r1.z = exp2(r1.z); r1.y = r1.y * r1.z + r4.y; r1.x = r3.x * r1.x; r1.x = saturate(r1.x * r1.y); r2.w = r9.w * r9.w; r2.w = r2.w * r2.w; r3.x = r1.w * r2.w + -r1.w; r1.w = r3.x * r1.w + 1; r1.w = r1.w * r1.w; r1.w = r2.w / r1.w; r2.w = r8.w * 0.25 + 0.5; r2.w = r2.w * r2.w; r3.x = 0.5 * r2.w; r2.w = -r2.w * 0.5 + 1; r0.w = r0.w * r2.w + r3.x; r0.w = 1 / r0.w; r0.y = r0.y * r2.w + r3.x; r0.y = 1 / r0.y; r0.y = r0.y * r0.w; r0.y = r0.y * r1.w; r0.w = saturate(50 * r2.y); r3.xyz = -r9.xyz * r0.zzz + r0.www; r2.xyz = r3.xyz * r1.zzz + r2.xyz; r0.y = 0.25 * r0.y; r0.yzw = saturate(r0.yyy * r2.xyz); r0.yzw = r6.xyz * float3(0.318309873,0.318309873,0.318309873) + r0.yzw; r1.y = 1 + -r1.y; r8.xyz = r0.yzw * r1.yyy + r1.xxx; } else { r0.yzw = float3(0.318309873,0.318309873,0.318309873) * r6.xyz; r7.x = saturate(r7.x); r1.x = r7.x * -r4.w + r4.w; r1.y = 1 + -r1.x; r1.yzw = r0.yzw * r1.yyy + r12.xyz; r0.yzw = r1.xxx * r0.yzw; r8.xyz = r7.xxx * r1.yzw + r0.yzw; } } r0.yzw = r10.www * r10.xyz; r1.x = r7.y * r3.w; r0.yzw = r1.xxx * r0.yzw; r0.yzw = LightProperties.Color.xyz * r0.yzw; r0.yzw = r8.xyz * r0.yzw; } else { r0.yzw = float3(0,0,0); } r0.xyz = r0.yzw * r0.xxx; } else { r0.xyz = float3(0,0,0); } } else { r0.xyz = float3(0,0,0); } o0.xyz = r0.xyz; o0.w = 0; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // using 3Dmigoto v1.2.27 on Sun Feb 07 00:11:44 2016 // // // Buffer Definitions: // // cbuffer $Globals // { // // float4x4 ScreenToWorldMatrix; // Offset: 0 Size: 64 // float4 SpherePositionRadius; // Offset: 64 Size: 16 [unused] // bool bDecompressSceneColor; // Offset: 80 Size: 4 [unused] // float4 LightColorAndFalloffExponent;// Offset: 96 Size: 16 [unused] // float3 DistanceFieldParameters; // Offset: 112 Size: 12 [unused] // float4x4 ScreenToShadowMatrix; // Offset: 128 Size: 64 [unused] // float4 ShadowBufferAndTexelSize; // Offset: 192 Size: 16 [unused] // float ShadowOverrideFactor; // Offset: 208 Size: 4 [unused] // bool bReceiveDynamicShadows; // Offset: 212 Size: 4 [unused] // bool bEnableDistanceShadowFading; // Offset: 216 Size: 4 [unused] // float2 DistanceFadeParameters; // Offset: 224 Size: 8 [unused] // float4 DeferredRenderingParameters;// Offset: 240 Size: 16 [unused] // float4 UVScaleBias; // Offset: 256 Size: 16 [unused] // int MinZ; // Offset: 272 Size: 4 [unused] // float4 ClearColor; // Offset: 288 Size: 16 [unused] // float4 LevelVolumeDimensions; // Offset: 304 Size: 16 // float4 LevelVolumePosition; // Offset: 320 Size: 16 // float4 VoxelSizeUVW; // Offset: 336 Size: 16 [unused] // float4 VoxelSizeXYZ; // Offset: 352 Size: 16 [unused] // uint LightID; // Offset: 368 Size: 4 [unused] // // struct // { // // float3 WorldPosition; // Offset: 384 // float InvRadius; // Offset: 396 // float3 Color; // Offset: 400 // float FallOffExponent; // Offset: 412 // float3 Direction; // Offset: 416 // float SourceLength; // Offset: 428 // float2 SpotAngles; // Offset: 432 // float2 MinShadowOpacity; // Offset: 440 // float SourceRadius; // Offset: 448 // float MinRoughness; // Offset: 452 // float CharacterLight; // Offset: 456 // float InvSquaredFalloff; // Offset: 460 // uint LightID; // Offset: 464 // float3 Padding; // Offset: 468 // // } LightProperties; // Offset: 384 Size: 96 // float LightingOptions; // Offset: 480 Size: 4 [unused] // // } // // cbuffer PSOffsetConstants // { // // float4 ScreenPositionScaleBias; // Offset: 0 Size: 16 // float4 MinZ_MaxZRatio; // Offset: 16 Size: 16 // float NvStereoEnabled; // Offset: 32 Size: 4 [unused] // float4 DiffuseOverrideParameter; // Offset: 48 Size: 16 [unused] // float4 SpecularOverrideParameter; // Offset: 64 Size: 16 [unused] // float4 CameraPositionPS; // Offset: 80 Size: 16 // float4 ScreenTexelSize; // Offset: 96 Size: 16 [unused] // float4 ViewportPositionScaleBias; // Offset: 112 Size: 16 [unused] // float4 TransLightingVolumeMin; // Offset: 128 Size: 16 [unused] // float4 TransLightingVolumeInvSize; // Offset: 144 Size: 16 [unused] // float2 NumMSAASamples; // Offset: 160 Size: 8 [unused] // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // WorldNormalGBufferTexture sampler NA NA 0 1 // SpecularGBufferTexture sampler NA NA 1 1 // DiffuseGBufferTexture sampler NA NA 2 1 // TransmissionGBufferTexture sampler NA NA 3 1 // SceneDepthTexture sampler NA NA 4 1 // LightAttenuationTexture sampler NA NA 5 1 // PreIntegratedBRDFTexture sampler NA NA 6 1 // LightAttenuationTexture texture float4 2d 0 1 // SceneDepthTexture texture float4 2d 1 1 // WorldNormalGBufferTexture texture float4 2d 2 1 // DiffuseGBufferTexture texture float4 2d 3 1 // TransmissionGBufferTexture texture float4 2d 4 1 // SpecularGBufferTexture texture float4 2d 5 1 // PreIntegratedBRDFTexture texture float4 2d 6 1 // LightVolumeClippingTexture texture uint 3d 7 1 // VisBlockingTexture texture uint 3d 8 1 // $Globals cbuffer NA NA 0 1 // PSOffsetConstants cbuffer NA NA 2 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xyzw 0 NONE float xy w // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_1 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb0[30], immediateIndexed dcl_constantbuffer cb2[6], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default dcl_sampler s3, mode_default dcl_sampler s4, mode_default dcl_sampler s5, mode_default dcl_sampler s6, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_resource_texture2d (float,float,float,float) t2 dcl_resource_texture2d (float,float,float,float) t3 dcl_resource_texture2d (float,float,float,float) t4 dcl_resource_texture2d (float,float,float,float) t5 dcl_resource_texture2d (float,float,float,float) t6 dcl_resource_texture3d (uint,uint,uint,uint) t7 dcl_resource_texture3d (uint,uint,uint,uint) t8 dcl_input_ps linear v0.xyw dcl_output o0.xyzw dcl_temps 14 div r0.xy, v0.xyxx, v0.wwww mad r0.zw, r0.xxxy, cb2[0].xxxy, cb2[0].wwwz sample_l r1.xyzw, r0.zwzz, t0.xyzw, s5, l(0.000000) mul r2.xyzw, r1.xyzw, r1.xyzw add r1.x, r2.y, r2.x mad r1.x, r1.z, r1.z, r1.x mul r1.x, r2.w, r1.x lt r1.x, l(0.000000), r1.x if_nz r1.x sample_l r1.x, r0.zwzz, t1.xyzw, s4, l(0.000000) min r1.x, r1.x, l(0.999000) mad r1.x, r1.x, cb2[1].z, -cb2[1].w div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x mul r0.xy, r0.xyxx, r1.xxxx mul r1.yzw, r0.yyyy, cb0[1].xxyz mad r1.yzw, cb0[0].xxyz, r0.xxxx, r1.yyzw mad r1.xyz, cb0[2].xyzx, r1.xxxx, r1.yzwy add r1.xyz, r1.xyzx, cb0[3].xyzx if_nz cb0[29].x add r3.xyz, r1.xyzx, -cb0[20].xyzx mul r4.xyz, r3.xyzx, cb0[19].xyzx mad r3.xyz, r3.xyzx, cb0[19].xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) round_ni r5.xyz, r3.xyzx ftou r5.xyz, r5.xyzx utof r6.xyz, r5.xyzx add_sat r3.xyz, r3.xyzx, -r6.xyzx round_ni r4.xyz, r4.xyzx ftou r4.xyz, r4.xyzx mov r4.w, l(0) ld r0.x, r4.xyzw, t8.xyzw and r4.xyzw, r0.xxxx, l(2, 1, 8, 4) ine r4.xyzw, r4.xyzw, l(0, 0, 0, 0) lt r7.xyz, r3.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) and r4.xz, r4.xxzx, r7.xxyx movc r3.xy, r4.xzxx, l(0,0,0,0), r3.xyxx lt r4.xz, l(0.500000, 0.000000, 0.500000, 0.000000), r3.xxyx and r4.xy, r4.xzxx, r4.ywyy movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), r3.xyxx and r0.xy, r0.xxxx, l(32, 16, 0, 0) ine r0.xy, r0.xyxx, l(0, 0, 0, 0) and r0.x, r7.z, r0.x movc r0.x, r0.x, l(0), r3.z lt r1.w, l(0.500000), r0.x and r0.y, r0.y, r1.w movc r4.z, r0.y, l(1.000000), r0.x add r3.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) mov r5.w, l(0) ld r0.x, r5.xyzw, t7.xyzw and r0.x, r0.x, cb0[29].x add r5.xyz, r6.xyzx, l(1.000000, 0.000000, 0.000000, 0.000000) ftou r5.xyz, r5.xyzx mov r5.w, l(0) ld r0.y, r5.xyzw, t7.yxzw and r0.y, r0.y, cb0[29].x add r5.xyz, r6.xyzx, l(1.000000, 1.000000, 0.000000, 0.000000) ftou r5.xyz, r5.xyzx mov r5.w, l(0) ld r1.w, r5.xyzw, t7.yzwx and r1.w, r1.w, cb0[29].x add r5.xyz, r6.xyzx, l(0.000000, 1.000000, 0.000000, 0.000000) ftou r5.xyz, r5.xyzx mov r5.w, l(0) ld r3.w, r5.xyzw, t7.yzwx and r3.w, r3.w, cb0[29].x add r5.xyz, r6.xyzx, l(0.000000, 0.000000, 1.000000, 0.000000) ftou r5.xyz, r5.xyzx mov r5.w, l(0) ld r4.w, r5.xyzw, t7.yzwx and r4.w, r4.w, cb0[29].x add r5.xyz, r6.xyzx, l(1.000000, 0.000000, 1.000000, 0.000000) ftou r5.xyz, r5.xyzx mov r5.w, l(0) ld r5.x, r5.xyzw, t7.xyzw and r5.x, r5.x, cb0[29].x add r5.yzw, r6.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) ftou r7.xyz, r5.yzwy mov r7.w, l(0) ld r5.y, r7.xyzw, t7.yxzw and r5.y, r5.y, cb0[29].x add r6.xyz, r6.xyzx, l(0.000000, 1.000000, 1.000000, 0.000000) ftou r6.xyz, r6.xyzx mov r6.w, l(0) ld r5.z, r6.xyzw, t7.yzxw and r5.z, r5.z, cb0[29].x movc r0.x, r0.x, r3.x, l(0) movc r0.y, r0.y, r4.x, l(0) add r0.x, r0.y, r0.x movc r0.y, r3.w, r3.x, l(0) movc r1.w, r1.w, r4.x, l(0) add r0.y, r0.y, r1.w mul r0.y, r4.y, r0.y mad r0.x, r0.x, r3.y, r0.y movc r0.y, r4.w, r3.x, l(0) movc r1.w, r5.x, r4.x, l(0) add r0.y, r0.y, r1.w movc r1.w, r5.z, r3.x, l(0) movc r3.x, r5.y, r4.x, l(0) add r1.w, r1.w, r3.x mul r1.w, r4.y, r1.w mad r0.y, r0.y, r3.y, r1.w mul r0.y, r4.z, r0.y mad r0.x, r0.x, r3.z, r0.y log r0.x, r0.x mul r0.x, r0.x, l(2.500000) exp r0.x, r0.x else mov r0.x, l(1.000000) endif lt r0.y, l(0.000000), r0.x if_nz r0.y sample_l r3.xyzw, r0.zwzz, t2.xyzw, s0, l(0.000000) mad r4.xyzw, r3.xyzw, l(2.000000, 2.000000, 2.000000, 1.000000), l(-1.000000, -1.000000, -1.000000, -0.000000) dp4 r0.y, r4.xyzw, r4.xyzw rsq r0.y, r0.y mul r3.xyz, r0.yyyy, r4.xyzx mul r0.y, r3.w, l(255.000000) round_pi r0.y, r0.y ftou r0.y, r0.y sample_l r4.xyzw, r0.zwzz, t4.xyzw, s3, l(0.000000) and r5.xy, r0.yyyy, l(2, 8, 0, 0) if_z r5.x and r1.w, r0.y, l(4) if_nz r1.w mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) else and r1.w, r0.y, l(32) if_nz r1.w mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) else mov r4.xyz, l(0,0,0,0) endif endif endif lt r1.w, l(0.000000), cb0[28].z ieq r3.w, r5.y, l(0) and r1.w, r1.w, r3.w lt r3.w, l(0.000000), cb0[24].w if_nz r3.w add r5.yzw, -r1.xxyz, cb0[24].xxyz dp3 r3.w, r5.yzwy, r5.yzwy rsq r6.x, r3.w mul r6.xyz, r5.yzwy, r6.xxxx sqrt r6.w, r3.w lt r7.x, l(0.000000), cb0[28].w lt r7.y, l(0.000000), cb0[26].w mul r8.xyz, -cb0[26].xyzx, cb0[26].wwww mad r9.xyz, -r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy mad r8.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy dp3 r7.z, r9.xyzx, r9.xyzx dp3 r7.w, r8.xyzx, r8.xyzx sqrt r7.zw, r7.zzzw dp3 r8.w, r9.xyzx, r8.xyzx mad r8.w, r7.z, r7.w, r8.w add r8.w, r8.w, l(0.000100) div r8.w, l(2.000000), r8.w mul r10.y, r8.w, l(32000.000000) dp3 r8.w, r3.xyzx, r9.xyzx dp3 r8.x, r3.xyzx, r8.xyzx div r7.zw, r8.wwwx, r7.zzzw add r7.z, r7.w, r7.z mul_sat r10.x, r7.z, l(0.500000) add r3.w, r3.w, l(1.000000) div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w mul r8.y, r3.w, l(32000.000000) dp3 r8.x, r3.xyzx, r6.xyzx movc r9.xy, r7.yyyy, r10.xyxx, r8.xyxx mul r3.w, r6.w, cb0[24].w mul r3.w, r3.w, r3.w mad r3.w, -r3.w, r3.w, l(1.000000) max r3.w, r3.w, l(0.000000) mul r3.w, r3.w, r3.w mul r9.z, r3.w, r9.y mul r7.yzw, r5.yyzw, cb0[24].wwww dp3 r3.w, r7.yzwy, r7.yzwy min r3.w, r3.w, l(1.000000) add r3.w, -r3.w, l(1.000000) log r3.w, r3.w mul r3.w, r3.w, cb0[25].w exp r8.z, r3.w movc r7.xy, r7.xxxx, r9.xzxx, r8.xzxx dp3 r3.w, r6.xyzx, cb0[26].xyzx add r3.w, r3.w, -cb0[27].x mul_sat r3.w, r3.w, cb0[27].y mul r3.w, r3.w, r3.w else dp3 r7.x, r3.xyzx, cb0[26].xyzx mov r5.yzw, cb0[26].xxyz mov r7.y, l(1.000000) mov r3.w, l(1.000000) endif lt r6.x, l(0.000000), r7.y lt r6.y, l(0.000000), r3.w and r6.x, r6.y, r6.x ieq r1.w, r1.w, l(0) and r1.w, r1.w, r6.x if_nz r1.w sample_l r6.xyzw, r0.zwzz, t3.xyzw, s2, l(0.000000) add r1.xyz, r1.xyzx, -cb2[5].xyzx dp3 r1.w, r1.xyzx, r1.xyzx rsq r1.w, r1.w mul r1.xyz, r1.wwww, r1.xyzx sample_l r8.xyzw, r0.zwzz, t5.xyzw, s1, l(0.000000) add r8.xyzw, r8.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) mul r9.xyzw, r8.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000) mad r0.z, r6.w, l(0.750000), l(0.250000) mul r10.xyzw, r2.xyzw, r0.zzzz mad_sat r0.z, r0.z, r2.w, -cb0[27].z mul r0.z, r0.z, cb0[27].w mul r2.xyz, r0.zzzz, r9.xyzx and r0.yw, r0.yyyy, l(0, 32, 0, 4) lt r1.w, l(0.000000), cb0[28].x if_nz r1.w lt r1.w, l(0.000000), cb0[26].w if_nz r1.w dp3 r1.w, -cb0[26].xyzx, -cb0[26].xyzx rsq r1.w, r1.w mul r8.xyz, r1.wwww, -cb0[26].xyzx dp3 r1.w, r1.xyzx, r3.xyzx add r1.w, r1.w, r1.w mad r11.xyz, r3.xyzx, -r1.wwww, r1.xyzx mul r8.xyz, r8.xyzx, cb0[26].wwww mad r12.xyz, -r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy dp3 r1.w, r11.xyzx, r8.xyzx mad r13.xyz, r1.wwww, r11.xyzx, -r8.xyzx dp3 r2.w, r12.xyzx, r13.xyzx mul r1.w, r1.w, r1.w mad r1.w, cb0[26].w, cb0[26].w, -r1.w div_sat r1.w, r2.w, r1.w mad r8.xyz, r1.wwww, r8.xyzx, r12.xyzx dp3 r1.w, r8.xyzx, r11.xyzx mad r11.xyz, r1.wwww, r11.xyzx, -r8.xyzx dp3 r1.w, r11.xyzx, r11.xyzx sqrt r1.w, r1.w div_sat r1.w, cb0[28].x, r1.w mad r8.xyz, r11.xyzx, r1.wwww, r8.xyzx dp3 r1.w, r8.xyzx, r8.xyzx sqrt r1.w, r1.w div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w mul r2.w, r1.w, cb0[26].w mul r2.w, r2.w, l(1.57079637) mad r6.w, cb0[26].w, r1.w, l(1.000000) div r2.w, r2.w, r6.w mul r6.w, r1.w, cb0[28].x mul r6.w, r6.w, l(1.57079637) mad r1.w, cb0[28].x, r1.w, l(1.000000) div r1.w, r6.w, r1.w mul r6.w, r9.w, r9.w mad r2.w, r2.w, l(0.333330), r6.w sqrt r2.w, r2.w min r2.w, r2.w, l(1.000000) div r2.w, r9.w, r2.w mul r2.w, r2.w, r2.w mad r1.w, r1.w, l(0.333330), r6.w sqrt r1.w, r1.w min r1.w, r1.w, l(1.000000) div r1.w, r9.w, r1.w mul r1.w, r1.w, r1.w mul r1.w, r1.w, r1.w mul r1.w, r1.w, r2.w else dp3 r2.w, r1.xyzx, r3.xyzx add r2.w, r2.w, r2.w mad r11.xyz, r3.xyzx, -r2.wwww, r1.xyzx dp3 r2.w, r5.yzwy, r11.xyzx mad r11.xyz, r2.wwww, r11.xyzx, -r5.yzwy dp3 r2.w, r11.xyzx, r11.xyzx sqrt r2.w, r2.w div_sat r2.w, cb0[28].x, r2.w mad r8.xyz, r11.xyzx, r2.wwww, r5.yzwy dp3 r2.w, r8.xyzx, r8.xyzx sqrt r2.w, r2.w div r2.w, cb0[28].x, r2.w mul r6.w, r2.w, l(1.57079637) add r2.w, r2.w, l(1.000000) div r2.w, r6.w, r2.w mul r2.w, r2.w, l(0.333330) mad r2.w, r9.w, r9.w, r2.w sqrt r2.w, r2.w min r2.w, r2.w, l(1.000000) div r2.w, r9.w, r2.w mul r2.w, r2.w, r2.w mul r1.w, r2.w, r2.w endif mov r2.w, r9.w else add r6.w, -cb0[28].y, l(1.000000) mad r2.w, r9.w, r6.w, cb0[28].y mov r8.xyz, r5.yzwy mov r1.w, l(1.000000) endif dp3 r6.w, r8.xyzx, r8.xyzx rsq r6.w, r6.w mul r11.xyz, r6.wwww, r8.xyzx if_nz r0.y dp3 r0.y, r11.xyzx, r4.xyzx mad r7.z, -r0.y, r0.y, l(1.000000) dp3 r4.z, -r1.xyzx, r4.xyzx ...[/code]
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

cbuffer _Globals : register(b0)
{
bool PhyreContextSwitches : packoffset(c0);
float3 DeferredPos : packoffset(c0.y);
float3 DeferredDir : packoffset(c1);
float4 DeferredDiffuseColor : packoffset(c2);
float4 DeferredSpecularColor : packoffset(c3);
float4 DeferredSpotAngles : packoffset(c4);
float4 DeferredAttenParams : packoffset(c5);
float4 DeferredAreaParams : packoffset(c6);
float4 DeferredShadowMask : packoffset(c7);
float DeferredShadowAlpha : packoffset(c8);
float4x4 DeferredWorldTransform : packoffset(c9);
float4x4 DeferredInverseWorldTransform : packoffset(c13);
float4x4 DeferredShadowMatrix : packoffset(c17);
float4x4 DeferredSplit0Transform : packoffset(c21);
float4x4 DeferredSplit1Transform : packoffset(c25);
float4x4 DeferredSplit2Transform : packoffset(c29);
float4x4 DeferredSplit3Transform : packoffset(c33);
float4 DeferredSplitDistances : packoffset(c37);
float3 DeferredBoxSize : packoffset(c38);
uint LightListSize : packoffset(c38.w);
float2 Split0ShadowBufferInvSize : packoffset(c39);
float2 Split1ShadowBufferInvSize : packoffset(c39.z);
float2 Split2ShadowBufferInvSize : packoffset(c40);
float2 Split3ShadowBufferInvSize : packoffset(c40.z);
float3 IrradianceHalfCellSize : packoffset(c41);
float IrradianceScale : packoffset(c41.w);
float IrradianceBias : packoffset(c42);
float2 DofFocusScale : packoffset(c42.y);
float3 AOColor : packoffset(c43) = {0,0,0};
float LightRange : packoffset(c43.w) = {0};
float3 eyeDirectionWS : packoffset(c44);
float3 AOSnowColor : packoffset(c45) = {0.100000001,0.100000001,0.159999996};
}

cbuffer SceneWideParameterConstantBuffer : register(b1)
{
float4x4 ViewProjection : packoffset(c0);
float4x4 View : packoffset(c4);
float4x4 Projection : packoffset(c8);
float4x4 ViewInverse : packoffset(c12);
float3 EyePosition : packoffset(c16);
float cameraNearTimesFar : packoffset(c16.w);
float3 GlobalAmbientColor : packoffset(c17);
float cameraFarMinusNear : packoffset(c17.w);
float2 cameraNearFar : packoffset(c18);
float2 ViewportWidthHeight : packoffset(c18.z);
float2 screenWidthHeightInv : packoffset(c19);
float2 screenWidthHeight : packoffset(c19.z);
float4x4 PrevViewProj : packoffset(c20);
float4 Jitter : packoffset(c24);
float2 InvProjXY : packoffset(c25);
uint PointLightCount : packoffset(c25.z);
uint SpotLightCount : packoffset(c25.w);
uint FoliageSpheresCount : packoffset(c26);
float time : packoffset(c26.y);
float2 CubeFadeValues : packoffset(c26.z);
float4 FogParameters0 : packoffset(c27);
float4 FogParameters1 : packoffset(c28);
float4 FogParameters2 : packoffset(c29);
float4 FogParameters3 : packoffset(c30);
float3 CubeSunDir : packoffset(c31);
float padding0 : packoffset(c31.w);
float3 CubeSunColor : packoffset(c32);
float padding1 : packoffset(c32.w);
float2 WindDirection : packoffset(c33);
}

cbuffer LightListConstantBuffer : register(b2)
{

struct
{
float4 position;
float4 color;
float4 direction;
float4 params;
} LightList[32] : packoffset(c0);

}

SamplerState PointSampler_s : register(s0);
SamplerState TrilinearSampler_s : register(s1);
SamplerState LinearSampler_s : register(s2);
Texture2D<uint> LightMaskTexture : register(t0);
Texture2D<float4> EnvLookupTexture : register(t1);
TextureCube<float4> IrradianceEnvSampler0 : register(t2);
TextureCube<float4> IrradianceEnvSampler1 : register(t3);
TextureCube<float4> SpecularEnvSampler0 : register(t4);
TextureCube<float4> SpecularEnvSampler1 : register(t5);
Texture2D<float> LinearDepthBuffer : register(t6);
Texture2D<float4> GbufferColorBuffer : register(t7);
Texture2D<float4> GbufferNormalBuffer : register(t8);
Texture2D<float4> GbufferExtraBuffer : register(t9);
Texture2D<float4> AOBuffer : register(t10);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : SV_POSITION0,
float2 v1 : TEXCOORD0,
out float3 o0 : SV_TARGET0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12;
uint4 bitmask, uiDest;
float4 fDest;

r0.xy = ViewportWidthHeight.xy * v1.xy;
r0.xy = (int2)r0.xy;
r0.xy = (uint2)r0.xy >> 4;
r0.zw = float2(0,0);
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw; //---------------------------invalid subscript
r1.xyzw = LinearDepthBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw; //-invalid subscript
r0.y = cameraNearFar.y * r1.x;
r0.z = cmp(LightRange < r0.y);
r0.x = r0.z ? 0 : r0.x;
r0.zw = v1.xy * float2(1,-1) + float2(0,1);
r0.zw = r0.zw * float2(2,2) + float2(-1,-1);
r0.zw = InvProjXY.xy * r0.zw;
r1.xy = r0.zw * r0.yy;
r1.z = -r0.y;
r1.w = 1;
r2.x = dot(r1.xyzw, ViewInverse._m00_m10_m20_m30);
r2.y = dot(r1.xyzw, ViewInverse._m01_m11_m21_m31);
r2.z = dot(r1.xyzw, ViewInverse._m02_m12_m22_m32);
r0.yzw = EyePosition.xyz + -r2.xyz;
r1.x = dot(r0.yzw, r0.yzw);
r1.x = rsqrt(r1.x);
r1.yzw = r1.xxx * r0.yzw;
r3.xyzw = GbufferNormalBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw;
r4.xyzw = GbufferColorBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw;
r5.xyzw = GbufferExtraBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw;
r6.xyzw = AOBuffer.SampleLevel(PointSampler_s, v1.xy, 0).xyzw;
r3.xy = r3.xy * float2(2,2) + float2(-1,-1);
r6.yzw = float3(1,1,1) + -abs(r3.xyx);
r7.z = r6.y + -abs(r3.y);
r2.w = cmp(r7.z < 0);
r3.zw = cmp(r3.xy >= float2(0,0));
r3.zw = r3.zw ? float2(1,1) : float2(-1,-1);
r3.zw = r6.zw * r3.zw;
r7.xy = r2.ww ? r3.zw : r3.xy;
r2.w = dot(r7.xyz, r7.xyz);
r2.w = rsqrt(r2.w);
r3.xyz = r7.xyz * r2.www;
r2.w = max(0.0799999982, r5.y);
r3.w = r2.w * r2.w;
r4.w = r3.w * r3.w;
r3.w = r3.w * r3.w + -1;
r2.w = r2.w * 0.5 + 0.5;
r2.w = r2.w * r2.w;
r6.y = r2.w * r2.w;
r2.w = -r2.w * r2.w + 1;
r6.zw = float2(0.959999979,16) * r5.xz;
r5.z = dot(r3.xyz, r1.yzw);
r7.x = saturate(r5.z);
r7.z = r7.x * r7.x;
r7.z = r2.w * r7.z + r6.y;
r7.z = sqrt(r7.z);
r7.z = r7.x + r7.z;
r7.z = 1 / r7.z;
r4.w = r7.z * r4.w;
r4.w = 0.318309873 * r4.w;
r7.z = r7.x + r6.x;
r7.z = r7.z * r7.z + r6.x;
r7.z = saturate(-1 + r7.z);
r7.y = r5.y;
r8.xyzw = EnvLookupTexture.SampleLevel(LinearSampler_s, r7.xy, 0).xyzw;
r5.x = r8.y * r5.x;
r5.x = r8.x * 0.0399999991 + r5.x;
r5.y = r5.z + r5.z;
r8.xyz = r3.xzy * -r5.yyy + r1.ywz;
r5.y = 2 / r7.y;
r5.y = -1.99998999 + r5.y;
r5.y = log2(r5.y);
r5.y = r5.y * -1.11571777 + 5.5;
r5.y = max(0, r5.y);
r5.z = max(abs(r8.x), abs(r8.z));
r5.z = max(r5.z, abs(r8.y));
r7.x = exp2(r5.y);
r7.x = -r7.x * 0.0078125 + 1;
r9.xyz = cmp(r5.zzz != abs(r8.xyz));
r7.xyw = r8.xyz * r7.xxx;
r7.xyw = r9.xyz ? r7.xyw : r8.xyz;
r7.xyw = -r7.xyw;
r8.xyzw = SpecularEnvSampler0.SampleLevel(TrilinearSampler_s, r7.xyw, r5.y).xyzw;
r9.xyzw = IrradianceEnvSampler0.SampleLevel(LinearSampler_s, r3.xyz, 0).xyzw;
r9.xyz = CubeFadeValues.xxx * r9.xyz;
r9.xyz = float3(3.14159274,3.14159274,3.14159274) * r9.xyz;
r8.xyz = CubeFadeValues.xxx * r8.xyz;
r5.z = cmp(0 < CubeFadeValues.y);
if (r5.z != 0) {
r10.xyzw = SpecularEnvSampler1.SampleLevel(TrilinearSampler_s, r7.xyw, r5.y).xyzw;
r11.xyzw = IrradianceEnvSampler1.SampleLevel(LinearSampler_s, r3.xyz, 0).xyzw;
r7.xyw = CubeFadeValues.yyy * r11.xyz;
r9.xyz = r7.xyw * float3(3.14159274,3.14159274,3.14159274) + r9.xyz;
r8.xyz = r10.xyz * CubeFadeValues.yyy + r8.xyz;
}
r5.y = saturate(dot(r3.xyz, CubeSunDir.xyz));
r0.yzw = r0.yzw * r1.xxx + CubeSunDir.xyz;
r1.x = dot(r0.yzw, r0.yzw);
r1.x = rsqrt(r1.x);
r0.yzw = r1.xxx * r0.yzw;
r1.x = saturate(dot(r3.xyz, r0.yzw));
r0.y = saturate(dot(CubeSunDir.xyz, r0.yzw));
r0.z = r1.x * r1.x;
r0.z = r0.z * r3.w + 1;
r0.z = r0.z * r0.z;
r0.z = 1 / r0.z;
r0.z = r4.w * r0.z;
r0.w = r5.y * r5.y;
r0.w = r0.w * r2.w + r6.y;
r0.w = (uint)r0.w >> 1;
r0.w = (int)r0.w + 0x1fbd1df5;
r0.w = r5.y + r0.w;
r0.w = 1 / r0.w;
r0.y = 1 + -r0.y;
r1.x = r0.y * r0.y;
r1.x = r1.x * r1.x;
r0.y = r1.x * r0.y;
r0.y = r6.z * r0.y + 0.0399999991;
r7.xyw = r3.xyz * float3(0.200000003,0.200000003,0.200000003) + CubeSunDir.xyz;
r1.x = saturate(dot(-r7.xyw, r1.yzw));
r5.z = saturate(dot(-CubeSunDir.xyz, r3.xyz));
r1.x = r1.x * r1.x;
r5.z = r5.z * r5.w;
r1.x = r1.x * r5.w + r5.z;
r1.x = r5.y + r1.x;
r7.xyw = CubeSunColor.xyz * r1.xxx + r9.xyz;
r0.z = r0.z * r0.w;
r0.y = r0.z * r0.y;
r0.y = r0.y * r5.y;
r0.yzw = CubeSunColor.xyz * r0.yyy;
r0.yzw = r8.xyz * r5.xxx + r0.yzw;
r1.x = cmp(r5.w == 0.000000);
r5.xyz = r7.xyw;
r8.xyzw = r0.yzwx;
while (true) {
if (r8.w == 0) break;
r9.x = (uint)r8.w << 16;
r9.y = r9.x ? r9.x : r8.w;
r9.z = (uint)r9.y << 8;
r9.xw = r9.xx ? float2(15,7) : float2(31,23);
r9.xy = r9.zz ? r9.wz : r9.xy;
r9.z = (uint)r9.y << 4;
r9.w = (int)r9.x + -4;
r9.xy = r9.zz ? r9.wz : r9.xy;
r9.z = (uint)r9.y << 2;
r9.w = (int)r9.x + -2;
r9.xy = r9.zz ? r9.wz : r9.xy;
r9.y = (uint)r9.y << 1;
r9.z = (int)r9.x + -1;
r9.x = r9.y ? r9.z : r9.x;
r9.x = r8.w ? r9.x : -1;
r9.y = 1 << (int)r9.x;
r9.y = ~(int)r9.y;
r9.y = (int)r8.w & (int)r9.y;
r9.x = (uint)r9.x << 2;
r10.xyz = LightList[r9.x].position.xyz + -r2.xyz;
r9.z = dot(r10.xyz, r10.xyz);
r9.w = rsqrt(r9.z);
r11.xyz = r10.xyz * r9.www;
r10.w = saturate(dot(r3.xyz, r11.xyz));
r11.w = saturate(dot(r11.xyz, LightList[r9.x].direction.xyz));
r12.x = -LightList[r9.x].params.w * LightList[r9.x].params.z;
r11.w = saturate(r11.w * LightList[r9.x].params.z + r12.x);
r11.w = r11.w * r11.w;
r12.x = LightList[r9.x].params.y + -LightList[r9.x].params.x;
r9.z = r9.w * r9.z + -LightList[r9.x].params.x;
r12.x = 1 / r12.x;
r9.z = saturate(r12.x * r9.z);
r12.x = r9.z * -2 + 3;
r9.z = r9.z * r9.z;
r9.z = -r12.x * r9.z + 1;
r9.z = r11.w * r9.z;
r12.xyz = r3.xyz * float3(0.200000003,0.200000003,0.200000003) + r11.xyz;
r11.w = saturate(dot(-r12.xyz, r1.yzw));
r12.x = saturate(dot(-r11.xyz, r3.xyz));
r11.w = r11.w * r11.w + r12.x;
r11.w = r11.w * r5.w;
r11.w = r11.w * r9.z;
r12.xyz = r11.www * LightList[r9.x].color.xyz + r5.xyz;
r9.z = r9.z * r10.w;
r11.w = cmp(0 >= r9.z);
r11.w = r1.x ? r11.w : 0;
if (r11.w != 0) {
r5.xyz = r12.xyz;
r8.w = r9.y;
continue;
}
r10.xyz = r10.xyz * r9.www + r1.yzw;
r9.w = dot(r10.xyz, r10.xyz);
r9.w = rsqrt(r9.w);
r10.xyz = r10.xyz * r9.www;
r9.w = saturate(dot(r3.xyz, r10.xyz));
r10.x = saturate(dot(r11.xyz, r10.xyz));
r9.w = r9.w * r9.w;
r9.w = r9.w * r3.w + 1;
r9.w = r9.w * r9.w;
r9.w = 1 / r9.w;
r9.w = r9.w * r4.w;
r10.x = 1 + -r10.x;
r10.y = r10.x * r10.x;
r10.y = r10.y * r10.y;
r10.x = r10.y * r10.x;
r10.x = r6.z * r10.x + 0.0399999991;
r10.y = r10.w * r10.w;
r10.y = r10.y * r2.w + r6.y;
r10.y = (uint)r10.y >> 1;
r10.y = (int)r10.y + 0x1fbd1df5;
r10.y = r10.w + r10.y;
r10.y = 1 / r10.y;
r9.w = r10.y * r9.w;
r9.w = r9.w * r10.x;
r9.w = r9.w * r9.z;
r5.xyz = LightList[r9.x].color.xyz * r9.zzz + r12.xyz;
r8.xyz = LightList[r9.x].color.xyz * r9.www + r8.xyz;
r8.w = r9.y;
}
r0.x = 1 + -r6.x;
r0.xyz = AOColor.xyz * r0.xxx;
r0.xyz = r5.xyz * r6.xxx + r0.xyz;
r1.xyz = r8.xyz * r7.zzz;
r0.xyz = r0.xyz * r4.xyz;
r0.xyz = r0.xyz * float3(0.305577457,0.305577457,0.305577457) + r1.xyz;
o0.xyz = r4.xyz * r6.www + r0.xyz;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
// using 3Dmigoto v1.2.29 on Mon Feb 15 14:43:57 2016
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
// bool PhyreContextSwitches; // Offset: 0 Size: 4 [unused]
// float3 DeferredPos; // Offset: 4 Size: 12 [unused]
// float3 DeferredDir; // Offset: 16 Size: 12 [unused]
// float4 DeferredDiffuseColor; // Offset: 32 Size: 16 [unused]
// float4 DeferredSpecularColor; // Offset: 48 Size: 16 [unused]
// float4 DeferredSpotAngles; // Offset: 64 Size: 16 [unused]
// float4 DeferredAttenParams; // Offset: 80 Size: 16 [unused]
// float4 DeferredAreaParams; // Offset: 96 Size: 16 [unused]
// float4 DeferredShadowMask; // Offset: 112 Size: 16 [unused]
// float DeferredShadowAlpha; // Offset: 128 Size: 4 [unused]
// float4x4 DeferredWorldTransform; // Offset: 144 Size: 64 [unused]
// float4x4 DeferredInverseWorldTransform;// Offset: 208 Size: 64 [unused]
// float4x4 DeferredShadowMatrix; // Offset: 272 Size: 64 [unused]
// float4x4 DeferredSplit0Transform; // Offset: 336 Size: 64 [unused]
// float4x4 DeferredSplit1Transform; // Offset: 400 Size: 64 [unused]
// float4x4 DeferredSplit2Transform; // Offset: 464 Size: 64 [unused]
// float4x4 DeferredSplit3Transform; // Offset: 528 Size: 64 [unused]
// float4 DeferredSplitDistances; // Offset: 592 Size: 16 [unused]
// float3 DeferredBoxSize; // Offset: 608 Size: 12 [unused]
// uint LightListSize; // Offset: 620 Size: 4 [unused]
// float2 Split0ShadowBufferInvSize; // Offset: 624 Size: 8 [unused]
// float2 Split1ShadowBufferInvSize; // Offset: 632 Size: 8 [unused]
// float2 Split2ShadowBufferInvSize; // Offset: 640 Size: 8 [unused]
// float2 Split3ShadowBufferInvSize; // Offset: 648 Size: 8 [unused]
// float3 IrradianceHalfCellSize; // Offset: 656 Size: 12 [unused]
// float IrradianceScale; // Offset: 668 Size: 4 [unused]
// float IrradianceBias; // Offset: 672 Size: 4 [unused]
// float2 DofFocusScale; // Offset: 676 Size: 8 [unused]
// float3 AOColor; // Offset: 688 Size: 12
// = 0x00000000 0x00000000 0x00000000
// float LightRange; // Offset: 700 Size: 4
// = 0x00000000
// float3 eyeDirectionWS; // Offset: 704 Size: 12 [unused]
// float3 AOSnowColor; // Offset: 720 Size: 12 [unused]
// = 0x3dcccccd 0x3dcccccd 0x3e23d70a
//
// }
//
// cbuffer SceneWideParameterConstantBuffer
// {
//
// float4x4 ViewProjection; // Offset: 0 Size: 64 [unused]
// float4x4 View; // Offset: 64 Size: 64 [unused]
// float4x4 Projection; // Offset: 128 Size: 64 [unused]
// float4x4 ViewInverse; // Offset: 192 Size: 64
// float3 EyePosition; // Offset: 256 Size: 12
// float cameraNearTimesFar; // Offset: 268 Size: 4 [unused]
// float3 GlobalAmbientColor; // Offset: 272 Size: 12 [unused]
// float cameraFarMinusNear; // Offset: 284 Size: 4 [unused]
// float2 cameraNearFar; // Offset: 288 Size: 8
// float2 ViewportWidthHeight; // Offset: 296 Size: 8
// float2 screenWidthHeightInv; // Offset: 304 Size: 8 [unused]
// float2 screenWidthHeight; // Offset: 312 Size: 8 [unused]
// float4x4 PrevViewProj; // Offset: 320 Size: 64 [unused]
// float4 Jitter; // Offset: 384 Size: 16 [unused]
// float2 InvProjXY; // Offset: 400 Size: 8
// uint PointLightCount; // Offset: 408 Size: 4 [unused]
// uint SpotLightCount; // Offset: 412 Size: 4 [unused]
// uint FoliageSpheresCount; // Offset: 416 Size: 4 [unused]
// float time; // Offset: 420 Size: 4 [unused]
// float2 CubeFadeValues; // Offset: 424 Size: 8
// float4 FogParameters0; // Offset: 432 Size: 16 [unused]
// float4 FogParameters1; // Offset: 448 Size: 16 [unused]
// float4 FogParameters2; // Offset: 464 Size: 16 [unused]
// float4 FogParameters3; // Offset: 480 Size: 16 [unused]
// float3 CubeSunDir; // Offset: 496 Size: 12
// float padding0; // Offset: 508 Size: 4 [unused]
// float3 CubeSunColor; // Offset: 512 Size: 12
// float padding1; // Offset: 524 Size: 4 [unused]
// float2 WindDirection; // Offset: 528 Size: 8 [unused]
//
// }
//
// cbuffer LightListConstantBuffer
// {
//
// struct
// {
//
// float4 position; // Offset: 0
// float4 color; // Offset: 16
// float4 direction; // Offset: 32
// float4 params; // Offset: 48
//
// } LightList[32]; // Offset: 0 Size: 2048
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// PointSampler sampler NA NA 0 1
// TrilinearSampler sampler NA NA 1 1
// LinearSampler sampler NA NA 2 1
// LightMaskTexture texture uint 2d 0 1
// EnvLookupTexture texture float4 2d 1 1
// IrradianceEnvSampler0 texture float4 cube 2 1
// IrradianceEnvSampler1 texture float4 cube 3 1
// SpecularEnvSampler0 texture float4 cube 4 1
// SpecularEnvSampler1 texture float4 cube 5 1
// LinearDepthBuffer texture float 2d 6 1
// GbufferColorBuffer texture float4 2d 7 1
// GbufferNormalBuffer texture float4 2d 8 1
// GbufferExtraBuffer texture float4 2d 9 1
// AOBuffer texture float4 2d 10 1
// $Globals cbuffer NA NA 0 1
// SceneWideParameterConstantBuffer cbuffer NA NA 1 1
// LightListConstantBuffer cbuffer NA NA 2 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xy 1 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET 0 xyz 0 TARGET float xyz
//
ps_4_0
dcl_constantbuffer cb0[44], immediateIndexed
dcl_constantbuffer cb1[33], immediateIndexed
dcl_constantbuffer cb2[128], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (uint,uint,uint,uint) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texturecube (float,float,float,float) t2
dcl_resource_texturecube (float,float,float,float) t3
dcl_resource_texturecube (float,float,float,float) t4
dcl_resource_texturecube (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_input_ps linear v1.xy
dcl_output o0.xyz
dcl_temps 13
mul r0.xy, v1.xyxx, cb1[18].zwzz
ftoi r0.xy, r0.xyxx
ushr r0.xy, r0.xyxx, l(4)
mov r0.zw, l(0,0,0,0)
ld r0.xyzw, r0.xyzw, t0.xyzw
sample_l r1.xyzw, v1.xyxx, t6.xyzw, s0, l(0.000000)
mul r0.y, r1.x, cb1[18].y
lt r0.z, cb0[43].w, r0.y
movc r0.x, r0.z, l(0), r0.x
mad r0.zw, v1.xxxy, l(0.000000, 0.000000, 1.000000, -1.000000), l(0.000000, 0.000000, 0.000000, 1.000000)
mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r0.zw, r0.zzzw, cb1[25].xxxy
mul r1.xy, r0.yyyy, r0.zwzz
mov r1.z, -r0.y
mov r1.w, l(1.000000)
dp4 r2.x, r1.xyzw, cb1[12].xyzw
dp4 r2.y, r1.xyzw, cb1[13].xyzw
dp4 r2.z, r1.xyzw, cb1[14].xyzw
add r0.yzw, -r2.xxyz, cb1[16].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
rsq r1.x, r1.x
mul r1.yzw, r0.yyzw, r1.xxxx
sample_l r3.xyzw, v1.xyxx, t8.xyzw, s0, l(0.000000)
sample_l r4.xyzw, v1.xyxx, t7.xyzw, s0, l(0.000000)
sample_l r5.xyzw, v1.xyxx, t9.xyzw, s0, l(0.000000)
sample_l r6.xyzw, v1.xyxx, t10.xyzw, s0, l(0.000000)
mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
add r6.yzw, -|r3.xxyx|, l(0.000000, 1.000000, 1.000000, 1.000000)
add r7.z, -|r3.y|, r6.y
lt r2.w, r7.z, l(0.000000)
ge r3.zw, r3.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r3.zw, r3.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000)
mul r3.zw, r3.zzzw, r6.zzzw
movc r7.xy, r2.wwww, r3.zwzz, r3.xyxx
dp3 r2.w, r7.xyzx, r7.xyzx
rsq r2.w, r2.w
mul r3.xyz, r2.wwww, r7.xyzx
max r2.w, r5.y, l(0.080000)
mul r3.w, r2.w, r2.w
mul r4.w, r3.w, r3.w
mad r3.w, r3.w, r3.w, l(-1.000000)
mad r2.w, r2.w, l(0.500000), l(0.500000)
mul r2.w, r2.w, r2.w
mul r6.y, r2.w, r2.w
mad r2.w, -r2.w, r2.w, l(1.000000)
mul r6.zw, r5.xxxz, l(0.000000, 0.000000, 0.960000, 16.000000)
dp3 r5.z, r3.xyzx, r1.yzwy
mov_sat r7.x, r5.z
mul r7.z, r7.x, r7.x
mad r7.z, r2.w, r7.z, r6.y
sqrt r7.z, r7.z
add r7.z, r7.z, r7.x
div r7.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z
mul r4.w, r4.w, r7.z
mul r4.w, r4.w, l(0.318309873)
add r7.z, r6.x, r7.x
mad r7.z, r7.z, r7.z, r6.x
add_sat r7.z, r7.z, l(-1.000000)
mov r7.y, r5.y
sample_l r8.xyzw, r7.xyxx, t1.xyzw, s2, l(0.000000)
mul r5.x, r5.x, r8.y
mad r5.x, r8.x, l(0.040000), r5.x
add r5.y, r5.z, r5.z
mad r8.xyz, r3.xzyx, -r5.yyyy, r1.ywzy
div r5.y, l(2.000000), r7.y
add r5.y, r5.y, l(-1.999990)
log r5.y, r5.y
mad r5.y, r5.y, l(-1.11571777), l(5.500000)
max r5.y, r5.y, l(0.000000)
max r5.z, |r8.z|, |r8.x|
max r5.z, |r8.y|, r5.z
exp r7.x, r5.y
mad r7.x, -r7.x, l(0.00781250000), l(1.000000)
ne r9.xyz, r5.zzzz, |r8.xyzx|
mul r7.xyw, r7.xxxx, r8.xyxz
movc r7.xyw, r9.xyxz, r7.xyxw, r8.xyxz
mov r7.xyw, -r7.xyxw
sample_l r8.xyzw, r7.xywx, t4.xyzw, s1, r5.y
sample_l r9.xyzw, r3.xyzx, t2.xyzw, s2, l(0.000000)
mul r9.xyz, r9.xyzx, cb1[26].zzzz
mul r9.xyz, r9.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000)
mul r8.xyz, r8.xyzx, cb1[26].zzzz
lt r5.z, l(0.000000), cb1[26].w
if_nz r5.z
sample_l r10.xyzw, r7.xywx, t5.xyzw, s1, r5.y
sample_l r11.xyzw, r3.xyzx, t3.xyzw, s2, l(0.000000)
mul r7.xyw, r11.xyxz, cb1[26].wwww
mad r9.xyz, r7.xywx, l(3.14159274, 3.14159274, 3.14159274, 0.000000), r9.xyzx
mad r8.xyz, r10.xyzx, cb1[26].wwww, r8.xyzx
endif
dp3_sat r5.y, r3.xyzx, cb1[31].xyzx
mad r0.yzw, r0.yyzw, r1.xxxx, cb1[31].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
rsq r1.x, r1.x
mul r0.yzw, r0.yyzw, r1.xxxx
dp3_sat r1.x, r3.xyzx, r0.yzwy
dp3_sat r0.y, cb1[31].xyzx, r0.yzwy
mul r0.z, r1.x, r1.x
mad r0.z, r0.z, r3.w, l(1.000000)
mul r0.z, r0.z, r0.z
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
mul r0.z, r0.z, r4.w
mul r0.w, r5.y, r5.y
mad r0.w, r0.w, r2.w, r6.y
ishr r0.w, r0.w, l(1)
iadd r0.w, r0.w, l(0x1fbd1df5)
add r0.w, r0.w, r5.y
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
add r0.y, -r0.y, l(1.000000)
mul r1.x, r0.y, r0.y
mul r1.x, r1.x, r1.x
mul r0.y, r0.y, r1.x
mad r0.y, r6.z, r0.y, l(0.040000)
mad r7.xyw, r3.xyxz, l(0.200000, 0.200000, 0.000000, 0.200000), cb1[31].xyxz
dp3_sat r1.x, -r7.xywx, r1.yzwy
dp3_sat r5.z, -cb1[31].xyzx, r3.xyzx
mul r1.x, r1.x, r1.x
mul r5.z, r5.w, r5.z
mad r1.x, r1.x, r5.w, r5.z
add r1.x, r1.x, r5.y
mad r7.xyw, cb1[32].xyxz, r1.xxxx, r9.xyxz
mul r0.z, r0.w, r0.z
mul r0.y, r0.y, r0.z
mul r0.y, r5.y, r0.y
mul r0.yzw, r0.yyyy, cb1[32].xxyz
mad r0.yzw, r8.xxyz, r5.xxxx, r0.yyzw
eq r1.x, r5.w, l(0.000000)
mov r5.xyz, r7.xywx
mov r8.xyzw, r0.yzwx
loop
breakc_z r8.w
ishl r9.x, r8.w, l(16)
movc r9.y, r9.x, r9.x, r8.w
ishl r9.z, r9.y, l(8)
movc r9.xw, r9.xxxx, l(15,0,0,7), l(31,0,0,23)
movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
ishl r9.z, r9.y, l(4)
iadd r9.w, r9.x, l(-4)
movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
ishl r9.z, r9.y, l(2)
iadd r9.w, r9.x, l(-2)
movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
ishl r9.y, r9.y, l(1)
iadd r9.z, r9.x, l(-1)
movc r9.x, r9.y, r9.z, r9.x
movc r9.x, r8.w, r9.x, l(-1)
ishl r9.y, l(1), r9.x
not r9.y, r9.y
and r9.y, r8.w, r9.y
ishl r9.x, r9.x, l(2)
add r10.xyz, -r2.xyzx, cb2[r9.x + 0].xyzx
dp3 r9.z, r10.xyzx, r10.xyzx
rsq r9.w, r9.z
mul r11.xyz, r9.wwww, r10.xyzx
dp3_sat r10.w, r3.xyzx, r11.xyzx
dp3_sat r11.w, r11.xyzx, cb2[r9.x + 2].xyzx
mul r12.x, cb2[r9.x + 3].z, -cb2[r9.x + 3].w
mad_sat r11.w, r11.w, cb2[r9.x + 3].z, r12.x
mul r11.w, r11.w, r11.w
add r12.x, -cb2[r9.x + 3].x, cb2[r9.x + 3].y
mad r9.z, r9.w, r9.z, -cb2[r9.x + 3].x
div r12.x, l(1.000000, 1.000000, 1.000000, 1.000000), r12.x
mul_sat r9.z, r9.z, r12.x
mad r12.x, r9.z, l(-2.000000), l(3.000000)
mul r9.z, r9.z, r9.z
mad r9.z, -r12.x, r9.z, l(1.000000)
mul r9.z, r9.z, r11.w
mad r12.xyz, r3.xyzx, l(0.200000, 0.200000, 0.200000, 0.000000), r11.xyzx
dp3_sat r11.w, -r12.xyzx, r1.yzwy
dp3_sat r12.x, -r11.xyzx, r3.xyzx
mad r11.w, r11.w, r11.w, r12.x
mul r11.w, r5.w, r11.w
mul r11.w, r9.z, r11.w
mad r12.xyz, r11.wwww, cb2[r9.x + 1].xyzx, r5.xyzx
mul r9.z, r10.w, r9.z
ge r11.w, l(0.000000), r9.z
and r11.w, r1.x, r11.w
if_nz r11.w
mov r5.xyz, r12.xyzx
mov r8.w, r9.y
continue
endif
mad r10.xyz, r10.xyzx, r9.wwww, r1.yzwy
dp3 r9.w, r10.xyzx, r10.xyzx
rsq r9.w, r9.w
mul r10.xyz, r9.wwww, r10.xyzx
dp3_sat r9.w, r3.xyzx, r10.xyzx
dp3_sat r10.x, r11.xyzx, r10.xyzx
mul r9.w, r9.w, r9.w
mad r9.w, r9.w, r3.w, l(1.000000)
mul r9.w, r9.w, r9.w
div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
mul r9.w, r4.w, r9.w
add r10.x, -r10.x, l(1.000000)
mul r10.y, r10.x, r10.x
mul r10.y, r10.y, r10.y
mul r10.x, r10.x, r10.y
mad r10.x, r6.z, r10.x, l(0.040000)
mul r10.y, r10.w, r10.w
mad r10.y, r10.y, r2.w, r6.y
ishr r10.y, r10.y, l(1)
iadd r10.y, r10.y, l(0x1fbd1df5)
add r10.y, r10.y, r10.w
div r10.y, l(1.000000, 1.000000, 1.000000, 1.000000), r10.y
mul r9.w, r9.w, r10.y
mul r9.w, r10.x, r9.w
mul r9.w, r9.z, r9.w
mad r5.xyz, cb2[r9.x + 1].xyzx, r9.zzzz, r12.xyzx
mad r8.xyz, cb2[r9.x + 1].xyzx, r9.wwww, r8.xyzx
mov r8.w, r9.y
endloop
add r0.x, -r6.x, l(1.000000)
mul r0.xyz, r0.xxxx, cb0[43].xyzx
mad r0.xyz, r5.xyzx, r6.xxxx, r0.xyzx
mul r1.xyz, r7.zzzz, r8.xyzx
mul r0.xyz, r4.xyzx, r0.xyzx
mad r0.xyz, r0.xyzx, l(0.305577457, 0.305577457, 0.305577457, 0.000000), r1.xyzx
mad o0.xyz, r4.xyzx, r6.wwww, r0.xyzx
ret
// Approximately 219 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


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:
// ---- Created with 3Dmigoto v1.2.27 on Sun Feb 07 00:11:44 2016

cbuffer _Globals : register(b0)
{
float4x4 ScreenToWorldMatrix : packoffset(c0);
float4 SpherePositionRadius : packoffset(c4);
bool bDecompressSceneColor : packoffset(c5);
float4 LightColorAndFalloffExponent : packoffset(c6);
float3 DistanceFieldParameters : packoffset(c7);
float4x4 ScreenToShadowMatrix : packoffset(c8);
float4 ShadowBufferAndTexelSize : packoffset(c12);
float ShadowOverrideFactor : packoffset(c13);
bool bReceiveDynamicShadows : packoffset(c13.y);
bool bEnableDistanceShadowFading : packoffset(c13.z);
float2 DistanceFadeParameters : packoffset(c14);
float4 DeferredRenderingParameters : packoffset(c15);
float4 UVScaleBias : packoffset(c16);
int MinZ : packoffset(c17);
float4 ClearColor : packoffset(c18);
float4 LevelVolumeDimensions : packoffset(c19);
float4 LevelVolumePosition : packoffset(c20);
float4 VoxelSizeUVW : packoffset(c21);
float4 VoxelSizeXYZ : packoffset(c22);
uint LightID : packoffset(c23);

struct
{
float3 WorldPosition;
float InvRadius;
float3 Color;
float FallOffExponent;
float3 Direction;
float SourceLength;
float2 SpotAngles;
float2 MinShadowOpacity;
float SourceRadius;
float MinRoughness;
float CharacterLight;
float InvSquaredFalloff;
uint LightID;
float3 Padding;
} LightProperties : packoffset(c24);

float LightingOptions : packoffset(c30);
}

cbuffer PSOffsetConstants : register(b2)
{
float4 ScreenPositionScaleBias : packoffset(c0);
float4 MinZ_MaxZRatio : packoffset(c1);
float NvStereoEnabled : packoffset(c2);
float4 DiffuseOverrideParameter : packoffset(c3);
float4 SpecularOverrideParameter : packoffset(c4);
float4 CameraPositionPS : packoffset(c5);
float4 ScreenTexelSize : packoffset(c6);
float4 ViewportPositionScaleBias : packoffset(c7);
float4 TransLightingVolumeMin : packoffset(c8);
float4 TransLightingVolumeInvSize : packoffset(c9);
float2 NumMSAASamples : packoffset(c10);
}

SamplerState WorldNormalGBufferTexture_s : register(s0);
SamplerState SpecularGBufferTexture_s : register(s1);
SamplerState DiffuseGBufferTexture_s : register(s2);
SamplerState TransmissionGBufferTexture_s : register(s3);
SamplerState SceneDepthTexture_s : register(s4);
SamplerState LightAttenuationTexture_s : register(s5);
SamplerState PreIntegratedBRDFTexture_s : register(s6);
Texture2D<float4> LightAttenuationTexture : register(t0);
Texture2D<float4> SceneDepthTexture : register(t1);
Texture2D<float4> WorldNormalGBufferTexture : register(t2);
Texture2D<float4> DiffuseGBufferTexture : register(t3);
Texture2D<float4> TransmissionGBufferTexture : register(t4);
Texture2D<float4> SpecularGBufferTexture : register(t5);
Texture2D<float4> PreIntegratedBRDFTexture : register(t6);
Texture3D<uint> LightVolumeClippingTexture : register(t7);
Texture3D<uint> VisBlockingTexture : register(t8);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : TEXCOORD0,
out float4 o0 : SV_Target0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13;
uint4 bitmask, uiDest;
float4 fDest;

r0.xy = v0.xy / v0.ww;
r0.zw = r0.xy * ScreenPositionScaleBias.xy + ScreenPositionScaleBias.wz;
r1.xyzw = LightAttenuationTexture.SampleLevel(LightAttenuationTexture_s, r0.zw, 0).xyzw;
r2.xyzw = r1.xyzw * r1.xyzw;
r1.x = r2.x + r2.y;
r1.x = r1.z * r1.z + r1.x;
r1.x = r1.x * r2.w;
r1.x = cmp(0 < r1.x);
if (r1.x != 0) {
r1.x = SceneDepthTexture.SampleLevel(SceneDepthTexture_s, r0.zw, 0).x;
r1.x = min(0.999000013, r1.x);
r1.x = r1.x * MinZ_MaxZRatio.z + -MinZ_MaxZRatio.w;
r1.x = 1 / r1.x;
r0.xy = r1.xx * r0.xy;
r1.yzw = ScreenToWorldMatrix._m01_m11_m21 * r0.yyy;
r1.yzw = ScreenToWorldMatrix._m00_m10_m20 * r0.xxx + r1.yzw;
r1.xyz = ScreenToWorldMatrix._m02_m12_m22 * r1.xxx + r1.yzw;
r1.xyz = ScreenToWorldMatrix._m03_m13_m23 + r1.xyz;
if (LightProperties.LightID != 0) {
r3.xyz = -LevelVolumePosition.xyz + r1.xyz;
r4.xyz = LevelVolumeDimensions.xyz * r3.xyz;
r3.xyz = r3.xyz * LevelVolumeDimensions.xyz + float3(-0.5,-0.5,-0.5);
r5.xyz = floor(r3.xyz);
r5.xyz = (uint3)r5.xyz;
r6.xyz = (uint3)r5.xyz;
r3.xyz = saturate(-r6.xyz + r3.xyz);
r4.xyz = floor(r4.xyz);
r4.xyz = (uint3)r4.xyz;
r4.w = 0;
r0.x = VisBlockingTexture.Load(r4.xyzw).x;
r4.xyzw = (int4)r0.xxxx & int4(2,1,8,4);
r4.xyzw = cmp((int4)r4.xyzw != int4(0,0,0,0));
r7.xyz = cmp(r3.xyz < float3(0.5,0.5,0.5));
r4.xz = r4.xz ? r7.xy : 0;
r3.xy = r4.xz ? float2(0,0) : r3.xy;
r4.xz = cmp(float2(0.5,0.5) < r3.xy);
r4.xy = r4.xz ? r4.yw : 0;
r4.xy = r4.xy ? float2(1,1) : r3.xy;
r0.xy = (int2)r0.xx & int2(32,16);
r0.xy = cmp((int2)r0.xy != int2(0,0));
r0.x = r7.z ? r0.x : 0;
r0.x = r0.x ? 0 : r3.z;
r1.w = cmp(0.5 < r0.x);
r0.y = r0.y ? r1.w : 0;
r4.z = r0.y ? 1 : r0.x;
r3.xyz = float3(1,1,1) + -r4.xyz;
r5.w = 0;
r0.x = LightVolumeClippingTexture.Load(r5.xyzw).x;
r0.x = (int)r0.x & (int7)LightProperties.LightID;
r5.xyz = float3(1,0,0) + r6.xyz;
r5.xyz = (uint3)r5.xyz;
r5.w = 0;
r0.y = LightVolumeClippingTexture.Load(r5.xyzw).x;
r0.y = (int)r0.y & (int7)LightProperties.LightID;
r5.xyz = float3(1,1,0) + r6.xyz;
r5.xyz = (uint3)r5.xyz;
r5.w = 0;
r1.w = LightVolumeClippingTexture.Load(r5.xyzw).x;
r1.w = (int)r1.w & (int7)LightProperties.LightID;
r5.xyz = float3(0,1,0) + r6.xyz;
r5.xyz = (uint3)r5.xyz;
r5.w = 0;
r3.w = LightVolumeClippingTexture.Load(r5.xyzw).x;
r3.w = (int)r3.w & (int7)LightProperties.LightID;
r5.xyz = float3(0,0,1) + r6.xyz;
r5.xyz = (uint3)r5.xyz;
r5.w = 0;
r4.w = LightVolumeClippingTexture.Load(r5.xyzw).x;
r4.w = (int)r4.w & (int7)LightProperties.LightID;
r5.xyz = float3(1,0,1) + r6.xyz;
r5.xyz = (uint3)r5.xyz;
r5.w = 0;
r5.x = LightVolumeClippingTexture.Load(r5.xyzw).x;
r5.x = (int)r5.x & (int7)LightProperties.LightID;
r5.yzw = float3(1,1,1) + r6.xyz;
r7.xyz = (uint3)r5.yzw;
r7.w = 0;
r5.y = LightVolumeClippingTexture.Load(r7.xyzw).x;
r5.y = (int)r5.y & (int7)LightProperties.LightID;
r6.xyz = float3(0,1,1) + r6.xyz;
r6.xyz = (uint3)r6.xyz;
r6.w = 0;
r5.z = LightVolumeClippingTexture.Load(r6.xyzw).x;
r5.z = (int)r5.z & (int7)LightProperties.LightID;
r0.x = r0.x ? r3.x : 0;
r0.y = r0.y ? r4.x : 0;
r0.x = r0.x + r0.y;
r0.y = r3.w ? r3.x : 0;
r1.w = r1.w ? r4.x : 0;
r0.y = r1.w + r0.y;
r0.y = r0.y * r4.y;
r0.x = r0.x * r3.y + r0.y;
r0.y = r4.w ? r3.x : 0;
r1.w = r5.x ? r4.x : 0;
r0.y = r1.w + r0.y;
r1.w = r5.z ? r3.x : 0;
r3.x = r5.y ? r4.x : 0;
r1.w = r3.x + r1.w;
r1.w = r1.w * r4.y;
r0.y = r0.y * r3.y + r1.w;
r0.y = r0.y * r4.z;
r0.x = r0.x * r3.z + r0.y;
r0.x = log2(r0.x);
r0.x = 2.5 * r0.x;
r0.x = exp2(r0.x);
} else {
r0.x = 1;
}
r0.y = cmp(0 < r0.x);
if (r0.y != 0) {
r3.xyzw = WorldNormalGBufferTexture.SampleLevel(WorldNormalGBufferTexture_s, r0.zw, 0).xyzw;
r4.xyzw = r3.xyzw * float4(2,2,2,1) + float4(-1,-1,-1,-0);
r0.y = dot(r4.xyzw, r4.xyzw);
r0.y = rsqrt(r0.y);
r3.xyz = r4.xyz * r0.yyy;
r0.y = 255 * r3.w;
r0.y = ceil(r0.y);
r0.y = (uint)r0.y;
r4.xyzw = TransmissionGBufferTexture.SampleLevel(TransmissionGBufferTexture_s, r0.zw, 0).xyzw;
r5.xy = (int2)r0.yy & int2(2,8);
if (r5.x == 0) {
r1.w = (int)r0.y & 4;
if (r1.w != 0) {
r4.xyz = r4.xyz * float3(2,2,2) + float3(-1,-1,-1);
} else {
r1.w = (int)r0.y & 32;
if (r1.w != 0) {
r4.xyz = r4.xyz * float3(2,2,2) + float3(-1,-1,-1);
} else {
r4.xyz = float3(0,0,0);
}
}
}
r1.w = cmp(0 < LightProperties.CharacterLight);
r3.w = cmp((int)r5.y == 0);
r1.w = r1.w ? r3.w : 0;
r3.w = cmp(0 < LightProperties.InvRadius);
if (r3.w != 0) {
r5.yzw = LightProperties.WorldPosition.xyz + -r1.xyz;
r3.w = dot(r5.yzw, r5.yzw);
r6.x = rsqrt(r3.w);
r6.xyz = r6.xxx * r5.yzw;
r6.w = sqrt(r3.w);
r7.x = cmp(0 < LightProperties.InvSquaredFalloff);
r7.y = cmp(0 < LightProperties.SourceLength);
r8.xyz = LightProperties.SourceLength * -LightProperties.Direction.xyz;
r9.xyz = -r8.xyz * float3(0.5,0.5,0.5) + r5.yzw;
r8.xyz = r8.xyz * float3(0.5,0.5,0.5) + r5.yzw;
r7.z = dot(r9.xyz, r9.xyz);
r7.w = dot(r8.xyz, r8.xyz);
r7.zw = sqrt(r7.zw);
r8.w = dot(r9.xyz, r8.xyz);
r8.w = r7.z * r7.w + r8.w;
r8.w = 9.99999975e-005 + r8.w;
r8.w = 2 / r8.w;
r10.y = 32000 * r8.w;
r8.w = dot(r3.xyz, r9.xyz);
r8.x = dot(r3.xyz, r8.xyz);
r7.zw = r8.wx / r7.zw;
r7.z = r7.z + r7.w;
r10.x = saturate(0.5 * r7.z);
r3.w = 1 + r3.w;
r3.w = 1 / r3.w;
r8.y = 32000 * r3.w;
r8.x = dot(r3.xyz, r6.xyz);
r9.xy = r7.yy ? r10.xy : r8.xy;
r3.w = LightProperties.InvRadius * r6.w;
r3.w = r3.w * r3.w;
r3.w = -r3.w * r3.w + 1;
r3.w = max(0, r3.w);
r3.w = r3.w * r3.w;
r9.z = r9.y * r3.w;
r7.yzw = LightProperties.InvRadius * r5.yzw;
r3.w = dot(r7.yzw, r7.yzw);
r3.w = min(1, r3.w);
r3.w = 1 + -r3.w;
r3.w = log2(r3.w);
r3.w = LightProperties.FallOffExponent * r3.w;
r8.z = exp2(r3.w);
r7.xy = r7.xx ? r9.xz : r8.xz;
r3.w = dot(r6.xyz, LightProperties.Direction.xyz);
r3.w = -LightProperties.SpotAngles.x + r3.w;
r3.w = saturate(LightProperties.SpotAngles.y * r3.w);
r3.w = r3.w * r3.w;
} else {
r7.x = dot(r3.xyz, LightProperties.Direction.xyz);
r5.yzw = LightProperties.Direction.xyz;
r7.y = 1;
r3.w = 1;
}
r6.x = cmp(0 < r7.y);
r6.y = cmp(0 < r3.w);
r6.x = r6.y ? r6.x : 0;
r1.w = cmp((int)r1.w == 0);
r1.w = r1.w ? r6.x : 0;
if (r1.w != 0) {
r6.xyzw = DiffuseGBufferTexture.SampleLevel(DiffuseGBufferTexture_s, r0.zw, 0).xyzw;
r1.xyz = -CameraPositionPS.xyz + r1.xyz;
r1.w = dot(r1.xyz, r1.xyz);
r1.w = rsqrt(r1.w);
r1.xyz = r1.xyz * r1.www;
r8.xyzw = SpecularGBufferTexture.SampleLevel(SpecularGBufferTexture_s, r0.zw, 0).xyzw;
r8.xyzw = float4(1,1,1,1) + r8.xyzw;
r9.xyzw = float4(0.5,0.5,0.5,0.5) * r8.xyzw;
r0.z = r6.w * 0.75 + 0.25;
r10.xyzw = r0.zzzz * r2.xyzw;
r0.z = saturate(r0.z * r2.w + -LightProperties.MinShadowOpacity.x);
r0.z = LightProperties.MinShadowOpacity.y * r0.z;
r2.xyz = r9.xyz * r0.zzz;
r0.yw = (int2)r0.yy & int2(32,4);
r1.w = cmp(0 < LightProperties.SourceRadius);
if (r1.w != 0) {
r1.w = cmp(0 < LightProperties.SourceLength);
if (r1.w != 0) {
r1.w = dot(-LightProperties.Direction.xyz, -LightProperties.Direction.xyz);
r1.w = rsqrt(r1.w);
r8.xyz = -LightProperties.Direction.xyz * r1.www;
r1.w = dot(r1.xyz, r3.xyz);
r1.w = r1.w + r1.w;
r11.xyz = r3.xyz * -r1.www + r1.xyz;
r8.xyz = LightProperties.SourceLength * r8.xyz;
r12.xyz = -r8.xyz * float3(0.5,0.5,0.5) + r5.yzw;
r1.w = dot(r11.xyz, r8.xyz);
r13.xyz = r1.www * r11.xyz + -r8.xyz;
r2.w = dot(r12.xyz, r13.xyz);
r1.w = r1.w * r1.w;
r1.w = LightProperties.SourceLength * LightProperties.SourceLength + -r1.w;
r1.w = saturate(r2.w / r1.w);
r8.xyz = r1.www * r8.xyz + r12.xyz;
r1.w = dot(r8.xyz, r11.xyz);
r11.xyz = r1.www * r11.xyz + -r8.xyz;
r1.w = dot(r11.xyz, r11.xyz);
r1.w = sqrt(r1.w);
r1.w = saturate(LightProperties.SourceRadius / r1.w);
r8.xyz = r11.xyz * r1.www + r8.xyz;
r1.w = dot(r8.xyz, r8.xyz);
r1.w = sqrt(r1.w);
r1.w = 1 / r1.w;
r2.w = LightProperties.SourceLength * r1.w;
r2.w = 1.57079637 * r2.w;
r6.w = LightProperties.SourceLength * r1.w + 1;
r2.w = r2.w / r6.w;
r6.w = LightProperties.SourceRadius * r1.w;
r6.w = 1.57079637 * r6.w;
r1.w = LightProperties.SourceRadius * r1.w + 1;
r1.w = r6.w / r1.w;
r6.w = r9.w * r9.w;
r2.w = r2.w * 0.333330005 + r6.w;
r2.w = sqrt(r2.w);
r2.w = min(1, r2.w);
r2.w = r9.w / r2.w;
r2.w = r2.w * r2.w;
r1.w = r1.w * 0.333330005 + r6.w;
r1.w = sqrt(r1.w);
r1.w = min(1, r1.w);
r1.w = r9.w / r1.w;
r1.w = r1.w * r1.w;
r1.w = r1.w * r1.w;
r1.w = r2.w * r1.w;
} else {
r2.w = dot(r1.xyz, r3.xyz);
r2.w = r2.w + r2.w;
r11.xyz = r3.xyz * -r2.www + r1.xyz;
r2.w = dot(r5.yzw, r11.xyz);
r11.xyz = r2.www * r11.xyz + -r5.yzw;
r2.w = dot(r11.xyz, r11.xyz);
r2.w = sqrt(r2.w);
r2.w = saturate(LightProperties.SourceRadius / r2.w);
r8.xyz = r11.xyz * r2.www + r5.yzw;
r2.w = dot(r8.xyz, r8.xyz);
r2.w = sqrt(r2.w);
r2.w = LightProperties.SourceRadius / r2.w;
r6.w = 1.57079637 * r2.w;
r2.w = 1 + r2.w;
r2.w = r6.w / r2.w;
r2.w = 0.333330005 * r2.w;
r2.w = r9.w * r9.w + r2.w;
r2.w = sqrt(r2.w);
r2.w = min(1, r2.w);
r2.w = r9.w / r2.w;
r2.w = r2.w * r2.w;
r1.w = r2.w * r2.w;
}
r2.w = r9.w;
} else {
r6.w = 1 + -LightProperties.MinRoughness;
r2.w = r9.w * r6.w + LightProperties.MinRoughness;
r8.xyz = r5.yzw;
r1.w = 1;
}
r6.w = dot(r8.xyz, r8.xyz);
r6.w = rsqrt(r6.w);
r11.xyz = r8.xyz * r6.www;
if (r0.y != 0) {
r0.y = dot(r11.xyz, r4.xyz);
r7.z = -r0.y * r0.y + 1;
r4.z = dot(-r1.xyz, r4.xyz);
r7.w = -r4.z * r4.z + 1;
r7.zw = sqrt(r7.zw);
r0.y = r4.z * r0.y;
r0.y = saturate(r7.z * r7.w + -r0.y);
r4.z = r2.w * r2.w;
r4.z = r4.z * r4.z;
r4.z = 1 / r4.z;
r7.z = cmp(r0.y < 9.99999997e-007);
r0.y = log2(r0.y);
r0.y = r4.z * r0.y;
r0.y = exp2(r0.y);
r0.y = r7.z ? 0 : r0.y;
r12.xyz = r0.yyy * r2.xyz;
r12.xyz = r12.xyz * r1.www;
} else {
r8.xyz = r8.xyz * r6.www + -r1.xyz;
r0.y = dot(r8.xyz, r8.xyz);
r0.y = rsqrt(r0.y);
r8.xyz = r8.xyz * r0.yyy;
r0.y = saturate(dot(r3.xyz, r11.xyz));
r4.z = saturate(dot(r3.xyz, -r1.xyz));
r6.w = saturate(dot(r3.xyz, r8.xyz));
r7.z = saturate(dot(-r1.xyz, r8.xyz));
r7.w = r2.w * r2.w;
r7.w = r7.w * r7.w;
r8.x = r6.w * r7.w + -r6.w;
r6.w = r8.x * r6.w + 1;
r6.w = r6.w * r6.w;
r6.w = r7.w / r6.w;
r6.w = 0.318309873 * r6.w;
r2.w = r2.w * 0.5 + 0.5;
r2.w = r2.w * r2.w;
r7.w = 0.5 * r2.w;
r2.w = -r2.w * 0.5 + 1;
r4.z = r4.z * r2.w + r7.w;
r4.z = 1 / r4.z;
r0.y = r0.y * r2.w + r7.w;
r0.y = 1 / r0.y;
r0.y = r0.y * r4.z;
r0.y = r0.y * r6.w;
r2.w = saturate(50 * r2.y);
r8.xyz = -r9.xyz * r0.zzz + r2.www;
r2.w = r7.z * -5.55472994 + -6.98316002;
r2.w = r2.w * r7.z;
r2.w = exp2(r2.w);
r8.xyz = r8.xyz * r2.www + r2.xyz;
r0.y = 0.25 * r0.y;
r8.xyz = r0.yyy * r8.xyz;
r12.xyz = saturate(r8.xyz * r1.www);
}
if (r0.w != 0) {
r4.x = saturate(r7.x * 0.5 + 0.5);
r8.xyz = PreIntegratedBRDFTexture.SampleLevel(PreIntegratedBRDFTexture_s, r4.xw, 0).xyz;
r8.xyz = r8.xyz * r6.xyz;
r7.x = saturate(r7.x);
r11.xyz = r7.xxx * r12.xyz;
r8.xyz = r8.xyz * float3(0.318309873,0.318309873,0.318309873) + r11.xyz;
} else {
if (r5.x != 0) {
r0.y = dot(r5.yzw, r5.yzw);
r0.y = rsqrt(r0.y);
r11.xyz = r5.yzw * r0.yyy;
r5.xyz = r5.yzw * r0.yyy + -r1.xyz;
r0.y = dot(r5.xyz, r5.xyz);
r0.y = rsqrt(r0.y);
r5.xyz = r5.xyz * r0.yyy;
r0.y = saturate(dot(r3.xyz, r11.xyz));
r0.w = saturate(dot(r3.xyz, -r1.xyz));
r1.w = saturate(dot(r3.xyz, r5.xyz));
r2.w = saturate(dot(-r1.xyz, r5.xyz));
r4.x = saturate(r4.x);
r3.x = r4.x * r4.x;
r3.x = r3.x * r3.x;
r3.x = 2 / r3.x;
r3.y = -2 + r3.x;
r3.x = 0.5 * r3.x;
r3.z = cmp(r1.w < 9.99999997e-007);
r4.x = log2(r1.w);
r3.y = r4.x * r3.y;
r3.y = exp2(r3.y);
r3.y = r3.z ? 0 : r3.y;
r3.x = r3.x * r3.y;
r1.x = dot(r11.xyz, -r1.xyz);
r1.x = r1.x * 2 + 2;
r1.x = 1 / r1.x;
r1.y = saturate(50 * r4.y);
r1.y = r1.y + -r4.y;
r1.z = r2.w * -5.55472994 + -6.98316002;
r1.z = r1.z * r2.w;
r1.z = exp2(r1.z);
r1.y = r1.y * r1.z + r4.y;
r1.x = r3.x * r1.x;
r1.x = saturate(r1.x * r1.y);
r2.w = r9.w * r9.w;
r2.w = r2.w * r2.w;
r3.x = r1.w * r2.w + -r1.w;
r1.w = r3.x * r1.w + 1;
r1.w = r1.w * r1.w;
r1.w = r2.w / r1.w;
r2.w = r8.w * 0.25 + 0.5;
r2.w = r2.w * r2.w;
r3.x = 0.5 * r2.w;
r2.w = -r2.w * 0.5 + 1;
r0.w = r0.w * r2.w + r3.x;
r0.w = 1 / r0.w;
r0.y = r0.y * r2.w + r3.x;
r0.y = 1 / r0.y;
r0.y = r0.y * r0.w;
r0.y = r0.y * r1.w;
r0.w = saturate(50 * r2.y);
r3.xyz = -r9.xyz * r0.zzz + r0.www;
r2.xyz = r3.xyz * r1.zzz + r2.xyz;
r0.y = 0.25 * r0.y;
r0.yzw = saturate(r0.yyy * r2.xyz);
r0.yzw = r6.xyz * float3(0.318309873,0.318309873,0.318309873) + r0.yzw;
r1.y = 1 + -r1.y;
r8.xyz = r0.yzw * r1.yyy + r1.xxx;
} else {
r0.yzw = float3(0.318309873,0.318309873,0.318309873) * r6.xyz;
r7.x = saturate(r7.x);
r1.x = r7.x * -r4.w + r4.w;
r1.y = 1 + -r1.x;
r1.yzw = r0.yzw * r1.yyy + r12.xyz;
r0.yzw = r1.xxx * r0.yzw;
r8.xyz = r7.xxx * r1.yzw + r0.yzw;
}
}
r0.yzw = r10.www * r10.xyz;
r1.x = r7.y * r3.w;
r0.yzw = r1.xxx * r0.yzw;
r0.yzw = LightProperties.Color.xyz * r0.yzw;
r0.yzw = r8.xyz * r0.yzw;
} else {
r0.yzw = float3(0,0,0);
}
r0.xyz = r0.yzw * r0.xxx;
} else {
r0.xyz = float3(0,0,0);
}
} else {
r0.xyz = float3(0,0,0);
}
o0.xyz = r0.xyz;
o0.w = 0;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// using 3Dmigoto v1.2.27 on Sun Feb 07 00:11:44 2016
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
// float4x4 ScreenToWorldMatrix; // Offset: 0 Size: 64
// float4 SpherePositionRadius; // Offset: 64 Size: 16 [unused]
// bool bDecompressSceneColor; // Offset: 80 Size: 4 [unused]
// float4 LightColorAndFalloffExponent;// Offset: 96 Size: 16 [unused]
// float3 DistanceFieldParameters; // Offset: 112 Size: 12 [unused]
// float4x4 ScreenToShadowMatrix; // Offset: 128 Size: 64 [unused]
// float4 ShadowBufferAndTexelSize; // Offset: 192 Size: 16 [unused]
// float ShadowOverrideFactor; // Offset: 208 Size: 4 [unused]
// bool bReceiveDynamicShadows; // Offset: 212 Size: 4 [unused]
// bool bEnableDistanceShadowFading; // Offset: 216 Size: 4 [unused]
// float2 DistanceFadeParameters; // Offset: 224 Size: 8 [unused]
// float4 DeferredRenderingParameters;// Offset: 240 Size: 16 [unused]
// float4 UVScaleBias; // Offset: 256 Size: 16 [unused]
// int MinZ; // Offset: 272 Size: 4 [unused]
// float4 ClearColor; // Offset: 288 Size: 16 [unused]
// float4 LevelVolumeDimensions; // Offset: 304 Size: 16
// float4 LevelVolumePosition; // Offset: 320 Size: 16
// float4 VoxelSizeUVW; // Offset: 336 Size: 16 [unused]
// float4 VoxelSizeXYZ; // Offset: 352 Size: 16 [unused]
// uint LightID; // Offset: 368 Size: 4 [unused]
//
// struct
// {
//
// float3 WorldPosition; // Offset: 384
// float InvRadius; // Offset: 396
// float3 Color; // Offset: 400
// float FallOffExponent; // Offset: 412
// float3 Direction; // Offset: 416
// float SourceLength; // Offset: 428
// float2 SpotAngles; // Offset: 432
// float2 MinShadowOpacity; // Offset: 440
// float SourceRadius; // Offset: 448
// float MinRoughness; // Offset: 452
// float CharacterLight; // Offset: 456
// float InvSquaredFalloff; // Offset: 460
// uint LightID; // Offset: 464
// float3 Padding; // Offset: 468
//
// } LightProperties; // Offset: 384 Size: 96
// float LightingOptions; // Offset: 480 Size: 4 [unused]
//
// }
//
// cbuffer PSOffsetConstants
// {
//
// float4 ScreenPositionScaleBias; // Offset: 0 Size: 16
// float4 MinZ_MaxZRatio; // Offset: 16 Size: 16
// float NvStereoEnabled; // Offset: 32 Size: 4 [unused]
// float4 DiffuseOverrideParameter; // Offset: 48 Size: 16 [unused]
// float4 SpecularOverrideParameter; // Offset: 64 Size: 16 [unused]
// float4 CameraPositionPS; // Offset: 80 Size: 16
// float4 ScreenTexelSize; // Offset: 96 Size: 16 [unused]
// float4 ViewportPositionScaleBias; // Offset: 112 Size: 16 [unused]
// float4 TransLightingVolumeMin; // Offset: 128 Size: 16 [unused]
// float4 TransLightingVolumeInvSize; // Offset: 144 Size: 16 [unused]
// float2 NumMSAASamples; // Offset: 160 Size: 8 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// WorldNormalGBufferTexture sampler NA NA 0 1
// SpecularGBufferTexture sampler NA NA 1 1
// DiffuseGBufferTexture sampler NA NA 2 1
// TransmissionGBufferTexture sampler NA NA 3 1
// SceneDepthTexture sampler NA NA 4 1
// LightAttenuationTexture sampler NA NA 5 1
// PreIntegratedBRDFTexture sampler NA NA 6 1
// LightAttenuationTexture texture float4 2d 0 1
// SceneDepthTexture texture float4 2d 1 1
// WorldNormalGBufferTexture texture float4 2d 2 1
// DiffuseGBufferTexture texture float4 2d 3 1
// TransmissionGBufferTexture texture float4 2d 4 1
// SpecularGBufferTexture texture float4 2d 5 1
// PreIntegratedBRDFTexture texture float4 2d 6 1
// LightVolumeClippingTexture texture uint 3d 7 1
// VisBlockingTexture texture uint 3d 8 1
// $Globals cbuffer NA NA 0 1
// PSOffsetConstants cbuffer NA NA 2 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xyzw 0 NONE float xy w
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[30], immediateIndexed
dcl_constantbuffer cb2[6], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture3d (uint,uint,uint,uint) t7
dcl_resource_texture3d (uint,uint,uint,uint) t8
dcl_input_ps linear v0.xyw
dcl_output o0.xyzw
dcl_temps 14
div r0.xy, v0.xyxx, v0.wwww
mad r0.zw, r0.xxxy, cb2[0].xxxy, cb2[0].wwwz
sample_l r1.xyzw, r0.zwzz, t0.xyzw, s5, l(0.000000)
mul r2.xyzw, r1.xyzw, r1.xyzw
add r1.x, r2.y, r2.x
mad r1.x, r1.z, r1.z, r1.x
mul r1.x, r2.w, r1.x
lt r1.x, l(0.000000), r1.x
if_nz r1.x
sample_l r1.x, r0.zwzz, t1.xyzw, s4, l(0.000000)
min r1.x, r1.x, l(0.999000)
mad r1.x, r1.x, cb2[1].z, -cb2[1].w
div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x
mul r0.xy, r0.xyxx, r1.xxxx
mul r1.yzw, r0.yyyy, cb0[1].xxyz
mad r1.yzw, cb0[0].xxyz, r0.xxxx, r1.yyzw
mad r1.xyz, cb0[2].xyzx, r1.xxxx, r1.yzwy
add r1.xyz, r1.xyzx, cb0[3].xyzx
if_nz cb0[29].x
add r3.xyz, r1.xyzx, -cb0[20].xyzx
mul r4.xyz, r3.xyzx, cb0[19].xyzx
mad r3.xyz, r3.xyzx, cb0[19].xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
round_ni r5.xyz, r3.xyzx
ftou r5.xyz, r5.xyzx
utof r6.xyz, r5.xyzx
add_sat r3.xyz, r3.xyzx, -r6.xyzx
round_ni r4.xyz, r4.xyzx
ftou r4.xyz, r4.xyzx
mov r4.w, l(0)
ld r0.x, r4.xyzw, t8.xyzw
and r4.xyzw, r0.xxxx, l(2, 1, 8, 4)
ine r4.xyzw, r4.xyzw, l(0, 0, 0, 0)
lt r7.xyz, r3.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
and r4.xz, r4.xxzx, r7.xxyx
movc r3.xy, r4.xzxx, l(0,0,0,0), r3.xyxx
lt r4.xz, l(0.500000, 0.000000, 0.500000, 0.000000), r3.xxyx
and r4.xy, r4.xzxx, r4.ywyy
movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), r3.xyxx
and r0.xy, r0.xxxx, l(32, 16, 0, 0)
ine r0.xy, r0.xyxx, l(0, 0, 0, 0)
and r0.x, r7.z, r0.x
movc r0.x, r0.x, l(0), r3.z
lt r1.w, l(0.500000), r0.x
and r0.y, r0.y, r1.w
movc r4.z, r0.y, l(1.000000), r0.x
add r3.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mov r5.w, l(0)
ld r0.x, r5.xyzw, t7.xyzw
and r0.x, r0.x, cb0[29].x
add r5.xyz, r6.xyzx, l(1.000000, 0.000000, 0.000000, 0.000000)
ftou r5.xyz, r5.xyzx
mov r5.w, l(0)
ld r0.y, r5.xyzw, t7.yxzw
and r0.y, r0.y, cb0[29].x
add r5.xyz, r6.xyzx, l(1.000000, 1.000000, 0.000000, 0.000000)
ftou r5.xyz, r5.xyzx
mov r5.w, l(0)
ld r1.w, r5.xyzw, t7.yzwx
and r1.w, r1.w, cb0[29].x
add r5.xyz, r6.xyzx, l(0.000000, 1.000000, 0.000000, 0.000000)
ftou r5.xyz, r5.xyzx
mov r5.w, l(0)
ld r3.w, r5.xyzw, t7.yzwx
and r3.w, r3.w, cb0[29].x
add r5.xyz, r6.xyzx, l(0.000000, 0.000000, 1.000000, 0.000000)
ftou r5.xyz, r5.xyzx
mov r5.w, l(0)
ld r4.w, r5.xyzw, t7.yzwx
and r4.w, r4.w, cb0[29].x
add r5.xyz, r6.xyzx, l(1.000000, 0.000000, 1.000000, 0.000000)
ftou r5.xyz, r5.xyzx
mov r5.w, l(0)
ld r5.x, r5.xyzw, t7.xyzw
and r5.x, r5.x, cb0[29].x
add r5.yzw, r6.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000)
ftou r7.xyz, r5.yzwy
mov r7.w, l(0)
ld r5.y, r7.xyzw, t7.yxzw
and r5.y, r5.y, cb0[29].x
add r6.xyz, r6.xyzx, l(0.000000, 1.000000, 1.000000, 0.000000)
ftou r6.xyz, r6.xyzx
mov r6.w, l(0)
ld r5.z, r6.xyzw, t7.yzxw
and r5.z, r5.z, cb0[29].x
movc r0.x, r0.x, r3.x, l(0)
movc r0.y, r0.y, r4.x, l(0)
add r0.x, r0.y, r0.x
movc r0.y, r3.w, r3.x, l(0)
movc r1.w, r1.w, r4.x, l(0)
add r0.y, r0.y, r1.w
mul r0.y, r4.y, r0.y
mad r0.x, r0.x, r3.y, r0.y
movc r0.y, r4.w, r3.x, l(0)
movc r1.w, r5.x, r4.x, l(0)
add r0.y, r0.y, r1.w
movc r1.w, r5.z, r3.x, l(0)
movc r3.x, r5.y, r4.x, l(0)
add r1.w, r1.w, r3.x
mul r1.w, r4.y, r1.w
mad r0.y, r0.y, r3.y, r1.w
mul r0.y, r4.z, r0.y
mad r0.x, r0.x, r3.z, r0.y
log r0.x, r0.x
mul r0.x, r0.x, l(2.500000)
exp r0.x, r0.x
else
mov r0.x, l(1.000000)
endif
lt r0.y, l(0.000000), r0.x
if_nz r0.y
sample_l r3.xyzw, r0.zwzz, t2.xyzw, s0, l(0.000000)
mad r4.xyzw, r3.xyzw, l(2.000000, 2.000000, 2.000000, 1.000000), l(-1.000000, -1.000000, -1.000000, -0.000000)
dp4 r0.y, r4.xyzw, r4.xyzw
rsq r0.y, r0.y
mul r3.xyz, r0.yyyy, r4.xyzx
mul r0.y, r3.w, l(255.000000)
round_pi r0.y, r0.y
ftou r0.y, r0.y
sample_l r4.xyzw, r0.zwzz, t4.xyzw, s3, l(0.000000)
and r5.xy, r0.yyyy, l(2, 8, 0, 0)
if_z r5.x
and r1.w, r0.y, l(4)
if_nz r1.w
mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
else
and r1.w, r0.y, l(32)
if_nz r1.w
mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
else
mov r4.xyz, l(0,0,0,0)
endif
endif
endif
lt r1.w, l(0.000000), cb0[28].z
ieq r3.w, r5.y, l(0)
and r1.w, r1.w, r3.w
lt r3.w, l(0.000000), cb0[24].w
if_nz r3.w
add r5.yzw, -r1.xxyz, cb0[24].xxyz
dp3 r3.w, r5.yzwy, r5.yzwy
rsq r6.x, r3.w
mul r6.xyz, r5.yzwy, r6.xxxx
sqrt r6.w, r3.w
lt r7.x, l(0.000000), cb0[28].w
lt r7.y, l(0.000000), cb0[26].w
mul r8.xyz, -cb0[26].xyzx, cb0[26].wwww
mad r9.xyz, -r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy
mad r8.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy
dp3 r7.z, r9.xyzx, r9.xyzx
dp3 r7.w, r8.xyzx, r8.xyzx
sqrt r7.zw, r7.zzzw
dp3 r8.w, r9.xyzx, r8.xyzx
mad r8.w, r7.z, r7.w, r8.w
add r8.w, r8.w, l(0.000100)
div r8.w, l(2.000000), r8.w
mul r10.y, r8.w, l(32000.000000)
dp3 r8.w, r3.xyzx, r9.xyzx
dp3 r8.x, r3.xyzx, r8.xyzx
div r7.zw, r8.wwwx, r7.zzzw
add r7.z, r7.w, r7.z
mul_sat r10.x, r7.z, l(0.500000)
add r3.w, r3.w, l(1.000000)
div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w
mul r8.y, r3.w, l(32000.000000)
dp3 r8.x, r3.xyzx, r6.xyzx
movc r9.xy, r7.yyyy, r10.xyxx, r8.xyxx
mul r3.w, r6.w, cb0[24].w
mul r3.w, r3.w, r3.w
mad r3.w, -r3.w, r3.w, l(1.000000)
max r3.w, r3.w, l(0.000000)
mul r3.w, r3.w, r3.w
mul r9.z, r3.w, r9.y
mul r7.yzw, r5.yyzw, cb0[24].wwww
dp3 r3.w, r7.yzwy, r7.yzwy
min r3.w, r3.w, l(1.000000)
add r3.w, -r3.w, l(1.000000)
log r3.w, r3.w
mul r3.w, r3.w, cb0[25].w
exp r8.z, r3.w
movc r7.xy, r7.xxxx, r9.xzxx, r8.xzxx
dp3 r3.w, r6.xyzx, cb0[26].xyzx
add r3.w, r3.w, -cb0[27].x
mul_sat r3.w, r3.w, cb0[27].y
mul r3.w, r3.w, r3.w
else
dp3 r7.x, r3.xyzx, cb0[26].xyzx
mov r5.yzw, cb0[26].xxyz
mov r7.y, l(1.000000)
mov r3.w, l(1.000000)
endif
lt r6.x, l(0.000000), r7.y
lt r6.y, l(0.000000), r3.w
and r6.x, r6.y, r6.x
ieq r1.w, r1.w, l(0)
and r1.w, r1.w, r6.x
if_nz r1.w
sample_l r6.xyzw, r0.zwzz, t3.xyzw, s2, l(0.000000)
add r1.xyz, r1.xyzx, -cb2[5].xyzx
dp3 r1.w, r1.xyzx, r1.xyzx
rsq r1.w, r1.w
mul r1.xyz, r1.wwww, r1.xyzx
sample_l r8.xyzw, r0.zwzz, t5.xyzw, s1, l(0.000000)
add r8.xyzw, r8.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
mul r9.xyzw, r8.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
mad r0.z, r6.w, l(0.750000), l(0.250000)
mul r10.xyzw, r2.xyzw, r0.zzzz
mad_sat r0.z, r0.z, r2.w, -cb0[27].z
mul r0.z, r0.z, cb0[27].w
mul r2.xyz, r0.zzzz, r9.xyzx
and r0.yw, r0.yyyy, l(0, 32, 0, 4)
lt r1.w, l(0.000000), cb0[28].x
if_nz r1.w
lt r1.w, l(0.000000), cb0[26].w
if_nz r1.w
dp3 r1.w, -cb0[26].xyzx, -cb0[26].xyzx
rsq r1.w, r1.w
mul r8.xyz, r1.wwww, -cb0[26].xyzx
dp3 r1.w, r1.xyzx, r3.xyzx
add r1.w, r1.w, r1.w
mad r11.xyz, r3.xyzx, -r1.wwww, r1.xyzx
mul r8.xyz, r8.xyzx, cb0[26].wwww
mad r12.xyz, -r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.yzwy
dp3 r1.w, r11.xyzx, r8.xyzx
mad r13.xyz, r1.wwww, r11.xyzx, -r8.xyzx
dp3 r2.w, r12.xyzx, r13.xyzx
mul r1.w, r1.w, r1.w
mad r1.w, cb0[26].w, cb0[26].w, -r1.w
div_sat r1.w, r2.w, r1.w
mad r8.xyz, r1.wwww, r8.xyzx, r12.xyzx
dp3 r1.w, r8.xyzx, r11.xyzx
mad r11.xyz, r1.wwww, r11.xyzx, -r8.xyzx
dp3 r1.w, r11.xyzx, r11.xyzx
sqrt r1.w, r1.w
div_sat r1.w, cb0[28].x, r1.w
mad r8.xyz, r11.xyzx, r1.wwww, r8.xyzx
dp3 r1.w, r8.xyzx, r8.xyzx
sqrt r1.w, r1.w
div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w
mul r2.w, r1.w, cb0[26].w
mul r2.w, r2.w, l(1.57079637)
mad r6.w, cb0[26].w, r1.w, l(1.000000)
div r2.w, r2.w, r6.w
mul r6.w, r1.w, cb0[28].x
mul r6.w, r6.w, l(1.57079637)
mad r1.w, cb0[28].x, r1.w, l(1.000000)
div r1.w, r6.w, r1.w
mul r6.w, r9.w, r9.w
mad r2.w, r2.w, l(0.333330), r6.w
sqrt r2.w, r2.w
min r2.w, r2.w, l(1.000000)
div r2.w, r9.w, r2.w
mul r2.w, r2.w, r2.w
mad r1.w, r1.w, l(0.333330), r6.w
sqrt r1.w, r1.w
min r1.w, r1.w, l(1.000000)
div r1.w, r9.w, r1.w
mul r1.w, r1.w, r1.w
mul r1.w, r1.w, r1.w
mul r1.w, r1.w, r2.w
else
dp3 r2.w, r1.xyzx, r3.xyzx
add r2.w, r2.w, r2.w
mad r11.xyz, r3.xyzx, -r2.wwww, r1.xyzx
dp3 r2.w, r5.yzwy, r11.xyzx
mad r11.xyz, r2.wwww, r11.xyzx, -r5.yzwy
dp3 r2.w, r11.xyzx, r11.xyzx
sqrt r2.w, r2.w
div_sat r2.w, cb0[28].x, r2.w
mad r8.xyz, r11.xyzx, r2.wwww, r5.yzwy
dp3 r2.w, r8.xyzx, r8.xyzx
sqrt r2.w, r2.w
div r2.w, cb0[28].x, r2.w
mul r6.w, r2.w, l(1.57079637)
add r2.w, r2.w, l(1.000000)
div r2.w, r6.w, r2.w
mul r2.w, r2.w, l(0.333330)
mad r2.w, r9.w, r9.w, r2.w
sqrt r2.w, r2.w
min r2.w, r2.w, l(1.000000)
div r2.w, r9.w, r2.w
mul r2.w, r2.w, r2.w
mul r1.w, r2.w, r2.w
endif
mov r2.w, r9.w
else
add r6.w, -cb0[28].y, l(1.000000)
mad r2.w, r9.w, r6.w, cb0[28].y
mov r8.xyz, r5.yzwy
mov r1.w, l(1.000000)
endif
dp3 r6.w, r8.xyzx, r8.xyzx
rsq r6.w, r6.w
mul r11.xyz, r6.wwww, r8.xyzx
if_nz r0.y
dp3 r0.y, r11.xyzx, r4.xyzx
mad r7.z, -r0.y, r0.y, l(1.000000)
dp3 r4.z, -r1.xyzx, r4.xyzx
...

Dual boot Win 7 x64 & Win 10 (1809) | Geforce Drivers 417.35

Posted 02/16/2016 03:48 PM   
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.
You may try to change the lines:
Texture2D<uint> LightMaskTexture : register(t0);
...
r0.xyzw = LightMaskTexture.Load(r0.xyz).xyzw;



to
Texture2D<uint4> LightMaskTexture : register(t0);
...
r0.xyzw = LightMaskTexture.Load(r0.xy).xyzw;



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

Posted 02/16/2016 05:54 PM   
[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


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)

Posted 02/16/2016 09:11 PM   
I see it now. Does splitting the code into several blocks help anything?
I see it now. Does splitting the code into several blocks help anything?

EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64

Posted 02/16/2016 10:18 PM   
[quote="Oomek"]I see it now. Does splitting the code into several blocks help anything?[/quote] Across multiple posts... Yes, should work;)
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


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)

Posted 02/16/2016 10:25 PM   
Hehe, ok, noted.
Hehe, ok, noted.

EVGA GeForce GTX 980 SC
Core i5 2500K
MSI Z77A-G45
8GB DDR3
Windows 10 x64

Posted 02/17/2016 12:25 AM   
[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).
3DMigoto and cmd_Decompiler 1.2.30 are out:
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:
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]


... simple, right? ... No, Not really?

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

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

Posted 02/17/2016 03:47 PM   
[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

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

Posted 02/17/2016 04:28 PM   
[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!
DarkStarSword said:
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:

https://forums.geforce.com/default/topic/883659/3d-vision/star-wars-battlefront-2015-3d-vision-thread/post/4691539/#4691539


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.

Yup, it works. Thank you!

Dual boot Win 7 x64 & Win 10 (1809) | Geforce Drivers 417.35

Posted 02/17/2016 05:45 PM   
[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:

Image

[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


ShaderFixes\full_screen.hlsl:
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):


[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


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);
}


ShaderFixes\sbs2stereo.hlsl:
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;
}


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

Posted 02/19/2016 06:02 PM   
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

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

Posted 02/19/2016 07:21 PM   
[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?
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


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

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

Posted 02/19/2016 07:28 PM   
[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;)
DarkStarSword said:
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?
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

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


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)

Posted 02/19/2016 07:46 PM   
[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;)
https://github.com/bo3b/3Dmigoto/wiki/Resource-Copying

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

Posted 02/20/2016 03:49 AM   
  56 / 141    
Scroll To Top