Skip to content

Instantly share code, notes, and snippets.

@rossy
Created October 10, 2017 14:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rossy/55f71c4d6e03d0bcd7fd54d53047604a to your computer and use it in GitHub Desktop.
Save rossy/55f71c4d6e03d0bcd7fd54d53047604a to your computer and use it in GitHub Desktop.
[vo/gpu/d3d11] D3DCompile failed: Unspecified error (0x80004005)
[vo/gpu/d3d11] C:\msys64\home\rossy\mpv\Shader@0x000000001529CFA0(58,46-51): error X3004: undeclared identifier '_22_m0'
[vo/gpu/d3d11] C:\msys64\home\rossy\mpv\Shader@0x000000001529CFA0(58,17-52): error X3013: 'lerp': no matching 3 parameter intrinsic function
[vo/gpu/d3d11] C:\msys64\home\rossy\mpv\Shader@0x000000001529CFA0(58,17-52): error X3013: Possible intrinsic functions are:
[vo/gpu/d3d11] C:\msys64\home\rossy\mpv\Shader@0x000000001529CFA0(58,17-52): error X3013: lerp(float|half|min10float|min16float, float|half|min10float|min16float, float|half|min10float|min16float)
[vo/gpu/d3d11] GLSL source:
[vo/gpu/d3d11] [ 1] #version 450
[vo/gpu/d3d11] [ 2] #define tex1D texture
[vo/gpu/d3d11] [ 3] #define tex3D texture
[vo/gpu/d3d11] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))
[vo/gpu/d3d11] [ 5] layout(location=0) out vec4 out_color;
[vo/gpu/d3d11] [ 6] layout(location=1) in vec2 texcoord0;
[vo/gpu/d3d11] [ 7] layout(location=2) in vec2 texcoord1;
[vo/gpu/d3d11] [ 8] layout(location=3) in vec2 texcoord2;
[vo/gpu/d3d11] [ 9] layout(location=4) in vec2 texcoord3;
[vo/gpu/d3d11] [ 10] layout(std140, binding=0) uniform UBO {
[vo/gpu/d3d11] [ 11] layout(offset=0) float fcoord;
[vo/gpu/d3d11] [ 12] layout(offset=16) vec3 src_luma;
[vo/gpu/d3d11] [ 13] layout(offset=32) vec3 dst_luma;
[vo/gpu/d3d11] [ 14] layout(offset=48) mat3 cms_matrix;
[vo/gpu/d3d11] [ 15] layout(offset=96) vec2 texture_size0;
[vo/gpu/d3d11] [ 16] layout(offset=112) mat2 texture_rot0;
[vo/gpu/d3d11] [ 17] layout(offset=136) vec2 texture_off0;
[vo/gpu/d3d11] [ 18] layout(offset=144) vec2 pixel_size0;
[vo/gpu/d3d11] [ 19] layout(offset=152) vec2 texture_size1;
[vo/gpu/d3d11] [ 20] layout(offset=160) mat2 texture_rot1;
[vo/gpu/d3d11] [ 21] layout(offset=184) vec2 texture_off1;
[vo/gpu/d3d11] [ 22] layout(offset=192) vec2 pixel_size1;
[vo/gpu/d3d11] [ 23] layout(offset=200) vec2 texture_size2;
[vo/gpu/d3d11] [ 24] layout(offset=208) mat2 texture_rot2;
[vo/gpu/d3d11] [ 25] layout(offset=232) vec2 texture_off2;
[vo/gpu/d3d11] [ 26] layout(offset=240) vec2 pixel_size2;
[vo/gpu/d3d11] [ 27] layout(offset=248) vec2 texture_size3;
[vo/gpu/d3d11] [ 28] layout(offset=256) mat2 texture_rot3;
[vo/gpu/d3d11] [ 29] layout(offset=280) vec2 texture_off3;
[vo/gpu/d3d11] [ 30] layout(offset=288) vec2 pixel_size3;
[vo/gpu/d3d11] [ 31] };
[vo/gpu/d3d11] [ 32] layout(binding=0) uniform sampler2D lut;
[vo/gpu/d3d11] [ 33] layout(binding=1) uniform sampler2D texture0;
[vo/gpu/d3d11] [ 34] layout(binding=2) uniform sampler2D texture1;
[vo/gpu/d3d11] [ 35] layout(binding=3) uniform sampler2D texture2;
[vo/gpu/d3d11] [ 36] layout(binding=4) uniform sampler2D texture3;
[vo/gpu/d3d11] [ 37] const float sig_peak = 10.000000;
[vo/gpu/d3d11] [ 38] void main() {
[vo/gpu/d3d11] [ 39] vec4 color = vec4(0.0, 0.0, 0.0, 1.0);
[vo/gpu/d3d11] [ 40] color = vec4(0.0);
[vo/gpu/d3d11] [ 41] {
[vo/gpu/d3d11] [ 42] vec4 c;
[vo/gpu/d3d11] [ 43] float ypos = LUT_POS(fcoord, 64.0);
[vo/gpu/d3d11] [ 44] float weights[4];
[vo/gpu/d3d11] [ 45] c = texture(lut, vec2(0.500000, ypos));
[vo/gpu/d3d11] [ 46] weights[0] = c[0];
[vo/gpu/d3d11] [ 47] weights[1] = c[1];
[vo/gpu/d3d11] [ 48] weights[2] = c[2];
[vo/gpu/d3d11] [ 49] weights[3] = c[3];
[vo/gpu/d3d11] [ 50] // scaler samples
[vo/gpu/d3d11] [ 51] c = texture(texture0, texcoord0);
[vo/gpu/d3d11] [ 52] color += vec4(weights[0]) * c;
[vo/gpu/d3d11] [ 53] c = texture(texture1, texcoord1);
[vo/gpu/d3d11] [ 54] color += vec4(weights[1]) * c;
[vo/gpu/d3d11] [ 55] c = texture(texture2, texcoord2);
[vo/gpu/d3d11] [ 56] color += vec4(weights[2]) * c;
[vo/gpu/d3d11] [ 57] c = texture(texture3, texcoord3);
[vo/gpu/d3d11] [ 58] color += vec4(weights[3]) * c;
[vo/gpu/d3d11] [ 59] }
[vo/gpu/d3d11] [ 60] // color mapping
[vo/gpu/d3d11] [ 61] // rescale value range;
[vo/gpu/d3d11] [ 62] color.rgb *= vec3(100.000000);
[vo/gpu/d3d11] [ 63] color.rgb = cms_matrix * color.rgb;
[vo/gpu/d3d11] [ 64] // HDR tone mapping
[vo/gpu/d3d11] [ 65] float luma = dot(dst_luma, color.rgb);
[vo/gpu/d3d11] [ 66] float overbright = max(luma - 2.000000, 1e-6) / max(luma, 1e-6);
[vo/gpu/d3d11] [ 67] color.rgb = mix(color.rgb, vec3(luma), overbright);
[vo/gpu/d3d11] [ 68] float sig = max(max(color.r, color.g), color.b);
[vo/gpu/d3d11] [ 69] float sig_orig = sig;
[vo/gpu/d3d11] [ 70] const float j = 0.300000;
[vo/gpu/d3d11] [ 71] float a = -j*j * (sig_peak - 1.0) / (j*j - 2.0*j + sig_peak);
[vo/gpu/d3d11] [ 72] float b = (j*j - 2.0*j*sig_peak + sig_peak) / max(1e-6, sig_peak - 1.0);
[vo/gpu/d3d11] [ 73] float scale = (b*b + 2.0*b*j + j*j) / (b-a);
[vo/gpu/d3d11] [ 74] sig = mix(sig, scale * (sig + a) / (sig + b), sig > j);
[vo/gpu/d3d11] [ 75] color.rgb *= sig / sig_orig;
[vo/gpu/d3d11] [ 76] // delinearize
[vo/gpu/d3d11] [ 77] color.rgb = clamp(color.rgb, 0.0, 1.0);
[vo/gpu/d3d11] [ 78] color.rgb *= vec3(1.000000);
[vo/gpu/d3d11] [ 79] color.rgb = pow(color.rgb, vec3(1.0/2.2));
[vo/gpu/d3d11] [ 80] out_color = color;
[vo/gpu/d3d11] [ 81] }
[vo/gpu/d3d11] HLSL source:
[vo/gpu/d3d11] [ 1] cbuffer _22 : register(b0)
[vo/gpu/d3d11] [ 2] {
[vo/gpu/d3d11] [ 3] float _m0 : packoffset(c0);
[vo/gpu/d3d11] [ 4] float3 _m1 : packoffset(c1);
[vo/gpu/d3d11] [ 5] float3 _m2 : packoffset(c2);
[vo/gpu/d3d11] [ 6] row_major float3x3 _m3 : packoffset(c3);
[vo/gpu/d3d11] [ 7] float2 _m4 : packoffset(c6);
[vo/gpu/d3d11] [ 8] row_major float2x2 _m5 : packoffset(c7);
[vo/gpu/d3d11] [ 9] float2 _m6 : packoffset(c8.z);
[vo/gpu/d3d11] [ 10] float2 _m7 : packoffset(c9);
[vo/gpu/d3d11] [ 11] float2 _m8 : packoffset(c9.z);
[vo/gpu/d3d11] [ 12] row_major float2x2 _m9 : packoffset(c10);
[vo/gpu/d3d11] [ 13] float2 _m10 : packoffset(c11.z);
[vo/gpu/d3d11] [ 14] float2 _m11 : packoffset(c12);
[vo/gpu/d3d11] [ 15] float2 _m12 : packoffset(c12.z);
[vo/gpu/d3d11] [ 16] row_major float2x2 _m13 : packoffset(c13);
[vo/gpu/d3d11] [ 17] float2 _m14 : packoffset(c14.z);
[vo/gpu/d3d11] [ 18] float2 _m15 : packoffset(c15);
[vo/gpu/d3d11] [ 19] float2 _m16 : packoffset(c15.z);
[vo/gpu/d3d11] [ 20] row_major float2x2 _m17 : packoffset(c16);
[vo/gpu/d3d11] [ 21] float2 _m18 : packoffset(c17.z);
[vo/gpu/d3d11] [ 22] float2 _m19 : packoffset(c18);
[vo/gpu/d3d11] [ 23] };
[vo/gpu/d3d11] [ 24] Texture2D<float4> _35 : register(t0);
[vo/gpu/d3d11] [ 25] SamplerState __35_sampler : register(s0);
[vo/gpu/d3d11] [ 26] Texture2D<float4> _65 : register(t1);
[vo/gpu/d3d11] [ 27] SamplerState __65_sampler : register(s1);
[vo/gpu/d3d11] [ 28] Texture2D<float4> _78 : register(t2);
[vo/gpu/d3d11] [ 29] SamplerState __78_sampler : register(s2);
[vo/gpu/d3d11] [ 30] Texture2D<float4> _90 : register(t3);
[vo/gpu/d3d11] [ 31] SamplerState __90_sampler : register(s3);
[vo/gpu/d3d11] [ 32] Texture2D<float4> _102 : register(t4);
[vo/gpu/d3d11] [ 33] SamplerState __102_sampler : register(s4);
[vo/gpu/d3d11] [ 34]
[vo/gpu/d3d11] [ 35] static float2 _68;
[vo/gpu/d3d11] [ 36] static float2 _80;
[vo/gpu/d3d11] [ 37] static float2 _92;
[vo/gpu/d3d11] [ 38] static float2 _104;
[vo/gpu/d3d11] [ 39] static float4 _227;
[vo/gpu/d3d11] [ 40]
[vo/gpu/d3d11] [ 41] struct SPIRV_Cross_Input
[vo/gpu/d3d11] [ 42] {
[vo/gpu/d3d11] [ 43] float2 _68 : TEXCOORD1;
[vo/gpu/d3d11] [ 44] float2 _80 : TEXCOORD2;
[vo/gpu/d3d11] [ 45] float2 _92 : TEXCOORD3;
[vo/gpu/d3d11] [ 46] float2 _104 : TEXCOORD4;
[vo/gpu/d3d11] [ 47] };
[vo/gpu/d3d11] [ 48]
[vo/gpu/d3d11] [ 49] struct SPIRV_Cross_Output
[vo/gpu/d3d11] [ 50] {
[vo/gpu/d3d11] [ 51] float4 _227 : SV_Target0;
[vo/gpu/d3d11] [ 52] };
[vo/gpu/d3d11] [ 53]
[vo/gpu/d3d11] [ 54] void frag_main()
[vo/gpu/d3d11] [ 55] {
[vo/gpu/d3d11] [ 56] float4 _9 = float4(0.0f, 0.0f, 0.0f, 1.0f);
[vo/gpu/d3d11] [ 57] _9 = float4(0.0f, 0.0f, 0.0f, 0.0f);
[vo/gpu/d3d11] [ 58] float _15 = lerp(0.0078125f, 0.9921875f, _22_m0);
[vo/gpu/d3d11] [ 59] float4 _31 = _35.Sample(__35_sampler, float2(0.5f, _15));
[vo/gpu/d3d11] [ 60] float _45[4];
[vo/gpu/d3d11] [ 61] _45[0] = _31.x;
[vo/gpu/d3d11] [ 62] _45[1] = _31.y;
[vo/gpu/d3d11] [ 63] _45[2] = _31.z;
[vo/gpu/d3d11] [ 64] _45[3] = _31.w;
[vo/gpu/d3d11] [ 65] _31 = _65.Sample(__65_sampler, _68);
[vo/gpu/d3d11] [ 66] _9 += (float4(_45[0], _45[0], _45[0], _45[0]) * _31);
[vo/gpu/d3d11] [ 67] _31 = _78.Sample(__78_sampler, _80);
[vo/gpu/d3d11] [ 68] _9 += (float4(_45[1], _45[1], _45[1], _45[1]) * _31);
[vo/gpu/d3d11] [ 69] _31 = _90.Sample(__90_sampler, _92);
[vo/gpu/d3d11] [ 70] _9 += (float4(_45[2], _45[2], _45[2], _45[2]) * _31);
[vo/gpu/d3d11] [ 71] _31 = _102.Sample(__102_sampler, _104);
[vo/gpu/d3d11] [ 72] _9 += (float4(_45[3], _45[3], _45[3], _45[3]) * _31);
[vo/gpu/d3d11] [ 73] float3 _118 = _9.xyz * float3(100.0f, 100.0f, 100.0f);
[vo/gpu/d3d11] [ 74] _9 = float4(_118.x, _118.y, _118.z, _9.w);
[vo/gpu/d3d11] [ 75] float3 _126 = mul(_9.xyz, _22_m3);
[vo/gpu/d3d11] [ 76] _9 = float4(_126.x, _126.y, _126.z, _9.w);
[vo/gpu/d3d11] [ 77] float _129 = dot(_22_m2, _9.xyz);
[vo/gpu/d3d11] [ 78] float _136 = max(_129 - 2.0f, 9.9999999747524270787835121154785e-007f) / max(_129, 9.9999999747524270787835121154785e-007f);
[vo/gpu/d3d11] [ 79] float3 _151 = lerp(_9.xyz, float3(_129, _129, _129), float3(_136, _136, _136));
[vo/gpu/d3d11] [ 80] _9 = float4(_151.x, _151.y, _151.z, _9.w);
[vo/gpu/d3d11] [ 81] float _154 = max(max(_9.x, _9.y), _9.z);
[vo/gpu/d3d11] [ 82] float _163 = _154;
[vo/gpu/d3d11] [ 83] float _165 = -0.08535300195217132568359375f;
[vo/gpu/d3d11] [ 84] float _167 = 0.4544444382190704345703125f;
[vo/gpu/d3d11] [ 85] float _169 = (((_167 * _167) + ((2.0f * _167) * 0.300000011920928955078125f)) + 0.0900000035762786865234375f) / (_167 - _165);
[vo/gpu/d3d11] [ 86] _154 = (_154 > 0.300000011920928955078125f) ? ((_169 * (_154 + _165)) / (_154 + _167)) : _154;
[vo/gpu/d3d11] [ 87] float3 _203 = _9.xyz * (_154 / _163);
[vo/gpu/d3d11] [ 88] _9 = float4(_203.x, _203.y, _203.z, _9.w);
[vo/gpu/d3d11] [ 89] float3 _210 = clamp(_9.xyz, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f));
[vo/gpu/d3d11] [ 90] _9 = float4(_210.x, _210.y, _210.z, _9.w);
[vo/gpu/d3d11] [ 91] float3 _216 = _9.xyz * float3(1.0f, 1.0f, 1.0f);
[vo/gpu/d3d11] [ 92] _9 = float4(_216.x, _216.y, _216.z, _9.w);
[vo/gpu/d3d11] [ 93] float3 _223 = pow(_9.xyz, float3(0.4545454680919647216796875f, 0.4545454680919647216796875f, 0.4545454680919647216796875f));
[vo/gpu/d3d11] [ 94] _9 = float4(_223.x, _223.y, _223.z, _9.w);
[vo/gpu/d3d11] [ 95] _227 = _9;
[vo/gpu/d3d11] [ 96] }
[vo/gpu/d3d11] [ 97]
[vo/gpu/d3d11] [ 98] SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
[vo/gpu/d3d11] [ 99] {
[vo/gpu/d3d11] [100] _68 = stage_input._68;
[vo/gpu/d3d11] [101] _80 = stage_input._80;
[vo/gpu/d3d11] [102] _92 = stage_input._92;
[vo/gpu/d3d11] [103] _104 = stage_input._104;
[vo/gpu/d3d11] [104] frag_main();
[vo/gpu/d3d11] [105] SPIRV_Cross_Output stage_output;
[vo/gpu/d3d11] [106] stage_output._227 = _227;
[vo/gpu/d3d11] [107] return stage_output;
[vo/gpu/d3d11] [108] }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment