2021-07-17 03:56:15 +00:00
|
|
|
// language: metal2.2
|
2021-05-06 04:04:43 +00:00
|
|
|
#include <metal_stdlib>
|
|
|
|
#include <simd/simd.h>
|
|
|
|
|
2022-02-21 21:22:54 +00:00
|
|
|
using metal::uint;
|
|
|
|
|
2021-05-06 04:04:43 +00:00
|
|
|
struct PushConstants {
|
2022-02-21 21:22:54 +00:00
|
|
|
uint index;
|
2021-05-06 04:04:43 +00:00
|
|
|
char _pad1[12];
|
2021-11-09 14:24:41 +00:00
|
|
|
metal::float2 double_;
|
2021-05-06 04:04:43 +00:00
|
|
|
};
|
2021-07-17 02:18:20 +00:00
|
|
|
struct FragmentIn {
|
|
|
|
metal::float4 color;
|
2022-02-21 21:22:54 +00:00
|
|
|
uint primitive_index;
|
2021-07-17 02:18:20 +00:00
|
|
|
};
|
2021-05-06 04:04:43 +00:00
|
|
|
|
2021-11-09 14:24:41 +00:00
|
|
|
struct main_Input {
|
2021-05-06 04:04:43 +00:00
|
|
|
metal::float4 color [[user(loc0), center_perspective]];
|
|
|
|
};
|
2021-11-09 14:24:41 +00:00
|
|
|
struct main_Output {
|
2021-05-06 04:04:43 +00:00
|
|
|
metal::float4 member [[color(0)]];
|
|
|
|
};
|
2021-11-09 14:24:41 +00:00
|
|
|
fragment main_Output main_(
|
|
|
|
main_Input varyings [[stage_in]]
|
2022-02-21 21:22:54 +00:00
|
|
|
, uint primitive_index [[primitive_id]]
|
2022-03-09 04:02:20 +00:00
|
|
|
, constant PushConstants& pc [[buffer(1)]]
|
2021-05-06 04:04:43 +00:00
|
|
|
) {
|
2022-04-29 17:48:27 +00:00
|
|
|
const FragmentIn in = { varyings.color, primitive_index };
|
2022-03-09 04:02:20 +00:00
|
|
|
uint _e4 = pc.index;
|
2022-04-29 17:48:27 +00:00
|
|
|
if (in.primitive_index == _e4) {
|
|
|
|
return main_Output { in.color };
|
2021-07-17 02:18:20 +00:00
|
|
|
} else {
|
2022-04-29 17:48:27 +00:00
|
|
|
return main_Output { metal::float4(metal::float3(1.0) - in.color.xyz, in.color.w) };
|
2021-07-17 02:18:20 +00:00
|
|
|
}
|
2021-05-06 04:04:43 +00:00
|
|
|
}
|