Files
Webcam/include/modules/script_squirrel/legacy/material_shader_binding.cpp

73 lines
2.5 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "binding_helpers.h"
#include "core/render_data.h"
using namespace GS::Render;
using namespace GS::Script;
//------------------------------------------------------------------------------
SQInteger MaterialShaderSetUniformValue(HSQUIRRELVM vm)
{
__SQ_GETSTART(3)
__SQ_GETSAFEPTR(shader, MaterialShader, typetag_MaterialShader)
__SQ_GETSTRING(name)
__SQ_GETVECTOR(value)
bool r = shader->SetUserUniformValue(name, value);
__SQ_GETEND
__SQ_RETURNBOOL(r)
}
SQInteger MaterialShaderSetUniformTexture(HSQUIRRELVM vm)
{
__SQ_GETSTART(3)
__SQ_GETSAFEPTR(shader, MaterialShader, typetag_MaterialShader)
__SQ_GETSTRING(name)
__SQ_GETSAFEPTRALLOWNULL(t, Texture, typetag_Texture)
bool r = shader->SetUserUniformValue(name, t);
__SQ_GETEND
__SQ_RETURNBOOL(r)
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void RegisterMaterialShaderBinding(HSQUIRRELVM vm)
{
/*#
Topic: Material Shader
Type: MaterialShader
Desc: A material shader holds all the variants of a shader required to render a material.
#*/
/*#
Section: MaterialShaderGeneral
Desc: General functions
#*/
/*#
Func: MaterialShaderSetUniformValue
Proto: bool:MaterialShader shader,String name,Vector value
Desc: Set uniform value in a material shader.
Note: The value is always passed as a vector of 4 floats, if the uniform type is smaller than vec4 unused entries of the vector are ignored.
Example:
local shader = MaterialGetShader(material)
// u_user_param is a float.
MaterialShaderSetUniformValue(shader, "u_user_param", Vector(1.0, 0.0, 0.0, 0.0))
#*/
sq_register(vm, MaterialShaderSetUniformValue, "MaterialShaderSetUniformValue", _SC(".xsx"));
/*#
Func: MaterialShaderSetUniformTexture
Proto: bool:MaterialShader shader,String name,Texture texture
Desc: Set uniform texture in a material shader.
Example:
local shader = MaterialGetShader(material)
// u_user_tex is a Texture2D.
MaterialShaderSetUniformTexture(shader, "u_user_tex", ResourceFactoryLoadTexture(g_factory, "textures/texture.png"))
#*/
sq_register(vm, MaterialShaderSetUniformTexture, "MaterialShaderSetUniformTexture", _SC(".xsx"));
}
//------------------------------------------------------------------------------