|
@@ -156,6 +156,10 @@ Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr) {
|
|
|
return ctx.OpISub(ctx.U32[1], ctx.OpLoad(ctx.U32[1], ctx.vertex_index),
|
|
return ctx.OpISub(ctx.U32[1], ctx.OpLoad(ctx.U32[1], ctx.vertex_index),
|
|
|
ctx.OpLoad(ctx.U32[1], ctx.base_vertex));
|
|
ctx.OpLoad(ctx.U32[1], ctx.base_vertex));
|
|
|
}
|
|
}
|
|
|
|
|
+ case IR::Attribute::FrontFace:
|
|
|
|
|
+ return ctx.OpSelect(ctx.U32[1], ctx.OpLoad(ctx.U1, ctx.front_face),
|
|
|
|
|
+ ctx.Constant(ctx.U32[1], std::numeric_limits<u32>::max()),
|
|
|
|
|
+ ctx.u32_zero_value);
|
|
|
default:
|
|
default:
|
|
|
throw NotImplementedException("Read attribute {}", attr);
|
|
throw NotImplementedException("Read attribute {}", attr);
|
|
|
}
|
|
}
|