Add 3D texture intrinsics to the symbol table.

TRAC #23365
Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Nicolas Capens
diff --git a/src/compiler/BaseTypes.h b/src/compiler/BaseTypes.h
index 347ae04..cd0e35c 100644
--- a/src/compiler/BaseTypes.h
+++ b/src/compiler/BaseTypes.h
@@ -42,12 +42,15 @@
     EbtBool,
     EbtGuardSamplerBegin,  // non type:  see implementation of IsSampler()
     EbtSampler2D,
+    EbtSampler3D,
     EbtSamplerCube,
     EbtSamplerExternalOES,  // Only valid if OES_EGL_image_external exists.
     EbtSampler2DRect,       // Only valid if GL_ARB_texture_rectangle exists.
     EbtISampler2D,
+    EbtISampler3D,
     EbtISamplerCube,
     EbtUSampler2D,
+    EbtUSampler3D,
     EbtUSamplerCube,
     EbtGuardSamplerEnd,    // non type:  see implementation of IsSampler()
     EbtStruct,
diff --git a/src/compiler/Initialize.cpp b/src/compiler/Initialize.cpp
index accb6e1..d2b92ea 100644
--- a/src/compiler/Initialize.cpp
+++ b/src/compiler/Initialize.cpp
@@ -385,30 +385,40 @@
         symbolTable.insertBuiltIn(ESSL1_BUILTINS, float4, "textureCubeLod", samplerCube, "sampler", float3, "coord", float1, "lod");
     }
 
+    TType *sampler3D = new TType(EbtSampler3D, EbpUndefined, EvqGlobal, 1);
+
     //
     // Texture Functions for GLSL ES 3.0
     //
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "texture", sampler2D, "sampler", float2, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "texture", sampler3D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "texture", samplerCube, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "textureProj", sampler2D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "textureProj", sampler2D, "sampler", float4, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, float4, "textureProj", sampler3D, "sampler", float4, "coord");
 
     TType *isampler2D = new TType(EbtISampler2D, EbpUndefined, EvqGlobal, 1);
+    TType *isampler3D = new TType(EbtISampler3D, EbpUndefined, EvqGlobal, 1);
     TType *isamplerCube = new TType(EbtISamplerCube, EbpUndefined, EvqGlobal, 1);
 
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "texture", isampler2D, "sampler", float2, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "texture", isampler3D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "texture", isamplerCube, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "textureProj", isampler2D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "textureProj", isampler2D, "sampler", float4, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, int4, "textureProj", isampler3D, "sampler", float4, "coord");
 
     TType *usampler2D = new TType(EbtUSampler2D, EbpUndefined, EvqGlobal, 1);
+    TType *usampler3D = new TType(EbtUSampler3D, EbpUndefined, EvqGlobal, 1);
     TType *usamplerCube = new TType(EbtUSamplerCube, EbpUndefined, EvqGlobal, 1);
     TType *uint4 = new TType(EbtUInt, EbpUndefined, EvqGlobal, 4);
 
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "texture", usampler2D, "sampler", float2, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "texture", usampler3D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "texture", usamplerCube, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "textureProj", usampler2D, "sampler", float3, "coord");
     symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "textureProj", usampler2D, "sampler", float4, "coord");
+    symbolTable.insertBuiltIn(ESSL3_BUILTINS, uint4, "textureProj", usampler3D, "sampler", float4, "coord");
 
     if(type == SH_FRAGMENT_SHADER)
     {