forked from LeenkxTeam/LNXSDK
		
	Update Files
This commit is contained in:
		
							
								
								
									
										95
									
								
								Kha/Backends/Krom/kha/graphics4/PipelineState.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								Kha/Backends/Krom/kha/graphics4/PipelineState.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,95 @@ | ||||
| package kha.graphics4; | ||||
|  | ||||
| import kha.graphics4.FragmentShader; | ||||
| import kha.graphics4.VertexData; | ||||
| import kha.graphics4.VertexShader; | ||||
| import kha.graphics4.VertexStructure; | ||||
|  | ||||
| class PipelineState extends PipelineStateBase { | ||||
| 	var pipeline: Dynamic; | ||||
|  | ||||
| 	public function new() { | ||||
| 		super(); | ||||
| 		pipeline = Krom.createPipeline(); | ||||
| 	} | ||||
|  | ||||
| 	public function delete() { | ||||
| 		Krom.deletePipeline(pipeline); | ||||
| 		pipeline = null; | ||||
| 	} | ||||
|  | ||||
| 	public function compile(): Void { | ||||
| 		var structure0 = inputLayout.length > 0 ? inputLayout[0] : null; | ||||
| 		var structure1 = inputLayout.length > 1 ? inputLayout[1] : null; | ||||
| 		var structure2 = inputLayout.length > 2 ? inputLayout[2] : null; | ||||
| 		var structure3 = inputLayout.length > 3 ? inputLayout[3] : null; | ||||
| 		var gs = geometryShader != null ? geometryShader.shader : null; | ||||
| 		var tcs = tessellationControlShader != null ? tessellationControlShader.shader : null; | ||||
| 		var tes = tessellationEvaluationShader != null ? tessellationEvaluationShader.shader : null; | ||||
| 		var stencilReferenceValue = 0; | ||||
| 		switch (this.stencilReferenceValue) { | ||||
| 			case Static(value): | ||||
| 				stencilReferenceValue = value; | ||||
| 			default: | ||||
| 		} | ||||
| 		Krom.compilePipeline(pipeline, structure0, structure1, structure2, structure3, inputLayout.length, vertexShader.shader, fragmentShader.shader, gs, | ||||
| 			tcs, tes, { | ||||
| 				cullMode: cullMode, | ||||
| 				depthWrite: this.depthWrite, | ||||
| 				depthMode: depthMode, | ||||
| 				stencilMode: stencilFrontMode, | ||||
| 				stencilBothPass: stencilFrontBothPass, | ||||
| 				stencilDepthFail: stencilFrontDepthFail, | ||||
| 				stencilFail: stencilFrontFail, | ||||
| 				stencilReferenceValue: stencilReferenceValue, | ||||
| 				stencilReadMask: stencilReadMask, | ||||
| 				stencilWriteMask: stencilWriteMask, | ||||
| 				blendSource: convertBlendingFactor(blendSource), | ||||
| 				blendDestination: convertBlendingFactor(blendDestination), | ||||
| 				alphaBlendSource: convertBlendingFactor(alphaBlendSource), | ||||
| 				alphaBlendDestination: convertBlendingFactor(alphaBlendDestination), | ||||
| 				colorWriteMaskRed: colorWriteMasksRed, | ||||
| 				colorWriteMaskGreen: colorWriteMasksGreen, | ||||
| 				colorWriteMaskBlue: colorWriteMasksBlue, | ||||
| 				colorWriteMaskAlpha: colorWriteMasksAlpha, | ||||
| 				conservativeRasterization: conservativeRasterization | ||||
| 			}); | ||||
| 	} | ||||
|  | ||||
| 	public function set(): Void { | ||||
| 		Krom.setPipeline(pipeline); | ||||
| 	} | ||||
|  | ||||
| 	public function getConstantLocation(name: String): kha.graphics4.ConstantLocation { | ||||
| 		return Krom.getConstantLocation(pipeline, name); | ||||
| 	} | ||||
|  | ||||
| 	public function getTextureUnit(name: String): kha.graphics4.TextureUnit { | ||||
| 		return Krom.getTextureUnit(pipeline, name); | ||||
| 	} | ||||
|  | ||||
| 	static function convertBlendingFactor(factor: BlendingFactor): Int { | ||||
| 		switch (factor) { | ||||
| 			case Undefined, BlendOne: | ||||
| 				return 0; | ||||
| 			case BlendZero: | ||||
| 				return 1; | ||||
| 			case SourceAlpha: | ||||
| 				return 2; | ||||
| 			case DestinationAlpha: | ||||
| 				return 3; | ||||
| 			case InverseSourceAlpha: | ||||
| 				return 4; | ||||
| 			case InverseDestinationAlpha: | ||||
| 				return 5; | ||||
| 			case SourceColor: | ||||
| 				return 6; | ||||
| 			case DestinationColor: | ||||
| 				return 7; | ||||
| 			case InverseSourceColor: | ||||
| 				return 8; | ||||
| 			case InverseDestinationColor: | ||||
| 				return 9; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user