46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha.compute; | ||
|  | 
 | ||
|  | import haxe.io.Bytes; | ||
|  | import kha.Blob; | ||
|  | 
 | ||
|  | @:headerCode("
 | ||
|  | #include <kinc/compute/compute.h> | ||
|  | ")
 | ||
|  | @:headerClassCode("kinc_compute_shader shader;") | ||
|  | class Shader { | ||
|  | 	public function new(sources: Array<Blob>, files: Array<String>) { | ||
|  | 		init(sources[0], files[0]); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	function init(source: Blob, file: String): Void { | ||
|  | 		untyped __cpp__("kinc_compute_shader_init(&shader, source->bytes->b->Pointer(), source->get_length());"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function delete(): Void { | ||
|  | 		untyped __cpp__("kinc_compute_shader_destroy(&shader);"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function getConstantLocation(name: String): ConstantLocation { | ||
|  | 		var location = new ConstantLocation(); | ||
|  | 		initConstantLocation(location, name); | ||
|  | 		return location; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:functionCode("location->location = kinc_compute_shader_get_constant_location(&shader, name.c_str());") | ||
|  | 	function initConstantLocation(location: ConstantLocation, name: String): Void {} | ||
|  | 
 | ||
|  | 	public function getTextureUnit(name: String): TextureUnit { | ||
|  | 		var unit = new TextureUnit(); | ||
|  | 		initTextureUnit(unit, name); | ||
|  | 		return unit; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:functionCode("unit->unit = kinc_compute_shader_get_texture_unit(&shader, name.c_str());") | ||
|  | 	function initTextureUnit(unit: TextureUnit, name: String): Void {} | ||
|  | 
 | ||
|  | 	@:keep | ||
|  | 	function _forceInclude(): Void { | ||
|  | 		Bytes.alloc(0); | ||
|  | 	} | ||
|  | } |