|
|
|
@ -179,6 +179,12 @@ Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr) {
|
|
|
|
|
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);
|
|
|
|
|
case IR::Attribute::PointSpriteS:
|
|
|
|
|
return ctx.OpLoad(ctx.F32[1], ctx.OpAccessChain(ctx.input_f32, ctx.point_coord,
|
|
|
|
|
ctx.Constant(ctx.U32[1], 0U)));
|
|
|
|
|
case IR::Attribute::PointSpriteT:
|
|
|
|
|
return ctx.OpLoad(ctx.F32[1], ctx.OpAccessChain(ctx.input_f32, ctx.point_coord,
|
|
|
|
|
ctx.Constant(ctx.U32[1], 1U)));
|
|
|
|
|
default:
|
|
|
|
|
throw NotImplementedException("Read attribute {}", attr);
|
|
|
|
|
}
|
|
|
|
|