shader: Add PointSize attribute
This commit is contained in:
		| @@ -492,6 +492,12 @@ void EmitContext::DefineOutputs(const Info& info) { | ||||
|     if (info.stores_position || stage == Stage::VertexB) { | ||||
|         output_position = DefineOutput(*this, F32[4], spv::BuiltIn::Position); | ||||
|     } | ||||
|     if (info.stores_point_size) { | ||||
|         if (stage == Stage::Fragment) { | ||||
|             throw NotImplementedException("Storing PointSize in Fragment stage"); | ||||
|         } | ||||
|         output_point_size = DefineOutput(*this, F32[1], spv::BuiltIn::PointSize); | ||||
|     } | ||||
|     for (size_t i = 0; i < info.stores_generics.size(); ++i) { | ||||
|         if (info.stores_generics[i]) { | ||||
|             output_generics[i] = DefineOutput(*this, F32[4]); | ||||
|   | ||||
| @@ -120,6 +120,7 @@ public: | ||||
|     Id input_position{}; | ||||
|     std::array<Id, 32> input_generics{}; | ||||
|  | ||||
|     Id output_point_size{}; | ||||
|     Id output_position{}; | ||||
|     std::array<Id, 32> output_generics{}; | ||||
|  | ||||
|   | ||||
| @@ -37,6 +37,8 @@ Id OutputAttrPointer(EmitContext& ctx, IR::Attribute attr) { | ||||
|         return ctx.OpAccessChain(ctx.output_f32, ctx.output_generics.at(index), element_id()); | ||||
|     } | ||||
|     switch (attr) { | ||||
|     case IR::Attribute::PointSize: | ||||
|         return ctx.output_point_size; | ||||
|     case IR::Attribute::PositionX: | ||||
|     case IR::Attribute::PositionY: | ||||
|     case IR::Attribute::PositionZ: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user