[require] shader model < 3.0 [pixel shader fail] float4 main() : sv_target { float4 teChnique = {0, 0, 0, 0}; return teChnique; } [pixel shader fail] float4 main() : sv_target { float4 technique10 = {0, 0, 0, 0}; return technique10; } [pixel shader fail] float4 main() : sv_target { float4 technique11 = {0, 0, 0, 0}; return technique11; } [pixel shader fail] typedef float4 technique10; float4 main() : sv_target { return float4(0, 0, 0, 0); } [pixel shader fail] typedef float4 Technique; float4 main() : sv_target { return float4(0, 0, 0, 0); } [pixel shader fail] float4 main() : sv_target { float4 fxgroup = {0, 0, 0, 0}; return fxgroup; } [pixel shader] typedef float4 Technique10; typedef float4 Technique11; float4 main() : sv_target { return float4(0, 0, 0, 0); } [pixel shader] float4 main() : sv_target { float4 teChnique10 = {0, 0, 0, 0}; float4 teChnique11 = {0, 0, 0, 0}; return teChnique10 + teChnique11; } [pixel shader] float4 main() : sv_target { float4 teChnique11 = {0, 0, 0, 0}; return teChnique11; } [pixel shader] float4 main() : sv_target { float4 fxGroup = {0, 0, 0, 0}; return fxGroup; } [effect] technique { } technique10 { } % Effects without techniques are not allowed for fx_2_0 [effect fail] float4 f; % fx_5_0 keyword fails with fx_2_0 profile [effect fail] technique { } technique11 { } [effect fail] technique { } tEchnique10 { } [effect fail] technique { } tEchnique11 { } [effect fail] // Empty groups are not allowed fxgroup group { } % Regular shaders with technique blocks [vertex shader] float4 main() : sv_position { return 0; } technique { } technique10 { } technique11 { } fxgroup group { technique10 {} } [pixel shader] float4 main() : sv_target { return 0; } tEchnique { } technique10 { } technique11 { } fxgroup group { technique10 {} }