// // Generated by Microsoft (R) D3D Shader Disassembler // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xyzw 0 NONE float xyzw // TEXCOORD 1 xy 1 NONE float xy // SV_Position 0 xyzw 2 POS float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer CB0[7], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default dcl_sampler s3, 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_input_ps linear v0.xyzw dcl_input_ps linear v1.xy dcl_input_ps_siv linear noperspective v2.xy, position dcl_output o0.xyzw dcl_temps 4 0: sample r0.xyzw, v0.xyxx, t1.xyzw, s1 1: sample r1.xyzw, v1.xyxx, t2.xyzw, s2 2: if_nz cb0[3].w 3: mul r0.xz, v2.xxyx, cb0[0].zzwz 4: sample r2.xyzw, r0.xzxx, t0.xyzw, s0 5: else 6: mov r2.xyz, l(0,0,0,0) 7: endif 8: sample r3.xyzw, v0.zwzz, t3.xyzw, s3 9: mul r0.xzw, r2.xxyz, cb0[5].yyzw 10: mul r1.xyz, r3.wwww, cb0[5].yzwy 11: mul r1.xyz, r1.xyzx, cb0[6].xxxx 12: mad r0.y, r0.y, cb0[4].w, l(1.000000) 13: mul r1.xyz, r0.yyyy, r1.xyzx 14: add r0.y, r1.w, -cb0[4].x 15: lt r1.w, r0.y, l(0.000000) 16: discard_nz r1.w 17: mov_sat r0.y, r0.y 18: mad r0.xzw, r0.xxzw, cb0[4].zzzz, r1.xxyz 19: mul r0.xzw, r0.yyyy, r0.xxzw 20: mul r0.xzw, r0.xxzw, cb0[4].yyyy 21: mul r0.y, r0.y, cb0[5].x 22: mul_sat o0.w, r0.y, cb0[4].y 23: mul r1.xyz, r0.zzzz, cb0[2].xyzx 24: mad r0.xyz, r0.xxxx, cb0[1].xyzx, r1.xyzx 25: mad o0.xyz, r0.wwww, cb0[3].xyzx, r0.xyzx 26: ret // Approximately 0 instruction slots used textures: 0 - downsampled and a bit darkened scene to 320 x 180 1 - smoke texture 2 - blurred areas which will be dark 3 - black square texture where every second pixel row is fully transparent blend state: BlendOp: ADD SrcBlend: ONE DestBlend: INV_SRC_ALPHA constant buffer: #,float4 "0","{+1920, +1080, +0.00052083336, +0.00092592591}" "1","{+1, +0, +0, +0}" "2","{+0, +1, +0, +0}" "3","{+0, +0, +1, +1.4012985e-45}" "4","{+0.15000001, +1, +0.121, +3}" "5","{+0.80000001, +1, +0.068000004, +0.025}" "6","{+0.061999999, +3.0181134e-06, +9.8460732e-06, +0.75684607}" the rest is all 0 shader: float4 r0 = texture1.Sample(s1, v0.xy); float4 r1 = texture2.Sample(s2, v1.xy); float4 r2; if (cb0[3].w != 0) { r0.xz = v2.xx * cb0[0].zz; r2 = texture0.Sample(s0, r0.xz); } else r2 = float4(0,0,0,0); float4 r3 = texture3.Sample(s3, v0.zw); r0.xzw = r2.xxy * cb0[5].yyz; r1.xyz = r3.www * cb0[5].yzw * cb0[6].xxx; r0.y = r0.y * cb0[4].w + 1.0; r1.xyz = r0.yyy * r1.xyz; r0.y = r1.w - cb0[4].x; if (r0.y < 0.0) discard; r0.y = saturate(r0.y); r0.xzw = r0.xxz * cb0[4].zzz + r1.xxy; r0.xzw = r0.yyy * r0.xxz; r0.xzw = r0.xxz * cb0[4].yyy; r0.y = r0.y * cb0[5].x; o.w = saturate(r0.y * cb0[4].y); r1.xyz = r0.zzz * cb0[2].xyz; r0.xyz = r0.xxx * cb0[1].xyz + r1.xyz; o.xyz = r0.www * cb0[3].xyz + r0.xyz; shader with constants: float4 r0 = texture1.Sample(s1, v0.xy); float4 r1 = texture2.Sample(s2, v1.xy); float4 r2; if (1.4012985e-45 != 0) { r0.xz = v2.xx * 0.00052083336; r2 = texture0.Sample(s0, r0.xz); } else r2 = float4(0,0,0,0); float4 r3 = texture3.Sample(s3, v0.zw); r0.xzw = r2.xxy * float3(1, 1, 0.068); r1.xyz = r3.www * float3(1, 0.068, 0.025) * 0.062; r0.y = r0.y * 3 + 1.0; r1.xyz = r0.yyy * r1.xyz; r0.y = r1.w - 0.15; if (r0.y < 0.0) discard; r0.y = saturate(r0.y); r0.xzw = r0.xxz * 0.121 + r1.xxy; r0.xzw = r0.yyy * r0.xxz; r0.xzw = r0.xxz * 1; r0.y *= 0.8; o.w = saturate(r0.y * 1); o.xyz = r0.x * float3(1, 0, 0) + r0.z * float3(0, 1, 0) + r0.w * float3(0, 0, 1);