forked from LeenkxTeam/LNXSDK
Update Kha/Backends/Kinc-HL/kha/graphics4/FragmentShader.hx
This commit is contained in:
parent
d37b41b181
commit
659802b888
@ -1,31 +1,70 @@
|
|||||||
package kha.graphics4;
|
package kha.graphics4;
|
||||||
|
|
||||||
import kha.Blob;
|
import kha.Blob;
|
||||||
|
|
||||||
class FragmentShader {
|
class FragmentShader {
|
||||||
public var _shader: Pointer;
|
public var _shader: Pointer;
|
||||||
|
|
||||||
public function new(sources: Array<Blob>, files: Array<String>) {
|
public function new(sources: Array<Blob>, files: Array<String>) {
|
||||||
initShader(sources[0]);
|
//initShader(sources[0]);
|
||||||
}
|
var shaderBlob: Blob = null;
|
||||||
|
var shaderFile: String = null;
|
||||||
function initShader(source: Blob): Void {
|
|
||||||
_shader = kinc_create_fragmentshader(source.bytes.getData(), source.bytes.getData().length);
|
#if kha_opengl
|
||||||
}
|
final expectedExtension = ".glsl";
|
||||||
|
#elseif kha_direct3d11
|
||||||
public static function fromSource(source: String): FragmentShader {
|
final expectedExtension = ".d3d11";
|
||||||
var sh = new FragmentShader(null, null);
|
#elseif kha_direct3d12
|
||||||
sh._shader = kinc_fragmentshader_from_source(StringHelper.convert(source));
|
final expectedExtension = ".d3d12";
|
||||||
return sh;
|
#elseif kha_metal
|
||||||
}
|
final expectedExtension = ".metal";
|
||||||
|
#elseif kha_vulkan
|
||||||
public function delete(): Void {}
|
final expectedExtension = ".spirv";
|
||||||
|
#else
|
||||||
@:hlNative("std", "kinc_create_fragmentshader") static function kinc_create_fragmentshader(data: hl.Bytes, length: Int): Pointer {
|
final expectedExtension = ".glsl";
|
||||||
return null;
|
#end
|
||||||
}
|
|
||||||
|
if (sources != null && files != null) {
|
||||||
@:hlNative("std", "kinc_fragmentshader_from_source") static function kinc_fragmentshader_from_source(source: hl.Bytes): Pointer {
|
for (i in 0...files.length) {
|
||||||
return null;
|
if (files[i].endsWith(expectedExtension)) {
|
||||||
}
|
shaderBlob = sources[i];
|
||||||
}
|
shaderFile = files[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shaderBlob == null && sources != null && sources.length > 0) {
|
||||||
|
trace('Warning: Could not find shader with extension ${expectedExtension}. Falling back to sources[0]: ${files != null && files.length > 0 ? files[0] : "Unknown"}');
|
||||||
|
shaderBlob = sources[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shaderBlob != null) {
|
||||||
|
initShader(shaderBlob);
|
||||||
|
} else {
|
||||||
|
trace('Error: No suitable fragment shader source found!');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function initShader(source: Blob): Void {
|
||||||
|
//_shader = kinc_create_fragmentshader(source.bytes.getData(), source.bytes.getData().length);
|
||||||
|
_shader = kinc_create_fragmentshader(source.bytes.getData(), source.length); // Use source.length here
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function fromSource(source: String): FragmentShader {
|
||||||
|
var sh = new FragmentShader(null, null);
|
||||||
|
sh._shader = kinc_fragmentshader_from_source(StringHelper.convert(source));
|
||||||
|
return sh;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function delete(): Void {}
|
||||||
|
|
||||||
|
@:hlNative("std", "kinc_create_fragmentshader") static function kinc_create_fragmentshader(data: hl.Bytes, length: Int): Pointer {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@:hlNative("std", "kinc_fragmentshader_from_source") static function kinc_fragmentshader_from_source(source: hl.Bytes): Pointer {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user