|
|
|
@ -121,6 +121,18 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, ScalarF32 value, |
|
|
|
case IR::Attribute::PositionW: |
|
|
|
ctx.Add("MOV.F result.position.{},{};", swizzle, value); |
|
|
|
break; |
|
|
|
case IR::Attribute::ClipDistance0: |
|
|
|
case IR::Attribute::ClipDistance1: |
|
|
|
case IR::Attribute::ClipDistance2: |
|
|
|
case IR::Attribute::ClipDistance3: |
|
|
|
case IR::Attribute::ClipDistance4: |
|
|
|
case IR::Attribute::ClipDistance5: |
|
|
|
case IR::Attribute::ClipDistance6: |
|
|
|
case IR::Attribute::ClipDistance7: { |
|
|
|
const u32 index{static_cast<u32>(attr) - static_cast<u32>(IR::Attribute::ClipDistance0)}; |
|
|
|
ctx.Add("MOV.F result.clip[{}].x,{};", index, value); |
|
|
|
break; |
|
|
|
} |
|
|
|
case IR::Attribute::ViewportIndex: |
|
|
|
if (ctx.stage == Stage::Geometry || ctx.profile.support_viewport_index_layer_non_geometry) { |
|
|
|
ctx.Add("MOV.F result.viewport.x,{};", value); |
|
|
|
|