forked from LeenkxTeam/LNXSDK
Update Kha/Backends/Kinc-HL/kha/graphics4/FragmentShader.hx
This commit is contained in:
parent
d37b41b181
commit
659802b888
@ -6,11 +6,50 @@ 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;
|
||||||
|
|
||||||
|
#if kha_opengl
|
||||||
|
final expectedExtension = ".glsl";
|
||||||
|
#elseif kha_direct3d11
|
||||||
|
final expectedExtension = ".d3d11";
|
||||||
|
#elseif kha_direct3d12
|
||||||
|
final expectedExtension = ".d3d12";
|
||||||
|
#elseif kha_metal
|
||||||
|
final expectedExtension = ".metal";
|
||||||
|
#elseif kha_vulkan
|
||||||
|
final expectedExtension = ".spirv";
|
||||||
|
#else
|
||||||
|
final expectedExtension = ".glsl";
|
||||||
|
#end
|
||||||
|
|
||||||
|
if (sources != null && files != null) {
|
||||||
|
for (i in 0...files.length) {
|
||||||
|
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 {
|
function initShader(source: Blob): Void {
|
||||||
_shader = kinc_create_fragmentshader(source.bytes.getData(), source.bytes.getData().length);
|
//_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 {
|
public static function fromSource(source: String): FragmentShader {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user