зеркало из https://github.com/stride3d/xkslang.git
Merge branch 'ClemensRognerSD-dx9-sampler'
This commit is contained in:
Коммит
dc4fe2d648
|
@ -160,6 +160,7 @@ const char* sourceEntryPointName = nullptr;
|
|||
const char* shaderStageName = nullptr;
|
||||
const char* variableName = nullptr;
|
||||
bool HlslEnable16BitTypes = false;
|
||||
bool HlslDX9compatible = false;
|
||||
std::vector<std::string> IncludeDirectoryList;
|
||||
|
||||
// Source environment
|
||||
|
@ -509,6 +510,8 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||
Options |= EOptionHlslIoMapping;
|
||||
} else if (lowerword == "hlsl-enable-16bit-types") {
|
||||
HlslEnable16BitTypes = true;
|
||||
} else if (lowerword == "hlsl-dx9-compatible") {
|
||||
HlslDX9compatible = true;
|
||||
} else if (lowerword == "invert-y" || // synonyms
|
||||
lowerword == "iy") {
|
||||
Options |= EOptionInvertY;
|
||||
|
@ -815,6 +818,8 @@ void SetMessageOptions(EShMessages& messages)
|
|||
messages = (EShMessages)(messages | EShMsgHlslEnable16BitTypes);
|
||||
if ((Options & EOptionOptimizeDisable) || !ENABLE_OPT)
|
||||
messages = (EShMessages)(messages | EShMsgHlslLegalization);
|
||||
if (HlslDX9compatible)
|
||||
messages = (EShMessages)(messages | EShMsgHlslDX9Compatible);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1509,6 +1514,7 @@ void usage()
|
|||
" works independently of source language\n"
|
||||
" --hlsl-iomap perform IO mapping in HLSL register space\n"
|
||||
" --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n"
|
||||
" --hlsl-dx9-compatible interprets sampler declarations as a texture/sampler combo like DirectX9 would."
|
||||
" --invert-y | --iy invert position.Y output in vertex shader\n"
|
||||
" --keep-uncalled | --ku don't eliminate uncalled functions\n"
|
||||
" --no-storage-format | --nsf use Unknown image format\n"
|
||||
|
|
|
@ -0,0 +1,592 @@
|
|||
hlsl.sample.dx9.frag
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
using depth_any
|
||||
0:? Sequence
|
||||
0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Parameters:
|
||||
0:? Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp 4-component vector of float)
|
||||
0:18 'ColorOut' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:20 add second child into first child ( temp 4-component vector of float)
|
||||
0:20 'ColorOut' ( temp 4-component vector of float)
|
||||
0:20 texture ( temp 4-component vector of float)
|
||||
0:20 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:21 add second child into first child ( temp 4-component vector of float)
|
||||
0:21 'ColorOut' ( temp 4-component vector of float)
|
||||
0:21 texture ( temp 4-component vector of float)
|
||||
0:21 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:21 Constant:
|
||||
0:21 0.500000
|
||||
0:22 add second child into first child ( temp 4-component vector of float)
|
||||
0:22 'ColorOut' ( temp 4-component vector of float)
|
||||
0:22 texture ( temp 4-component vector of float)
|
||||
0:22 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:23 add second child into first child ( temp 4-component vector of float)
|
||||
0:23 'ColorOut' ( temp 4-component vector of float)
|
||||
0:23 texture ( temp 4-component vector of float)
|
||||
0:23 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:24 add second child into first child ( temp 4-component vector of float)
|
||||
0:24 'ColorOut' ( temp 4-component vector of float)
|
||||
0:24 texture ( temp 4-component vector of float)
|
||||
0:24 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:26 add second child into first child ( temp 4-component vector of float)
|
||||
0:26 'ColorOut' ( temp 4-component vector of float)
|
||||
0:26 textureLod ( temp 4-component vector of float)
|
||||
0:26 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:26 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:26 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:26 Constant:
|
||||
0:26 3 (const int)
|
||||
0:27 add second child into first child ( temp 4-component vector of float)
|
||||
0:27 'ColorOut' ( temp 4-component vector of float)
|
||||
0:27 textureLod ( temp 4-component vector of float)
|
||||
0:27 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:27 Construct float ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:27 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:27 Constant:
|
||||
0:27 3 (const int)
|
||||
0:28 add second child into first child ( temp 4-component vector of float)
|
||||
0:28 'ColorOut' ( temp 4-component vector of float)
|
||||
0:28 textureLod ( temp 4-component vector of float)
|
||||
0:28 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:28 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:28 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:29 add second child into first child ( temp 4-component vector of float)
|
||||
0:29 'ColorOut' ( temp 4-component vector of float)
|
||||
0:29 textureLod ( temp 4-component vector of float)
|
||||
0:29 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:29 Construct vec3 ( temp 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:29 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:30 add second child into first child ( temp 4-component vector of float)
|
||||
0:30 'ColorOut' ( temp 4-component vector of float)
|
||||
0:30 textureLod ( temp 4-component vector of float)
|
||||
0:30 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:30 Construct vec3 ( temp 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:30 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:32 move second child to first child ( temp 4-component vector of float)
|
||||
0:32 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 divide ( temp 4-component vector of float)
|
||||
0:32 'ColorOut' ( temp 4-component vector of float)
|
||||
0:32 Constant:
|
||||
0:32 10.000000
|
||||
0:33 move second child to first child ( temp float)
|
||||
0:33 Depth: direct index for structure ( temp float)
|
||||
0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1.000000
|
||||
0:35 Branch: Return with expression
|
||||
0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Definition: main( ( temp void)
|
||||
0:15 Function Parameters:
|
||||
0:? Sequence
|
||||
0:15 Sequence
|
||||
0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
|
||||
0:15 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 move second child to first child ( temp float)
|
||||
0:? '@entryPointOutput.Depth' ( out float FragDepth)
|
||||
0:15 Depth: direct index for structure ( temp float)
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:? 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:? 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:? 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:? '@entryPointOutput.Depth' ( out float FragDepth)
|
||||
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
using depth_any
|
||||
0:? Sequence
|
||||
0:15 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Parameters:
|
||||
0:? Sequence
|
||||
0:18 Sequence
|
||||
0:18 move second child to first child ( temp 4-component vector of float)
|
||||
0:18 'ColorOut' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:20 add second child into first child ( temp 4-component vector of float)
|
||||
0:20 'ColorOut' ( temp 4-component vector of float)
|
||||
0:20 texture ( temp 4-component vector of float)
|
||||
0:20 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:21 add second child into first child ( temp 4-component vector of float)
|
||||
0:21 'ColorOut' ( temp 4-component vector of float)
|
||||
0:21 texture ( temp 4-component vector of float)
|
||||
0:21 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:21 Constant:
|
||||
0:21 0.500000
|
||||
0:22 add second child into first child ( temp 4-component vector of float)
|
||||
0:22 'ColorOut' ( temp 4-component vector of float)
|
||||
0:22 texture ( temp 4-component vector of float)
|
||||
0:22 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:23 add second child into first child ( temp 4-component vector of float)
|
||||
0:23 'ColorOut' ( temp 4-component vector of float)
|
||||
0:23 texture ( temp 4-component vector of float)
|
||||
0:23 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:24 add second child into first child ( temp 4-component vector of float)
|
||||
0:24 'ColorOut' ( temp 4-component vector of float)
|
||||
0:24 texture ( temp 4-component vector of float)
|
||||
0:24 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:26 add second child into first child ( temp 4-component vector of float)
|
||||
0:26 'ColorOut' ( temp 4-component vector of float)
|
||||
0:26 textureLod ( temp 4-component vector of float)
|
||||
0:26 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:26 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:26 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.400000
|
||||
0:? 0.300000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:26 Constant:
|
||||
0:26 3 (const int)
|
||||
0:27 add second child into first child ( temp 4-component vector of float)
|
||||
0:27 'ColorOut' ( temp 4-component vector of float)
|
||||
0:27 textureLod ( temp 4-component vector of float)
|
||||
0:27 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:27 Construct float ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:27 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:27 Constant:
|
||||
0:27 3 (const int)
|
||||
0:28 add second child into first child ( temp 4-component vector of float)
|
||||
0:28 'ColorOut' ( temp 4-component vector of float)
|
||||
0:28 textureLod ( temp 4-component vector of float)
|
||||
0:28 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:28 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:28 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:28 Constant:
|
||||
0:28 3 (const int)
|
||||
0:29 add second child into first child ( temp 4-component vector of float)
|
||||
0:29 'ColorOut' ( temp 4-component vector of float)
|
||||
0:29 textureLod ( temp 4-component vector of float)
|
||||
0:29 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:29 Construct vec3 ( temp 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:29 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:29 Constant:
|
||||
0:29 3 (const int)
|
||||
0:30 add second child into first child ( temp 4-component vector of float)
|
||||
0:30 'ColorOut' ( temp 4-component vector of float)
|
||||
0:30 textureLod ( temp 4-component vector of float)
|
||||
0:30 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:30 Construct vec3 ( temp 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:30 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:30 Constant:
|
||||
0:30 3 (const int)
|
||||
0:32 move second child to first child ( temp 4-component vector of float)
|
||||
0:32 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:32 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:32 divide ( temp 4-component vector of float)
|
||||
0:32 'ColorOut' ( temp 4-component vector of float)
|
||||
0:32 Constant:
|
||||
0:32 10.000000
|
||||
0:33 move second child to first child ( temp float)
|
||||
0:33 Depth: direct index for structure ( temp float)
|
||||
0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1.000000
|
||||
0:35 Branch: Return with expression
|
||||
0:35 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Definition: main( ( temp void)
|
||||
0:15 Function Parameters:
|
||||
0:? Sequence
|
||||
0:15 Sequence
|
||||
0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
|
||||
0:15 Color: direct index for structure ( temp 4-component vector of float)
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Constant:
|
||||
0:15 0 (const int)
|
||||
0:15 move second child to first child ( temp float)
|
||||
0:? '@entryPointOutput.Depth' ( out float FragDepth)
|
||||
0:15 Depth: direct index for structure ( temp float)
|
||||
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
|
||||
0:15 Constant:
|
||||
0:15 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? 'g_sam1D' (layout( binding=1) uniform sampler1D)
|
||||
0:? 'g_sam2D' (layout( binding=2) uniform sampler2D)
|
||||
0:? 'g_sam3D' (layout( binding=3) uniform sampler3D)
|
||||
0:? 'g_samCube' (layout( binding=4) uniform samplerCube)
|
||||
0:? '@entryPointOutput.Depth' ( out float FragDepth)
|
||||
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 135
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
2: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5 "main" 128 132
|
||||
ExecutionMode 5 OriginUpperLeft
|
||||
ExecutionMode 5 DepthReplacing
|
||||
1: String ""
|
||||
Source HLSL 500 1 "// OpModuleProcessed auto-map-locations
|
||||
// OpModuleProcessed auto-map-bindings
|
||||
// OpModuleProcessed entry-point main
|
||||
// OpModuleProcessed client vulkan100
|
||||
// OpModuleProcessed target-env vulkan1.0
|
||||
// OpModuleProcessed keep-uncalled
|
||||
// OpModuleProcessed hlsl-offsets
|
||||
#line 1
|
||||
"
|
||||
Name 5 "main"
|
||||
Name 9 "PS_OUTPUT"
|
||||
MemberName 9(PS_OUTPUT) 0 "Color"
|
||||
MemberName 9(PS_OUTPUT) 1 "Depth"
|
||||
Name 11 "@main("
|
||||
Name 14 "ColorOut"
|
||||
Name 20 "g_sam"
|
||||
Name 32 "g_sam1D"
|
||||
Name 38 "g_sam2D"
|
||||
Name 48 "g_sam3D"
|
||||
Name 58 "g_samCube"
|
||||
Name 110 "psout"
|
||||
Name 125 "flattenTemp"
|
||||
Name 128 "@entryPointOutput.Color"
|
||||
Name 132 "@entryPointOutput.Depth"
|
||||
Decorate 20(g_sam) DescriptorSet 0
|
||||
Decorate 20(g_sam) Binding 0
|
||||
Decorate 32(g_sam1D) DescriptorSet 0
|
||||
Decorate 32(g_sam1D) Binding 1
|
||||
Decorate 38(g_sam2D) DescriptorSet 0
|
||||
Decorate 38(g_sam2D) Binding 2
|
||||
Decorate 48(g_sam3D) DescriptorSet 0
|
||||
Decorate 48(g_sam3D) Binding 3
|
||||
Decorate 58(g_samCube) DescriptorSet 0
|
||||
Decorate 58(g_samCube) Binding 4
|
||||
Decorate 128(@entryPointOutput.Color) Location 0
|
||||
Decorate 132(@entryPointOutput.Depth) BuiltIn FragDepth
|
||||
3: TypeVoid
|
||||
4: TypeFunction 3
|
||||
7: TypeFloat 32
|
||||
8: TypeVector 7(float) 4
|
||||
9(PS_OUTPUT): TypeStruct 8(fvec4) 7(float)
|
||||
10: TypeFunction 9(PS_OUTPUT)
|
||||
13: TypePointer Function 8(fvec4)
|
||||
15: 7(float) Constant 0
|
||||
16: 8(fvec4) ConstantComposite 15 15 15 15
|
||||
17: TypeImage 7(float) 2D sampled format:Unknown
|
||||
18: TypeSampledImage 17
|
||||
19: TypePointer UniformConstant 18
|
||||
20(g_sam): 19(ptr) Variable UniformConstant
|
||||
22: TypeVector 7(float) 2
|
||||
23: 7(float) Constant 1053609165
|
||||
24: 7(float) Constant 1050253722
|
||||
25: 22(fvec2) ConstantComposite 23 24
|
||||
29: TypeImage 7(float) 1D sampled format:Unknown
|
||||
30: TypeSampledImage 29
|
||||
31: TypePointer UniformConstant 30
|
||||
32(g_sam1D): 31(ptr) Variable UniformConstant
|
||||
34: 7(float) Constant 1056964608
|
||||
38(g_sam2D): 19(ptr) Variable UniformConstant
|
||||
40: 7(float) Constant 1058642330
|
||||
41: 22(fvec2) ConstantComposite 34 40
|
||||
45: TypeImage 7(float) 3D sampled format:Unknown
|
||||
46: TypeSampledImage 45
|
||||
47: TypePointer UniformConstant 46
|
||||
48(g_sam3D): 47(ptr) Variable UniformConstant
|
||||
50: TypeVector 7(float) 3
|
||||
51: 50(fvec3) ConstantComposite 34 40 23
|
||||
55: TypeImage 7(float) Cube sampled format:Unknown
|
||||
56: TypeSampledImage 55
|
||||
57: TypePointer UniformConstant 56
|
||||
58(g_samCube): 57(ptr) Variable UniformConstant
|
||||
64: 8(fvec4) ConstantComposite 23 24 15 15
|
||||
68: TypeInt 32 0
|
||||
69: 68(int) Constant 3
|
||||
75: 8(fvec4) ConstantComposite 34 15 15 15
|
||||
82: 8(fvec4) ConstantComposite 34 40 15 15
|
||||
91: 8(fvec4) ConstantComposite 34 40 23 15
|
||||
109: TypePointer Function 9(PS_OUTPUT)
|
||||
111: TypeInt 32 1
|
||||
112: 111(int) Constant 0
|
||||
114: 7(float) Constant 1092616192
|
||||
118: 111(int) Constant 1
|
||||
119: 7(float) Constant 1065353216
|
||||
120: TypePointer Function 7(float)
|
||||
127: TypePointer Output 8(fvec4)
|
||||
128(@entryPointOutput.Color): 127(ptr) Variable Output
|
||||
131: TypePointer Output 7(float)
|
||||
132(@entryPointOutput.Depth): 131(ptr) Variable Output
|
||||
5(main): 3 Function None 4
|
||||
6: Label
|
||||
125(flattenTemp): 109(ptr) Variable Function
|
||||
Line 1 15 0
|
||||
126:9(PS_OUTPUT) FunctionCall 11(@main()
|
||||
Store 125(flattenTemp) 126
|
||||
129: 13(ptr) AccessChain 125(flattenTemp) 112
|
||||
130: 8(fvec4) Load 129
|
||||
Store 128(@entryPointOutput.Color) 130
|
||||
133: 120(ptr) AccessChain 125(flattenTemp) 118
|
||||
134: 7(float) Load 133
|
||||
Store 132(@entryPointOutput.Depth) 134
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@main():9(PS_OUTPUT) Function None 10
|
||||
12: Label
|
||||
14(ColorOut): 13(ptr) Variable Function
|
||||
110(psout): 109(ptr) Variable Function
|
||||
Line 1 18 0
|
||||
Store 14(ColorOut) 16
|
||||
Line 1 20 0
|
||||
21: 18 Load 20(g_sam)
|
||||
26: 8(fvec4) ImageSampleImplicitLod 21 25
|
||||
27: 8(fvec4) Load 14(ColorOut)
|
||||
28: 8(fvec4) FAdd 27 26
|
||||
Store 14(ColorOut) 28
|
||||
Line 1 21 0
|
||||
33: 30 Load 32(g_sam1D)
|
||||
35: 8(fvec4) ImageSampleImplicitLod 33 34
|
||||
36: 8(fvec4) Load 14(ColorOut)
|
||||
37: 8(fvec4) FAdd 36 35
|
||||
Store 14(ColorOut) 37
|
||||
Line 1 22 0
|
||||
39: 18 Load 38(g_sam2D)
|
||||
42: 8(fvec4) ImageSampleImplicitLod 39 41
|
||||
43: 8(fvec4) Load 14(ColorOut)
|
||||
44: 8(fvec4) FAdd 43 42
|
||||
Store 14(ColorOut) 44
|
||||
Line 1 23 0
|
||||
49: 46 Load 48(g_sam3D)
|
||||
52: 8(fvec4) ImageSampleImplicitLod 49 51
|
||||
53: 8(fvec4) Load 14(ColorOut)
|
||||
54: 8(fvec4) FAdd 53 52
|
||||
Store 14(ColorOut) 54
|
||||
Line 1 24 0
|
||||
59: 56 Load 58(g_samCube)
|
||||
60: 8(fvec4) ImageSampleImplicitLod 59 51
|
||||
61: 8(fvec4) Load 14(ColorOut)
|
||||
62: 8(fvec4) FAdd 61 60
|
||||
Store 14(ColorOut) 62
|
||||
Line 1 26 0
|
||||
63: 18 Load 20(g_sam)
|
||||
65: 7(float) CompositeExtract 64 0
|
||||
66: 7(float) CompositeExtract 64 1
|
||||
67: 22(fvec2) CompositeConstruct 65 66
|
||||
70: 7(float) CompositeExtract 64 3
|
||||
71: 8(fvec4) ImageSampleExplicitLod 63 67 Lod 70
|
||||
72: 8(fvec4) Load 14(ColorOut)
|
||||
73: 8(fvec4) FAdd 72 71
|
||||
Store 14(ColorOut) 73
|
||||
Line 1 27 0
|
||||
74: 30 Load 32(g_sam1D)
|
||||
76: 7(float) CompositeExtract 75 0
|
||||
77: 7(float) CompositeExtract 75 3
|
||||
78: 8(fvec4) ImageSampleExplicitLod 74 76 Lod 77
|
||||
79: 8(fvec4) Load 14(ColorOut)
|
||||
80: 8(fvec4) FAdd 79 78
|
||||
Store 14(ColorOut) 80
|
||||
Line 1 28 0
|
||||
81: 18 Load 38(g_sam2D)
|
||||
83: 7(float) CompositeExtract 82 0
|
||||
84: 7(float) CompositeExtract 82 1
|
||||
85: 22(fvec2) CompositeConstruct 83 84
|
||||
86: 7(float) CompositeExtract 82 3
|
||||
87: 8(fvec4) ImageSampleExplicitLod 81 85 Lod 86
|
||||
88: 8(fvec4) Load 14(ColorOut)
|
||||
89: 8(fvec4) FAdd 88 87
|
||||
Store 14(ColorOut) 89
|
||||
Line 1 29 0
|
||||
90: 46 Load 48(g_sam3D)
|
||||
92: 7(float) CompositeExtract 91 0
|
||||
93: 7(float) CompositeExtract 91 1
|
||||
94: 7(float) CompositeExtract 91 2
|
||||
95: 50(fvec3) CompositeConstruct 92 93 94
|
||||
96: 7(float) CompositeExtract 91 3
|
||||
97: 8(fvec4) ImageSampleExplicitLod 90 95 Lod 96
|
||||
98: 8(fvec4) Load 14(ColorOut)
|
||||
99: 8(fvec4) FAdd 98 97
|
||||
Store 14(ColorOut) 99
|
||||
Line 1 30 0
|
||||
100: 56 Load 58(g_samCube)
|
||||
101: 7(float) CompositeExtract 91 0
|
||||
102: 7(float) CompositeExtract 91 1
|
||||
103: 7(float) CompositeExtract 91 2
|
||||
104: 50(fvec3) CompositeConstruct 101 102 103
|
||||
105: 7(float) CompositeExtract 91 3
|
||||
106: 8(fvec4) ImageSampleExplicitLod 100 104 Lod 105
|
||||
107: 8(fvec4) Load 14(ColorOut)
|
||||
108: 8(fvec4) FAdd 107 106
|
||||
Store 14(ColorOut) 108
|
||||
Line 1 32 0
|
||||
113: 8(fvec4) Load 14(ColorOut)
|
||||
115: 8(fvec4) CompositeConstruct 114 114 114 114
|
||||
116: 8(fvec4) FDiv 113 115
|
||||
117: 13(ptr) AccessChain 110(psout) 112
|
||||
Store 117 116
|
||||
Line 1 33 0
|
||||
121: 120(ptr) AccessChain 110(psout) 118
|
||||
Store 121 119
|
||||
Line 1 35 0
|
||||
122:9(PS_OUTPUT) Load 110(psout)
|
||||
ReturnValue 122
|
||||
FunctionEnd
|
|
@ -0,0 +1,261 @@
|
|||
hlsl.sample.dx9.vert
|
||||
Shader version: 500
|
||||
0:? Sequence
|
||||
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Function Parameters:
|
||||
0:? Sequence
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp 4-component vector of float)
|
||||
0:14 'PosOut' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:16 add second child into first child ( temp 4-component vector of float)
|
||||
0:16 'PosOut' ( temp 4-component vector of float)
|
||||
0:16 textureLod ( temp 4-component vector of float)
|
||||
0:16 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:16 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:16 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:16 Constant:
|
||||
0:16 3 (const int)
|
||||
0:17 add second child into first child ( temp 4-component vector of float)
|
||||
0:17 'PosOut' ( temp 4-component vector of float)
|
||||
0:17 textureLod ( temp 4-component vector of float)
|
||||
0:17 'g_sam2D' (layout( binding=1) uniform sampler2D)
|
||||
0:17 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:17 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:17 Constant:
|
||||
0:17 3 (const int)
|
||||
0:19 move second child to first child ( temp 4-component vector of float)
|
||||
0:19 Pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 divide ( temp 4-component vector of float)
|
||||
0:19 'PosOut' ( temp 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 2.000000
|
||||
0:21 Branch: Return with expression
|
||||
0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Function Definition: main( ( temp void)
|
||||
0:11 Function Parameters:
|
||||
0:? Sequence
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
|
||||
0:11 Pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? 'g_sam2D' (layout( binding=1) uniform sampler2D)
|
||||
0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Shader version: 500
|
||||
0:? Sequence
|
||||
0:11 Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Function Parameters:
|
||||
0:? Sequence
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp 4-component vector of float)
|
||||
0:14 'PosOut' ( temp 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:? 0.000000
|
||||
0:16 add second child into first child ( temp 4-component vector of float)
|
||||
0:16 'PosOut' ( temp 4-component vector of float)
|
||||
0:16 textureLod ( temp 4-component vector of float)
|
||||
0:16 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:16 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:16 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.300000
|
||||
0:? 0.400000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:16 Constant:
|
||||
0:16 3 (const int)
|
||||
0:17 add second child into first child ( temp 4-component vector of float)
|
||||
0:17 'PosOut' ( temp 4-component vector of float)
|
||||
0:17 textureLod ( temp 4-component vector of float)
|
||||
0:17 'g_sam2D' (layout( binding=1) uniform sampler2D)
|
||||
0:17 Construct vec2 ( temp 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:17 direct index ( temp float)
|
||||
0:? Constant:
|
||||
0:? 0.500000
|
||||
0:? 0.600000
|
||||
0:? 0.000000
|
||||
0:? 1.000000
|
||||
0:17 Constant:
|
||||
0:17 3 (const int)
|
||||
0:19 move second child to first child ( temp 4-component vector of float)
|
||||
0:19 Pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:19 'vsout' ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:19 Constant:
|
||||
0:19 0 (const int)
|
||||
0:19 divide ( temp 4-component vector of float)
|
||||
0:19 'PosOut' ( temp 4-component vector of float)
|
||||
0:19 Constant:
|
||||
0:19 2.000000
|
||||
0:21 Branch: Return with expression
|
||||
0:21 'vsout' ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Function Definition: main( ( temp void)
|
||||
0:11 Function Parameters:
|
||||
0:? Sequence
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
|
||||
0:11 Pos: direct index for structure ( temp 4-component vector of float)
|
||||
0:11 Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'g_sam' (layout( binding=0) uniform sampler2D)
|
||||
0:? 'g_sam2D' (layout( binding=1) uniform sampler2D)
|
||||
0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 64
|
||||
|
||||
Capability Shader
|
||||
2: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 5 "main" 61
|
||||
1: String ""
|
||||
Source HLSL 500 1 "// OpModuleProcessed auto-map-locations
|
||||
// OpModuleProcessed auto-map-bindings
|
||||
// OpModuleProcessed entry-point main
|
||||
// OpModuleProcessed client vulkan100
|
||||
// OpModuleProcessed target-env vulkan1.0
|
||||
// OpModuleProcessed keep-uncalled
|
||||
// OpModuleProcessed hlsl-offsets
|
||||
#line 1
|
||||
"
|
||||
Name 5 "main"
|
||||
Name 9 "VS_OUTPUT"
|
||||
MemberName 9(VS_OUTPUT) 0 "Pos"
|
||||
Name 11 "@main("
|
||||
Name 14 "PosOut"
|
||||
Name 20 "g_sam"
|
||||
Name 36 "g_sam2D"
|
||||
Name 49 "vsout"
|
||||
Name 61 "@entryPointOutput.Pos"
|
||||
Decorate 20(g_sam) DescriptorSet 0
|
||||
Decorate 20(g_sam) Binding 0
|
||||
Decorate 36(g_sam2D) DescriptorSet 0
|
||||
Decorate 36(g_sam2D) Binding 1
|
||||
Decorate 61(@entryPointOutput.Pos) BuiltIn Position
|
||||
3: TypeVoid
|
||||
4: TypeFunction 3
|
||||
7: TypeFloat 32
|
||||
8: TypeVector 7(float) 4
|
||||
9(VS_OUTPUT): TypeStruct 8(fvec4)
|
||||
10: TypeFunction 9(VS_OUTPUT)
|
||||
13: TypePointer Function 8(fvec4)
|
||||
15: 7(float) Constant 0
|
||||
16: 8(fvec4) ConstantComposite 15 15 15 15
|
||||
17: TypeImage 7(float) 2D sampled format:Unknown
|
||||
18: TypeSampledImage 17
|
||||
19: TypePointer UniformConstant 18
|
||||
20(g_sam): 19(ptr) Variable UniformConstant
|
||||
22: 7(float) Constant 1050253722
|
||||
23: 7(float) Constant 1053609165
|
||||
24: 7(float) Constant 1065353216
|
||||
25: 8(fvec4) ConstantComposite 22 23 15 24
|
||||
26: TypeVector 7(float) 2
|
||||
30: TypeInt 32 0
|
||||
31: 30(int) Constant 3
|
||||
36(g_sam2D): 19(ptr) Variable UniformConstant
|
||||
38: 7(float) Constant 1056964608
|
||||
39: 7(float) Constant 1058642330
|
||||
40: 8(fvec4) ConstantComposite 38 39 15 24
|
||||
48: TypePointer Function 9(VS_OUTPUT)
|
||||
50: TypeInt 32 1
|
||||
51: 50(int) Constant 0
|
||||
53: 7(float) Constant 1073741824
|
||||
60: TypePointer Output 8(fvec4)
|
||||
61(@entryPointOutput.Pos): 60(ptr) Variable Output
|
||||
5(main): 3 Function None 4
|
||||
6: Label
|
||||
Line 1 11 0
|
||||
62:9(VS_OUTPUT) FunctionCall 11(@main()
|
||||
63: 8(fvec4) CompositeExtract 62 0
|
||||
Store 61(@entryPointOutput.Pos) 63
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@main():9(VS_OUTPUT) Function None 10
|
||||
12: Label
|
||||
14(PosOut): 13(ptr) Variable Function
|
||||
49(vsout): 48(ptr) Variable Function
|
||||
Line 1 14 0
|
||||
Store 14(PosOut) 16
|
||||
Line 1 16 0
|
||||
21: 18 Load 20(g_sam)
|
||||
27: 7(float) CompositeExtract 25 0
|
||||
28: 7(float) CompositeExtract 25 1
|
||||
29: 26(fvec2) CompositeConstruct 27 28
|
||||
32: 7(float) CompositeExtract 25 3
|
||||
33: 8(fvec4) ImageSampleExplicitLod 21 29 Lod 32
|
||||
34: 8(fvec4) Load 14(PosOut)
|
||||
35: 8(fvec4) FAdd 34 33
|
||||
Store 14(PosOut) 35
|
||||
Line 1 17 0
|
||||
37: 18 Load 36(g_sam2D)
|
||||
41: 7(float) CompositeExtract 40 0
|
||||
42: 7(float) CompositeExtract 40 1
|
||||
43: 26(fvec2) CompositeConstruct 41 42
|
||||
44: 7(float) CompositeExtract 40 3
|
||||
45: 8(fvec4) ImageSampleExplicitLod 37 43 Lod 44
|
||||
46: 8(fvec4) Load 14(PosOut)
|
||||
47: 8(fvec4) FAdd 46 45
|
||||
Store 14(PosOut) 47
|
||||
Line 1 19 0
|
||||
52: 8(fvec4) Load 14(PosOut)
|
||||
54: 8(fvec4) CompositeConstruct 53 53 53 53
|
||||
55: 8(fvec4) FDiv 52 54
|
||||
56: 13(ptr) AccessChain 49(vsout) 51
|
||||
Store 56 55
|
||||
Line 1 21 0
|
||||
57:9(VS_OUTPUT) Load 49(vsout)
|
||||
ReturnValue 57
|
||||
FunctionEnd
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
sampler g_sam : register(t0);
|
||||
sampler1D g_sam1D : register(t1);
|
||||
sampler2D g_sam2D : register(t2);
|
||||
sampler3D g_sam3D : register(t3);
|
||||
samplerCube g_samCube : register(t4);
|
||||
|
||||
struct PS_OUTPUT
|
||||
{
|
||||
float4 Color : SV_Target0;
|
||||
float Depth : SV_Depth;
|
||||
};
|
||||
|
||||
PS_OUTPUT main()
|
||||
{
|
||||
PS_OUTPUT psout;
|
||||
|
||||
float4 ColorOut = float4(0,0,0,0);
|
||||
|
||||
ColorOut += tex2D( g_sam , float2(0.4,0.3));
|
||||
ColorOut += tex1D( g_sam1D, 0.5);
|
||||
ColorOut += tex2D( g_sam2D, float2(0.5,0.6));
|
||||
ColorOut += tex3D( g_sam3D, float3(0.5,0.6,0.4));
|
||||
ColorOut += texCUBE( g_samCube, float3(0.5,0.6,0.4));
|
||||
|
||||
ColorOut += tex2Dlod( g_sam , float4(0.4,0.3,0.0,0.0));
|
||||
ColorOut += tex1Dlod( g_sam1D, float4(0.5,0.0,0.0,0.0));
|
||||
ColorOut += tex2Dlod( g_sam2D, float4(0.5,0.6,0.0,0.0));
|
||||
ColorOut += tex3Dlod( g_sam3D, float4(0.5,0.6,0.4,0.0));
|
||||
ColorOut += texCUBElod( g_samCube, float4(0.5,0.6,0.4,0.0));
|
||||
|
||||
psout.Color = ColorOut / 10.0f;
|
||||
psout.Depth = 1.0;
|
||||
|
||||
return psout;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
sampler g_sam : register(t0);
|
||||
sampler2D g_sam2D : register(t1);
|
||||
|
||||
struct VS_OUTPUT
|
||||
{
|
||||
float4 Pos : SV_Position;
|
||||
};
|
||||
|
||||
VS_OUTPUT main()
|
||||
{
|
||||
VS_OUTPUT vsout;
|
||||
|
||||
float4 PosOut = float4(0,0,0,0);
|
||||
|
||||
PosOut += tex2Dlod( g_sam , float4(0.3f, 0.4f, 0.0f, 1.0f));
|
||||
PosOut += tex2Dlod( g_sam2D, float4(0.5f, 0.6f, 0.0f, 1.0f));
|
||||
|
||||
vsout.Pos = PosOut / 2.0f;
|
||||
|
||||
return vsout;
|
||||
}
|
|
@ -130,6 +130,7 @@ public:
|
|||
bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; }
|
||||
bool isReadingHLSL() const { return (messages & EShMsgReadHlsl) == EShMsgReadHlsl; }
|
||||
bool hlslEnable16BitTypes() const { return (messages & EShMsgHlslEnable16BitTypes) != 0; }
|
||||
bool hlslDX9Compatible() const { return (messages & EShMsgHlslDX9Compatible) != 0; }
|
||||
|
||||
TInfoSink& infoSink;
|
||||
|
||||
|
|
|
@ -235,6 +235,7 @@ enum EShMessages {
|
|||
EShMsgDebugInfo = (1 << 10), // save debug information
|
||||
EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL
|
||||
EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages
|
||||
EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (right now only for samplers)
|
||||
};
|
||||
|
||||
//
|
||||
|
|
|
@ -62,6 +62,7 @@ using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam<FileNameEn
|
|||
using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||
using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||
using HlslDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||
using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||
|
||||
// Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected
|
||||
// to successfully generate both AST and SPIR-V.
|
||||
|
@ -106,6 +107,14 @@ TEST_P(HlslDebugTest, FromFile)
|
|||
"/baseResults/", false, true);
|
||||
}
|
||||
|
||||
TEST_P(HlslDX9CompatibleTest, FromFile)
|
||||
{
|
||||
loadFileCompileAndCheckWithOptions(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL,
|
||||
Semantics::Vulkan, glslang::EShTargetVulkan_1_0, Target::BothASTAndSpv, true,
|
||||
GetParam().entryPoint, "/baseResults/",
|
||||
EShMessages::EShMsgHlslDX9Compatible);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
ToSpirv, HlslCompileTest,
|
||||
|
@ -457,6 +466,15 @@ INSTANTIATE_TEST_CASE_P(
|
|||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
ToSpirv, HlslDX9CompatibleTest,
|
||||
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
|
||||
{"hlsl.sample.dx9.frag", "main"},
|
||||
{"hlsl.sample.dx9.vert", "main"},
|
||||
}),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
// clang-format on
|
||||
|
||||
} // anonymous namespace
|
||||
} // namespace glslangtest
|
||||
|
|
|
@ -460,6 +460,34 @@ public:
|
|||
expectedOutputFname, result.spirvWarningsErrors);
|
||||
}
|
||||
|
||||
void loadFileCompileAndCheckWithOptions(const std::string &testDir,
|
||||
const std::string &testName,
|
||||
Source source,
|
||||
Semantics semantics,
|
||||
glslang::EShTargetClientVersion clientTargetVersion,
|
||||
Target target, bool automap = true, const std::string &entryPointName = "",
|
||||
const std::string &baseDir = "/baseResults/",
|
||||
const EShMessages additionalOptions = EShMessages::EShMsgDefault)
|
||||
{
|
||||
const std::string inputFname = testDir + "/" + testName;
|
||||
const std::string expectedOutputFname = testDir + baseDir + testName + ".out";
|
||||
std::string input, expectedOutput;
|
||||
|
||||
tryLoadFile(inputFname, "input", &input);
|
||||
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
|
||||
|
||||
EShMessages controls = DeriveOptions(source, semantics, target);
|
||||
controls = static_cast<EShMessages>(controls | additionalOptions);
|
||||
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, false,
|
||||
EShTexSampTransKeep, false, automap);
|
||||
|
||||
// Generate the hybrid output in the way of glslangValidator.
|
||||
std::ostringstream stream;
|
||||
outputResultToStream(&stream, result, controls);
|
||||
|
||||
checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname);
|
||||
}
|
||||
|
||||
void loadFileCompileFlattenUniformsAndCheck(const std::string& testDir,
|
||||
const std::string& testName,
|
||||
Source source,
|
||||
|
|
|
@ -1163,6 +1163,49 @@ bool HlslGrammar::acceptSubpassInputType(TType& type)
|
|||
return true;
|
||||
}
|
||||
|
||||
// sampler_type for DX9 compatibility
|
||||
// : SAMPLER
|
||||
// | SAMPLER1D
|
||||
// | SAMPLER2D
|
||||
// | SAMPLER3D
|
||||
// | SAMPLERCUBE
|
||||
bool HlslGrammar::acceptSamplerTypeDX9(TType &type)
|
||||
{
|
||||
// read sampler type
|
||||
const EHlslTokenClass samplerType = peek();
|
||||
|
||||
TSamplerDim dim = EsdNone;
|
||||
TType txType(EbtFloat, EvqUniform, 4); // default type is float4
|
||||
|
||||
bool isShadow = false;
|
||||
|
||||
switch (samplerType)
|
||||
{
|
||||
case EHTokSampler: dim = Esd2D; break;
|
||||
case EHTokSampler1d: dim = Esd1D; break;
|
||||
case EHTokSampler2d: dim = Esd2D; break;
|
||||
case EHTokSampler3d: dim = Esd3D; break;
|
||||
case EHTokSamplerCube: dim = EsdCube; break;
|
||||
default:
|
||||
return false; // not a dx9 sampler declaration
|
||||
}
|
||||
|
||||
advanceToken(); // consume the sampler type keyword
|
||||
|
||||
TArraySizes *arraySizes = nullptr; // TODO: array
|
||||
|
||||
TSampler sampler;
|
||||
sampler.set(txType.getBasicType(), dim, false, isShadow, false);
|
||||
|
||||
if (!parseContext.setTextureReturnType(sampler, txType, token.loc))
|
||||
return false;
|
||||
|
||||
type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
|
||||
type.getQualifier().layoutFormat = ElfNone;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// sampler_type
|
||||
// : SAMPLER
|
||||
// | SAMPLER1D
|
||||
|
@ -1445,7 +1488,13 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
|
|||
case EHTokSampler2d: // ...
|
||||
case EHTokSampler3d: // ...
|
||||
case EHTokSamplerCube: // ...
|
||||
case EHTokSamplerState: // ...
|
||||
if (parseContext.hlslDX9Compatible())
|
||||
return acceptSamplerTypeDX9(type);
|
||||
else
|
||||
return acceptSamplerType(type);
|
||||
break;
|
||||
|
||||
case EHTokSamplerState: // fall through
|
||||
case EHTokSamplerComparisonState: // ...
|
||||
return acceptSamplerType(type);
|
||||
break;
|
||||
|
|
|
@ -84,6 +84,7 @@ namespace glslang {
|
|||
bool acceptStreamOutTemplateType(TType&, TLayoutGeometry&);
|
||||
bool acceptOutputPrimitiveGeometry(TLayoutGeometry&);
|
||||
bool acceptAnnotations(TQualifier&);
|
||||
bool acceptSamplerTypeDX9(TType &);
|
||||
bool acceptSamplerType(TType&);
|
||||
bool acceptTextureType(TType&);
|
||||
bool acceptSubpassInputType(TType&);
|
||||
|
|
|
@ -3770,6 +3770,43 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
|
|||
|
||||
break;
|
||||
}
|
||||
case EOpTextureLod: //is almost EOpTextureBias (only args & operations are different)
|
||||
{
|
||||
TIntermTyped *argSamp = argAggregate->getSequence()[0]->getAsTyped(); // sampler
|
||||
TIntermTyped *argCoord = argAggregate->getSequence()[1]->getAsTyped(); // coord
|
||||
|
||||
assert(argCoord->getVectorSize() == 4);
|
||||
TIntermTyped *w = intermediate.addConstantUnion(3, loc, true);
|
||||
TIntermTyped *argLod = intermediate.addIndex(EOpIndexDirect, argCoord, w, loc);
|
||||
|
||||
TOperator constructOp = EOpNull;
|
||||
const TSampler &sampler = argSamp->getType().getSampler();
|
||||
int coordSize = 0;
|
||||
|
||||
switch (sampler.dim)
|
||||
{
|
||||
case Esd1D: constructOp = EOpConstructFloat; coordSize = 1; break; // 1D
|
||||
case Esd2D: constructOp = EOpConstructVec2; coordSize = 2; break; // 2D
|
||||
case Esd3D: constructOp = EOpConstructVec3; coordSize = 3; break; // 3D
|
||||
case EsdCube: constructOp = EOpConstructVec3; coordSize = 3; break; // also 3D
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
TIntermAggregate *constructCoord = new TIntermAggregate(constructOp);
|
||||
constructCoord->getSequence().push_back(argCoord);
|
||||
constructCoord->setLoc(loc);
|
||||
constructCoord->setType(TType(argCoord->getBasicType(), EvqTemporary, coordSize));
|
||||
|
||||
TIntermAggregate *tex = new TIntermAggregate(EOpTextureLod);
|
||||
tex->getSequence().push_back(argSamp); // sampler
|
||||
tex->getSequence().push_back(constructCoord); // coordinate
|
||||
tex->getSequence().push_back(argLod); // lod
|
||||
|
||||
node = convertReturn(tex, sampler);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpTextureBias:
|
||||
{
|
||||
|
|
|
@ -698,17 +698,17 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
|
|||
{ "step", nullptr, nullptr, "SVM,", "F,", EShLangAll, false },
|
||||
{ "tan", nullptr, nullptr, "SVM", "F", EShLangAll, false },
|
||||
{ "tanh", nullptr, nullptr, "SVM", "F", EShLangAll, false },
|
||||
{ "tex1D", "V4", "F", "V1,S", "S,F", EShLangPS, false },
|
||||
{ "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangPS, false },
|
||||
{ "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangPS, false },
|
||||
{ "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangPS, false },
|
||||
{ "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangPS, false },
|
||||
{ "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangPS, false },
|
||||
{ "tex1D", "V4", "F", "S,S", "S,F", EShLangPS, false },
|
||||
{ "tex1D", "V4", "F", "S,S,V1,", "S,F,,", EShLangPS, false },
|
||||
{ "tex1Dbias", "V4", "F", "S,V4", "S,F", EShLangPS, false },
|
||||
{ "tex1Dgrad", "V4", "F", "S,,,", "S,F,,", EShLangPS, false },
|
||||
{ "tex1Dlod", "V4", "F", "S,V4", "S,F", EShLangPS, false },
|
||||
{ "tex1Dproj", "V4", "F", "S,V4", "S,F", EShLangPS, false },
|
||||
{ "tex2D", "V4", "F", "V2,", "S,F", EShLangPS, false },
|
||||
{ "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangPS, false },
|
||||
{ "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangPS, false },
|
||||
{ "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangPS, false },
|
||||
{ "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangPS, false },
|
||||
{ "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangAll, false },
|
||||
{ "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangPS, false },
|
||||
{ "tex3D", "V4", "F", "V3,", "S,F", EShLangPS, false },
|
||||
{ "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangPS, false },
|
||||
|
|
Загрузка…
Ссылка в новой задаче