mirror of
https://github.com/luanti-org/luanti.git
synced 2025-09-15 18:57:08 +00:00
Clean up Irrlicht shader API
This commit is contained in:
parent
40afc84597
commit
1ea8763259
12 changed files with 79 additions and 458 deletions
|
@ -1520,34 +1520,24 @@ IGPUProgrammingServices *CNullDriver::getGPUProgrammingServices()
|
|||
//! Adds a new material renderer to the VideoDriver, based on a high level shading language.
|
||||
s32 CNullDriver::addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
const c8 *shaderName,
|
||||
scene::E_PRIMITIVE_TYPE inType, scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
IShaderConstantSetCallBack *callback,
|
||||
E_MATERIAL_TYPE baseMaterial,
|
||||
s32 userData)
|
||||
{
|
||||
os::Printer::log("High level shader materials not available (yet) in this driver, sorry");
|
||||
os::Printer::log("Shader materials not available in this driver", ELL_ERROR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 CNullDriver::addHighLevelShaderMaterialFromFiles(
|
||||
const io::path &vertexShaderProgramFileName,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const io::path &pixelShaderProgramFileName,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const io::path &geometryShaderProgramFileName,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
const c8 *shaderName,
|
||||
scene::E_PRIMITIVE_TYPE inType, scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
IShaderConstantSetCallBack *callback,
|
||||
|
@ -1583,9 +1573,7 @@ s32 CNullDriver::addHighLevelShaderMaterialFromFiles(
|
|||
}
|
||||
|
||||
s32 result = addHighLevelShaderMaterialFromFiles(
|
||||
vsfile, vertexShaderEntryPointName, vsCompileTarget,
|
||||
psfile, pixelShaderEntryPointName, psCompileTarget,
|
||||
gsfile, geometryShaderEntryPointName, gsCompileTarget,
|
||||
vsfile, psfile, gsfile, shaderName,
|
||||
inType, outType, verticesOut,
|
||||
callback, baseMaterial, userData);
|
||||
|
||||
|
@ -1603,14 +1591,9 @@ s32 CNullDriver::addHighLevelShaderMaterialFromFiles(
|
|||
|
||||
s32 CNullDriver::addHighLevelShaderMaterialFromFiles(
|
||||
io::IReadFile *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
io::IReadFile *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
io::IReadFile *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
const c8 *shaderName,
|
||||
scene::E_PRIMITIVE_TYPE inType, scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
IShaderConstantSetCallBack *callback,
|
||||
|
@ -1656,9 +1639,7 @@ s32 CNullDriver::addHighLevelShaderMaterialFromFiles(
|
|||
}
|
||||
|
||||
s32 result = this->addHighLevelShaderMaterial(
|
||||
vs, vertexShaderEntryPointName, vsCompileTarget,
|
||||
ps, pixelShaderEntryPointName, psCompileTarget,
|
||||
gs, geometryShaderEntryPointName, gsCompileTarget,
|
||||
vs, ps, gs, shaderName,
|
||||
inType, outType, verticesOut,
|
||||
callback, baseMaterial, userData);
|
||||
|
||||
|
|
|
@ -449,54 +449,39 @@ public:
|
|||
//! Adds a new material renderer to the VideoDriver, based on a high level shading language.
|
||||
virtual s32 addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName = 0,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
|
||||
const c8 *pixelShaderProgram = 0,
|
||||
const c8 *pixelShaderEntryPointName = 0,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
|
||||
const c8 *geometryShaderProgram = 0,
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *shaderName = nullptr,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
IShaderConstantSetCallBack *callback = 0,
|
||||
IShaderConstantSetCallBack *callback = nullptr,
|
||||
E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
|
||||
s32 userData = 0) override;
|
||||
s32 userData = 0)override;
|
||||
|
||||
virtual s32 addHighLevelShaderMaterialFromFiles(
|
||||
const io::path &vertexShaderProgramFile,
|
||||
const c8 *vertexShaderEntryPointName = "main",
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
|
||||
const io::path &pixelShaderProgramFile = "",
|
||||
const c8 *pixelShaderEntryPointName = "main",
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
|
||||
const io::path &geometryShaderProgramFileName = "",
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
const io::path &vertexShaderProgramFileName,
|
||||
const io::path &pixelShaderProgramFileName,
|
||||
const io::path &geometryShaderProgramFileName,
|
||||
const c8 *shaderName = nullptr,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
IShaderConstantSetCallBack *callback = 0,
|
||||
IShaderConstantSetCallBack *callback = nullptr,
|
||||
E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
|
||||
s32 userData = 0) override;
|
||||
|
||||
virtual s32 addHighLevelShaderMaterialFromFiles(
|
||||
s32 addHighLevelShaderMaterialFromFiles(
|
||||
io::IReadFile *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName = "main",
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
|
||||
io::IReadFile *pixelShaderProgram = 0,
|
||||
const c8 *pixelShaderEntryPointName = "main",
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
|
||||
io::IReadFile *geometryShaderProgram = 0,
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
const c8 *shaderName = nullptr,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
IShaderConstantSetCallBack *callback = 0,
|
||||
IShaderConstantSetCallBack *callback = nullptr,
|
||||
E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
|
||||
s32 userData = 0) override;
|
||||
s32 userData = 0);
|
||||
|
||||
virtual void deleteShaderMaterial(s32 material) override;
|
||||
|
||||
|
|
|
@ -2654,14 +2654,9 @@ bool COpenGLDriver::setPixelShaderConstant(s32 index, const u32 *ints, int count
|
|||
//! Adds a new material renderer to the VideoDriver, using GLSL to render geometry.
|
||||
s32 COpenGLDriver::addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
const c8 *shaderName,
|
||||
scene::E_PRIMITIVE_TYPE inType,
|
||||
scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
|
@ -2673,9 +2668,9 @@ s32 COpenGLDriver::addHighLevelShaderMaterial(
|
|||
|
||||
COpenGLSLMaterialRenderer *r = new COpenGLSLMaterialRenderer(
|
||||
this, nr,
|
||||
vertexShaderProgram, vertexShaderEntryPointName, vsCompileTarget,
|
||||
pixelShaderProgram, pixelShaderEntryPointName, psCompileTarget,
|
||||
geometryShaderProgram, geometryShaderEntryPointName, gsCompileTarget,
|
||||
vertexShaderProgram,
|
||||
pixelShaderProgram,
|
||||
geometryShaderProgram,
|
||||
inType, outType, verticesOut,
|
||||
callback, baseMaterial, userData);
|
||||
|
||||
|
|
|
@ -240,18 +240,13 @@ public:
|
|||
//! Adds a new material renderer to the VideoDriver, using GLSL to render geometry.
|
||||
virtual s32 addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
const c8 *shaderName = nullptr,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
IShaderConstantSetCallBack *callback = 0,
|
||||
IShaderConstantSetCallBack *callback = nullptr,
|
||||
E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
|
||||
s32 userData = 0) override;
|
||||
|
||||
|
|
|
@ -34,14 +34,8 @@ namespace video
|
|||
//! Constructor
|
||||
COpenGLSLMaterialRenderer::COpenGLSLMaterialRenderer(video::COpenGLDriver *driver,
|
||||
s32 &outMaterialTypeNr, const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
scene::E_PRIMITIVE_TYPE inType, scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
IShaderConstantSetCallBack *callback,
|
||||
|
|
|
@ -33,14 +33,8 @@ public:
|
|||
COpenGLDriver *driver,
|
||||
s32 &outMaterialTypeNr,
|
||||
const c8 *vertexShaderProgram = 0,
|
||||
const c8 *vertexShaderEntryPointName = 0,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget = video::EVST_VS_1_1,
|
||||
const c8 *pixelShaderProgram = 0,
|
||||
const c8 *pixelShaderEntryPointName = 0,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget = video::EPST_PS_1_1,
|
||||
const c8 *geometryShaderProgram = 0,
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
|
|
|
@ -386,28 +386,28 @@ void COpenGL3DriverBase::createMaterialRenderers()
|
|||
|
||||
// EMT_SOLID
|
||||
core::stringc FragmentShader = OGLES2ShaderPath + "Solid.fsh";
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",
|
||||
EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, SolidCB, EMT_SOLID, 0);
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, FragmentShader, "", "Solid",
|
||||
scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, SolidCB, EMT_SOLID, 0);
|
||||
|
||||
// EMT_TRANSPARENT_ALPHA_CHANNEL
|
||||
FragmentShader = OGLES2ShaderPath + "TransparentAlphaChannel.fsh";
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",
|
||||
EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentAlphaChannelCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, FragmentShader, "", "TransparentAlphaChannel",
|
||||
scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentAlphaChannelCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);
|
||||
|
||||
// EMT_TRANSPARENT_ALPHA_CHANNEL_REF
|
||||
FragmentShader = OGLES2ShaderPath + "TransparentAlphaChannelRef.fsh";
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",
|
||||
EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentAlphaChannelRefCB, EMT_SOLID, 0);
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, FragmentShader, "", "TransparentAlphaChannelRef",
|
||||
scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentAlphaChannelRefCB, EMT_SOLID, 0);
|
||||
|
||||
// EMT_TRANSPARENT_VERTEX_ALPHA
|
||||
FragmentShader = OGLES2ShaderPath + "TransparentVertexAlpha.fsh";
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",
|
||||
EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentVertexAlphaCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, FragmentShader, "", "TransparentVertexAlpha",
|
||||
scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentVertexAlphaCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);
|
||||
|
||||
// EMT_ONETEXTURE_BLEND
|
||||
FragmentShader = OGLES2ShaderPath + "OneTextureBlend.fsh";
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",
|
||||
EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, OneTextureBlendCB, EMT_ONETEXTURE_BLEND, 0);
|
||||
addHighLevelShaderMaterialFromFiles(VertexShader, FragmentShader, "", "OneTextureBlend",
|
||||
scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, OneTextureBlendCB, EMT_ONETEXTURE_BLEND, 0);
|
||||
|
||||
// Drop callbacks.
|
||||
|
||||
|
@ -1588,14 +1588,9 @@ bool COpenGL3DriverBase::setPixelShaderConstant(s32 index, const u32 *ints, int
|
|||
//! Adds a new material renderer to the VideoDriver, using GLSL to render geometry.
|
||||
s32 COpenGL3DriverBase::addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *pixelShaderEntryPointName,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget,
|
||||
const c8 *geometryShaderProgram,
|
||||
const c8 *geometryShaderEntryPointName,
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget,
|
||||
const c8 *shaderName,
|
||||
scene::E_PRIMITIVE_TYPE inType,
|
||||
scene::E_PRIMITIVE_TYPE outType,
|
||||
u32 verticesOut,
|
||||
|
|
|
@ -189,18 +189,13 @@ public:
|
|||
//! Adds a new material renderer to the VideoDriver
|
||||
virtual s32 addHighLevelShaderMaterial(
|
||||
const c8 *vertexShaderProgram,
|
||||
const c8 *vertexShaderEntryPointName = 0,
|
||||
E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
|
||||
const c8 *pixelShaderProgram = 0,
|
||||
const c8 *pixelShaderEntryPointName = 0,
|
||||
E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
|
||||
const c8 *geometryShaderProgram = 0,
|
||||
const c8 *geometryShaderEntryPointName = "main",
|
||||
E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
|
||||
const c8 *pixelShaderProgram,
|
||||
const c8 *geometryShaderProgram = nullptr,
|
||||
const c8 *shaderName = nullptr,
|
||||
scene::E_PRIMITIVE_TYPE inType = scene::EPT_TRIANGLES,
|
||||
scene::E_PRIMITIVE_TYPE outType = scene::EPT_TRIANGLE_STRIP,
|
||||
u32 verticesOut = 0,
|
||||
IShaderConstantSetCallBack *callback = 0,
|
||||
IShaderConstantSetCallBack *callback = nullptr,
|
||||
E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
|
||||
s32 userData = 0) override;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue