mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-07-15 22:02:29 +08:00
+ Added support for constant shader values
~ Fixed shader parameter setting that wasn't properly loading the values for the shader to use Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
This commit is contained in:
parent
374f53be6a
commit
6abd73e843
@ -15,6 +15,6 @@ find_package(LZ4 REQUIRED)
|
|||||||
|
|
||||||
include_directories(${X11_INCLUDE_DIR} ${IRRLICHT_INCLUDE_DIR} ${LZ4_INCLUDE_DIR} .)
|
include_directories(${X11_INCLUDE_DIR} ${IRRLICHT_INCLUDE_DIR} ${LZ4_INCLUDE_DIR} .)
|
||||||
|
|
||||||
add_executable(wallengine main.cpp wallpaperengine/shaders/compiler.h wallpaperengine/shaders/compiler.cpp wallpaperengine/project.cpp wallpaperengine/project.h wallpaperengine/scene.cpp wallpaperengine/scene.h wallpaperengine/object.cpp wallpaperengine/object.h wallpaperengine/camera.cpp wallpaperengine/camera.h wallpaperengine/core.cpp wallpaperengine/core.h wallpaperengine/image.cpp wallpaperengine/image.h wallpaperengine/object3d.cpp wallpaperengine/object3d.h wallpaperengine/effect.cpp wallpaperengine/effect.h wallpaperengine/fs/utils.cpp wallpaperengine/fs/utils.h wallpaperengine/irrlicht.cpp wallpaperengine/irrlicht.h wallpaperengine/video/renderer.cpp wallpaperengine/video/renderer.h wallpaperengine/video/node.cpp wallpaperengine/video/node.h wallpaperengine/video/material.cpp wallpaperengine/video/material.h wallpaperengine/texture.cpp wallpaperengine/texture.h wallpaperengine/irr/CImageLoaderTEX.h wallpaperengine/irr/CImageLoaderTEX.cpp wallpaperengine/irr/CPkgReader.h wallpaperengine/irr/CPkgReader.cpp wallpaperengine/irr/CFileList.h wallpaperengine/irr/CFileList.cpp wallpaperengine/irr/vector4d.h)
|
add_executable(wallengine main.cpp wallpaperengine/shaders/compiler.h wallpaperengine/shaders/compiler.cpp wallpaperengine/project.cpp wallpaperengine/project.h wallpaperengine/scene.cpp wallpaperengine/scene.h wallpaperengine/object.cpp wallpaperengine/object.h wallpaperengine/camera.cpp wallpaperengine/camera.h wallpaperengine/core.cpp wallpaperengine/core.h wallpaperengine/image.cpp wallpaperengine/image.h wallpaperengine/object3d.cpp wallpaperengine/object3d.h wallpaperengine/effect.cpp wallpaperengine/effect.h wallpaperengine/fs/utils.cpp wallpaperengine/fs/utils.h wallpaperengine/irrlicht.cpp wallpaperengine/irrlicht.h wallpaperengine/video/renderer.cpp wallpaperengine/video/renderer.h wallpaperengine/video/node.cpp wallpaperengine/video/node.h wallpaperengine/video/material.cpp wallpaperengine/video/material.h wallpaperengine/texture.cpp wallpaperengine/texture.h wallpaperengine/irr/CImageLoaderTEX.h wallpaperengine/irr/CImageLoaderTEX.cpp wallpaperengine/irr/CPkgReader.h wallpaperengine/irr/CPkgReader.cpp wallpaperengine/irr/CFileList.h wallpaperengine/irr/CFileList.cpp)
|
||||||
|
|
||||||
target_link_libraries(wallengine ${X11_LIBRARIES} ${X11_Xxf86vm_LIB} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ${ZLIB_LIBRARIES} ${IRRLICHT_LIBRARY} ${LZ4_LIBRARY})
|
target_link_libraries(wallengine ${X11_LIBRARIES} ${X11_Xxf86vm_LIB} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ${ZLIB_LIBRARIES} ${IRRLICHT_LIBRARY} ${LZ4_LIBRARY})
|
2
main.cpp
2
main.cpp
@ -200,5 +200,7 @@ int main (int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete wp_project;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -116,12 +116,18 @@ namespace wp
|
|||||||
{
|
{
|
||||||
wp::shaders::compiler::ShaderParameter* param = (*cur);
|
wp::shaders::compiler::ShaderParameter* param = (*cur);
|
||||||
ShaderParameter* parameter = new ShaderParameter;
|
ShaderParameter* parameter = new ShaderParameter;
|
||||||
|
void* defaultValue = param->defaultValue;
|
||||||
|
|
||||||
|
std::map<std::string,void*>::const_iterator constant = this->m_constants.find (param->identifierName);
|
||||||
|
|
||||||
|
if (constant != this->m_constants.end ())
|
||||||
|
defaultValue = (*constant).second;
|
||||||
|
|
||||||
parameter->value = nullptr;
|
parameter->value = nullptr;
|
||||||
|
|
||||||
if (param->type == "vec4")
|
if (param->type == "vec4")
|
||||||
{
|
{
|
||||||
irr::core::vector3df* vec = (irr::core::vector3df*) param->defaultValue;
|
irr::core::vector3df* vec = (irr::core::vector3df*) defaultValue;
|
||||||
irr::f32* val = new irr::f32 [4];
|
irr::f32* val = new irr::f32 [4];
|
||||||
|
|
||||||
val [0] = vec->X;
|
val [0] = vec->X;
|
||||||
@ -134,7 +140,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "vec3")
|
else if (param->type == "vec3")
|
||||||
{
|
{
|
||||||
irr::core::vector3df* vec = (irr::core::vector3df*) param->defaultValue;
|
irr::core::vector3df* vec = (irr::core::vector3df*) defaultValue;
|
||||||
irr::f32* val = new irr::f32 [3];
|
irr::f32* val = new irr::f32 [3];
|
||||||
|
|
||||||
val [0] = vec->X;
|
val [0] = vec->X;
|
||||||
@ -146,7 +152,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "vec2")
|
else if (param->type == "vec2")
|
||||||
{
|
{
|
||||||
irr::core::vector2df* vec = (irr::core::vector2df*) param->defaultValue;
|
irr::core::vector2df* vec = (irr::core::vector2df*) defaultValue;
|
||||||
irr::f32* val = new irr::f32 [2];
|
irr::f32* val = new irr::f32 [2];
|
||||||
|
|
||||||
val [0] = vec->X;
|
val [0] = vec->X;
|
||||||
@ -157,7 +163,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "float")
|
else if (param->type == "float")
|
||||||
{
|
{
|
||||||
irr::f32* org = (irr::f32*) param->defaultValue;
|
irr::f32* org = (irr::f32*) defaultValue;
|
||||||
irr::f32* val = new irr::f32;
|
irr::f32* val = new irr::f32;
|
||||||
|
|
||||||
*val = *org;
|
*val = *org;
|
||||||
@ -167,7 +173,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "int")
|
else if (param->type == "int")
|
||||||
{
|
{
|
||||||
irr::s32* org = (irr::s32*) param->defaultValue;
|
irr::s32* org = (irr::s32*) defaultValue;
|
||||||
irr::s32* val = new irr::s32;
|
irr::s32* val = new irr::s32;
|
||||||
|
|
||||||
*val = *org;
|
*val = *org;
|
||||||
@ -196,13 +202,20 @@ namespace wp
|
|||||||
if (param == nullptr)
|
if (param == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
void* defaultValue = param->defaultValue;
|
||||||
|
|
||||||
|
std::map<std::string,void*>::const_iterator constant = this->m_constants.find (param->identifierName);
|
||||||
|
|
||||||
|
if (constant != this->m_constants.end ())
|
||||||
|
defaultValue = (*constant).second;
|
||||||
|
|
||||||
ShaderParameter* parameter = new ShaderParameter;
|
ShaderParameter* parameter = new ShaderParameter;
|
||||||
|
|
||||||
parameter->value = nullptr;
|
parameter->value = nullptr;
|
||||||
|
|
||||||
if (param->type == "vec4")
|
if (param->type == "vec4")
|
||||||
{
|
{
|
||||||
irr::core::vector3df* vec = (irr::core::vector3df*) param->defaultValue;
|
irr::core::vector3df* vec = (irr::core::vector3df*) defaultValue;
|
||||||
|
|
||||||
parameter->value = new irr::f32 [4];
|
parameter->value = new irr::f32 [4];
|
||||||
|
|
||||||
@ -215,7 +228,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "vec3")
|
else if (param->type == "vec3")
|
||||||
{
|
{
|
||||||
irr::core::vector3df* vec = (irr::core::vector3df*) param->defaultValue;
|
irr::core::vector3df* vec = (irr::core::vector3df*) defaultValue;
|
||||||
|
|
||||||
parameter->value = new irr::f32 [3];
|
parameter->value = new irr::f32 [3];
|
||||||
|
|
||||||
@ -227,7 +240,7 @@ namespace wp
|
|||||||
}
|
}
|
||||||
else if (param->type == "vec2")
|
else if (param->type == "vec2")
|
||||||
{
|
{
|
||||||
irr::core::vector2df* vec = (irr::core::vector2df*) param->defaultValue;
|
irr::core::vector2df* vec = (irr::core::vector2df*) defaultValue;
|
||||||
|
|
||||||
parameter->value = new irr::f32 [2];
|
parameter->value = new irr::f32 [2];
|
||||||
|
|
||||||
@ -239,14 +252,14 @@ namespace wp
|
|||||||
else if (param->type == "float")
|
else if (param->type == "float")
|
||||||
{
|
{
|
||||||
parameter->value = new irr::f32;
|
parameter->value = new irr::f32;
|
||||||
*(irr::f32*) parameter->value = *(irr::f32*) param->defaultValue;
|
*(irr::f32*) parameter->value = *(irr::f32*) defaultValue;
|
||||||
|
|
||||||
parameter->type = ParameterType::TYPE_FLOAT;
|
parameter->type = ParameterType::TYPE_FLOAT;
|
||||||
}
|
}
|
||||||
else if (param->type == "int")
|
else if (param->type == "int")
|
||||||
{
|
{
|
||||||
parameter->value = new irr::s32;
|
parameter->value = new irr::s32;
|
||||||
*(irr::s32*) parameter->value = *(irr::s32*) param->defaultValue;
|
*(irr::s32*) parameter->value = *(irr::s32*) defaultValue;
|
||||||
|
|
||||||
parameter->type = ParameterType::TYPE_INT;
|
parameter->type = ParameterType::TYPE_INT;
|
||||||
}
|
}
|
||||||
@ -413,19 +426,19 @@ namespace wp
|
|||||||
switch ((*vertcur).second->type)
|
switch ((*vertcur).second->type)
|
||||||
{
|
{
|
||||||
case ParameterType::TYPE_FLOAT:
|
case ParameterType::TYPE_FLOAT:
|
||||||
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second, 1);
|
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second->value, 1);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC2:
|
case ParameterType::TYPE_VEC2:
|
||||||
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second, 2);
|
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second->value, 2);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC3:
|
case ParameterType::TYPE_VEC3:
|
||||||
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second, 3);
|
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second->value, 3);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC4:
|
case ParameterType::TYPE_VEC4:
|
||||||
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second, 4);
|
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::f32*) (*vertcur).second->value, 4);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_INT:
|
case ParameterType::TYPE_INT:
|
||||||
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::s32*) (*vertcur).second, 1);
|
services->setVertexShaderConstant ((*vertcur).first.c_str (), (irr::s32*) (*vertcur).second->value, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -439,19 +452,19 @@ namespace wp
|
|||||||
switch ((*pixelcur).second->type)
|
switch ((*pixelcur).second->type)
|
||||||
{
|
{
|
||||||
case ParameterType::TYPE_FLOAT:
|
case ParameterType::TYPE_FLOAT:
|
||||||
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second, 1);
|
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second->value, 1);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC2:
|
case ParameterType::TYPE_VEC2:
|
||||||
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second, 2);
|
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second->value, 2);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC3:
|
case ParameterType::TYPE_VEC3:
|
||||||
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second, 3);
|
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second->value, 3);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_VEC4:
|
case ParameterType::TYPE_VEC4:
|
||||||
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second, 4);
|
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::f32*) (*pixelcur).second->value, 4);
|
||||||
break;
|
break;
|
||||||
case ParameterType::TYPE_INT:
|
case ParameterType::TYPE_INT:
|
||||||
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::s32*) (*pixelcur).second, 1);
|
services->setPixelShaderConstant ((*pixelcur).first.c_str (), (irr::s32*) (*pixelcur).second->value, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ namespace wp
|
|||||||
memset (filedata, 0, reader->getSize () + 1);
|
memset (filedata, 0, reader->getSize () + 1);
|
||||||
|
|
||||||
reader->read (filedata, reader->getSize ());
|
reader->read (filedata, reader->getSize ());
|
||||||
|
reader->drop ();
|
||||||
|
|
||||||
std::string content = filedata;
|
std::string content = filedata;
|
||||||
delete [] filedata;
|
delete [] filedata;
|
||||||
|
Loading…
Reference in New Issue
Block a user