Added support for texture2DGrad.

This commit is contained in:
Branimir Karadžić
2017-03-23 17:33:29 -07:00
parent 7f847d9af0
commit 293c1dc60a
4 changed files with 131 additions and 43 deletions

View File

@@ -851,10 +851,16 @@ namespace bgfx { namespace gl
static const char* s_ARB_shader_texture_lod[] =
{
"texture2DLod",
"texture2DArrayLod", // BK - interacts with ARB_texture_array.
"texture2DProjLod",
"texture2DGrad",
"texture2DProjGrad",
"texture3DLod",
"texture3DProjLod",
"texture3DGrad",
"texture3DProjGrad",
"textureCubeLod",
"textureCubeGrad",
"shadow2DLod",
"shadow2DProjLod",
NULL
@@ -869,10 +875,10 @@ namespace bgfx { namespace gl
"texture2DLod",
"texture2DProjLod",
"textureCubeLod",
"texture2DGrad",
"texture2DProjGrad",
"textureCubeGrad",
NULL
// "texture2DGrad",
// "texture2DProjGrad",
// "textureCubeGrad",
};
static const char* s_EXT_shadow_samplers[] =
@@ -5499,15 +5505,20 @@ namespace bgfx { namespace gl
if (usesTextureLod)
{
BX_WARN(s_extension[Extension::EXT_shader_texture_lod].m_supported, "EXT_shader_texture_lod is used but not supported by GLES2 driver.");
if (s_extension[Extension::EXT_shader_texture_lod].m_supported
/*&& GL_VERTEX_SHADER == m_type*/)
BX_WARN(s_extension[Extension::ARB_shader_texture_lod].m_supported
, "ARB_shader_texture_lod is used but not supported by GLES2 driver."
);
if (s_extension[Extension::ARB_shader_texture_lod].m_supported)
{
writeString(&writer
, "#extension GL_EXT_shader_texture_lod : enable\n"
"#define texture2DLod texture2DLodEXT\n"
"#define texture2DProjLod texture2DProjLodEXT\n"
"#define textureCubeLod textureCubeLodEXT\n"
, "#extension GL_ARB_shader_texture_lod : enable\n"
"#define texture2DLod texture2DLodARB\n"
"#define texture2DProjLod texture2DProjLodARB\n"
"#define textureCubeLod textureCubeLodARB\n"
"#define texture2DGrad texture2DGradARB\n"
"#define texture2DProjGrad texture2DProjGradARB\n"
"#define textureCubeGrad textureCubeGradARB\n"
);
}
else
@@ -5593,7 +5604,12 @@ namespace bgfx { namespace gl
{
if (m_type == GL_FRAGMENT_SHADER)
{
writeString(&writer, "#extension GL_ARB_shader_texture_lod : enable\n");
writeString(&writer
, "#extension GL_ARB_shader_texture_lod : enable\n"
"#define texture2DGrad texture2DGradARB\n"
"#define texture2DProjGrad texture2DProjGradARB\n"
"#define textureCubeGrad textureCubeGradARB\n"
);
}
}
@@ -5695,9 +5711,12 @@ namespace bgfx { namespace gl
writeString(&writer, "#version 140\n");
}
writeString(&writer, "#define texture2DLod textureLod\n");
writeString(&writer, "#define texture3DLod textureLod\n");
writeString(&writer, "#define textureCubeLod textureLod\n");
writeString(&writer, "#define texture2DLod textureLod\n");
writeString(&writer, "#define texture3DLod textureLod\n");
writeString(&writer, "#define textureCubeLod textureLod\n");
writeString(&writer, "#define texture2DGrad textureGrad\n");
writeString(&writer, "#define texture3DGrad textureGrad\n");
writeString(&writer, "#define textureCubeGrad textureGrad\n");
if (m_type == GL_FRAGMENT_SHADER)
{