From 40d40edcdeef4978a0d9c7333b7007d1fa4c0bc6 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 28 Oct 2021 16:24:34 +0800 Subject: *misc --- Runtime/Scripting/Rendering/Shader.bind.cpp | 45 ++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'Runtime/Scripting/Rendering/Shader.bind.cpp') diff --git a/Runtime/Scripting/Rendering/Shader.bind.cpp b/Runtime/Scripting/Rendering/Shader.bind.cpp index 6646407..1605be5 100644 --- a/Runtime/Scripting/Rendering/Shader.bind.cpp +++ b/Runtime/Scripting/Rendering/Shader.bind.cpp @@ -20,33 +20,52 @@ LUA_BIND_POSTPROCESS(Shader) { } +// Shader.New(glsl[, keepSrc]) +// Shader.New(vsh, fsh[, keepSrc]) LUA_BIND_IMPL_METHOD(Shader, _New) { LUA_BIND_STATE(L, Shader); - LUA_BIND_CHECK(L, "SS*"); + LUA_BIND_CHECK(L, "SS*|S*"); try { - std::string vert, frag; - bool keepCode = false; - if (state.GetTop() == 2) + Shader* shader = NULL; + if (state.CheckParams(1, "SSB")) { - vert = state.GetValue(-2, ""); - frag = state.GetValue(-1, ""); + cc8* vert = state.GetValue(-3, ""); + cc8* frag = state.GetValue(-2, ""); + bool keepCode = state.GetValue(-1, false); + shader = new Shader(state.GetVM(), vert, frag, keepCode); } - else + else if(state.CheckParams(1, "SS")) { - vert = state.GetValue(-3, ""); - frag = state.GetValue(-2, ""); - keepCode = state.GetValue(-1, false); + cc8* vert = state.GetValue(-2, ""); + cc8* frag = state.GetValue(-1, ""); + shader = new Shader(state.GetVM(), vert, frag); } - Shader* shader = new Shader(state.GetVM(), vert, frag, keepCode); - shader->PushUserdata(state); + else if (state.CheckParams(1, "SB")) + { + std::string glsl = state.GetValue(1, ""); + bool keepCode = state.GetValue(2, false); + shader = new Shader(state.GetVM(), glsl, keepCode); + } + else if (state.CheckParams(1, "S")) + { + std::string glsl = state.GetValue(1, ""); + shader = new Shader(state.GetVM(), glsl); + } + if (shader != NULL) + shader->PushUserdata(state); + else + state.PushNil(); return 1; } catch (ShaderCompileExecption e) { log_error(e.what()); + state.PushNil(); + return 1; } - return 0; + Assert(false); + return 0; } LUA_BIND_IMPL_METHOD(Shader, _ReCompile) -- cgit v1.1-26-g67d0