mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-10 21:28:32 +09:00
[Misc] (All): Run format_code.sh
This commit is contained in:
@@ -19,106 +19,111 @@ namespace MobileGL {
|
||||
|
||||
if (matCol > 1) {
|
||||
switch (baseType) {
|
||||
case GL_FLOAT:
|
||||
if (vecSize == 4 && matCol == 4) return GL_FLOAT_MAT4;
|
||||
if (vecSize == 3 && matCol == 3) return GL_FLOAT_MAT3;
|
||||
if (vecSize == 2 && matCol == 2) return GL_FLOAT_MAT2;
|
||||
if (vecSize == 2 && matCol == 3) return GL_FLOAT_MAT3x2;
|
||||
if (vecSize == 2 && matCol == 4) return GL_FLOAT_MAT4x2;
|
||||
if (vecSize == 3 && matCol == 2) return GL_FLOAT_MAT2x3;
|
||||
if (vecSize == 3 && matCol == 4) return GL_FLOAT_MAT4x3;
|
||||
if (vecSize == 4 && matCol == 2) return GL_FLOAT_MAT2x4;
|
||||
if (vecSize == 4 && matCol == 3) return GL_FLOAT_MAT3x4;
|
||||
break;
|
||||
case GL_DOUBLE:
|
||||
if (vecSize == 4 && matCol == 4) return GL_DOUBLE_MAT4;
|
||||
if (vecSize == 3 && matCol == 3) return GL_DOUBLE_MAT3;
|
||||
if (vecSize == 2 && matCol == 2) return GL_DOUBLE_MAT2;
|
||||
if (vecSize == 2 && matCol == 3) return GL_DOUBLE_MAT3x2;
|
||||
if (vecSize == 2 && matCol == 4) return GL_DOUBLE_MAT4x2;
|
||||
if (vecSize == 3 && matCol == 2) return GL_DOUBLE_MAT2x3;
|
||||
if (vecSize == 3 && matCol == 4) return GL_DOUBLE_MAT4x3;
|
||||
if (vecSize == 4 && matCol == 2) return GL_DOUBLE_MAT2x4;
|
||||
if (vecSize == 4 && matCol == 3) return GL_DOUBLE_MAT3x4;
|
||||
break;
|
||||
default:
|
||||
return GL_FALSE;
|
||||
case GL_FLOAT:
|
||||
if (vecSize == 4 && matCol == 4) return GL_FLOAT_MAT4;
|
||||
if (vecSize == 3 && matCol == 3) return GL_FLOAT_MAT3;
|
||||
if (vecSize == 2 && matCol == 2) return GL_FLOAT_MAT2;
|
||||
if (vecSize == 2 && matCol == 3) return GL_FLOAT_MAT3x2;
|
||||
if (vecSize == 2 && matCol == 4) return GL_FLOAT_MAT4x2;
|
||||
if (vecSize == 3 && matCol == 2) return GL_FLOAT_MAT2x3;
|
||||
if (vecSize == 3 && matCol == 4) return GL_FLOAT_MAT4x3;
|
||||
if (vecSize == 4 && matCol == 2) return GL_FLOAT_MAT2x4;
|
||||
if (vecSize == 4 && matCol == 3) return GL_FLOAT_MAT3x4;
|
||||
break;
|
||||
case GL_DOUBLE:
|
||||
if (vecSize == 4 && matCol == 4) return GL_DOUBLE_MAT4;
|
||||
if (vecSize == 3 && matCol == 3) return GL_DOUBLE_MAT3;
|
||||
if (vecSize == 2 && matCol == 2) return GL_DOUBLE_MAT2;
|
||||
if (vecSize == 2 && matCol == 3) return GL_DOUBLE_MAT3x2;
|
||||
if (vecSize == 2 && matCol == 4) return GL_DOUBLE_MAT4x2;
|
||||
if (vecSize == 3 && matCol == 2) return GL_DOUBLE_MAT2x3;
|
||||
if (vecSize == 3 && matCol == 4) return GL_DOUBLE_MAT4x3;
|
||||
if (vecSize == 4 && matCol == 2) return GL_DOUBLE_MAT2x4;
|
||||
if (vecSize == 4 && matCol == 3) return GL_DOUBLE_MAT3x4;
|
||||
break;
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
else if (matCol == 1) {
|
||||
switch (baseType) {
|
||||
case GL_BOOL:
|
||||
switch (vecSize) {
|
||||
case 4: return GL_BOOL_VEC4;
|
||||
case 3: return GL_BOOL_VEC3;
|
||||
case 2: return GL_BOOL_VEC2;
|
||||
}
|
||||
case GL_FLOAT:
|
||||
return GL_FLOAT_VEC2 + (vecSize - 2); // GL_FLOAT_VEC* is contiguous
|
||||
case GL_DOUBLE:
|
||||
switch (vecSize) {
|
||||
case 4: return GL_DOUBLE_VEC4;
|
||||
case 3: return GL_DOUBLE_VEC3;
|
||||
case 2: return GL_DOUBLE_VEC2;
|
||||
}
|
||||
break;
|
||||
case GL_INT:
|
||||
return GL_INT_VEC2 + (vecSize - 2); // GL_INT_VEC* is contiguous
|
||||
case GL_UNSIGNED_INT:
|
||||
return GL_UNSIGNED_INT_VEC2 + (vecSize - 2); // GL_UNSIGNED_INT_VEC* is contiguous
|
||||
case GL_BOOL:
|
||||
switch (vecSize) {
|
||||
case 4:
|
||||
return GL_BOOL_VEC4;
|
||||
case 3:
|
||||
return GL_BOOL_VEC3;
|
||||
case 2:
|
||||
return GL_BOOL_VEC2;
|
||||
}
|
||||
case GL_FLOAT:
|
||||
return GL_FLOAT_VEC2 + (vecSize - 2); // GL_FLOAT_VEC* is contiguous
|
||||
case GL_DOUBLE:
|
||||
switch (vecSize) {
|
||||
case 4:
|
||||
return GL_DOUBLE_VEC4;
|
||||
case 3:
|
||||
return GL_DOUBLE_VEC3;
|
||||
case 2:
|
||||
return GL_DOUBLE_VEC2;
|
||||
}
|
||||
break;
|
||||
case GL_INT:
|
||||
return GL_INT_VEC2 + (vecSize - 2); // GL_INT_VEC* is contiguous
|
||||
case GL_UNSIGNED_INT:
|
||||
return GL_UNSIGNED_INT_VEC2 + (vecSize - 2); // GL_UNSIGNED_INT_VEC* is contiguous
|
||||
}
|
||||
}
|
||||
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
GLenum ConvertSpvcTypeToGLEnum(const ShaderTranspiler::SpvcType& spvcType) {
|
||||
switch (spvcType.basetype) {
|
||||
case SPVC_BASETYPE_BOOLEAN:
|
||||
return ConvertBaseTypeToType(GL_BOOL, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_INT8:
|
||||
return ConvertBaseTypeToType(GL_BYTE, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_BOOLEAN:
|
||||
return ConvertBaseTypeToType(GL_BOOL, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_INT8:
|
||||
return ConvertBaseTypeToType(GL_BYTE, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
case SPVC_BASETYPE_INT16:
|
||||
case SPVC_BASETYPE_INT32:
|
||||
case SPVC_BASETYPE_INT64:
|
||||
return ConvertBaseTypeToType(GL_INT, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_INT16:
|
||||
case SPVC_BASETYPE_INT32:
|
||||
case SPVC_BASETYPE_INT64:
|
||||
return ConvertBaseTypeToType(GL_INT, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
case SPVC_BASETYPE_UINT8:
|
||||
return ConvertBaseTypeToType(GL_UNSIGNED_BYTE, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_UINT8:
|
||||
return ConvertBaseTypeToType(GL_UNSIGNED_BYTE, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
case SPVC_BASETYPE_UINT16:
|
||||
case SPVC_BASETYPE_UINT32:
|
||||
case SPVC_BASETYPE_UINT64:
|
||||
return ConvertBaseTypeToType(GL_UNSIGNED_INT, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_UINT16:
|
||||
case SPVC_BASETYPE_UINT32:
|
||||
case SPVC_BASETYPE_UINT64:
|
||||
return ConvertBaseTypeToType(GL_UNSIGNED_INT, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
case SPVC_BASETYPE_ATOMIC_COUNTER:
|
||||
return GL_UNSIGNED_INT_ATOMIC_COUNTER;
|
||||
case SPVC_BASETYPE_ATOMIC_COUNTER:
|
||||
return GL_UNSIGNED_INT_ATOMIC_COUNTER;
|
||||
|
||||
case SPVC_BASETYPE_FP16:
|
||||
case SPVC_BASETYPE_FP32:
|
||||
return ConvertBaseTypeToType(GL_FLOAT, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_FP16:
|
||||
case SPVC_BASETYPE_FP32:
|
||||
return ConvertBaseTypeToType(GL_FLOAT, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
case SPVC_BASETYPE_FP64:
|
||||
return ConvertBaseTypeToType(GL_DOUBLE, spvcType.vectorSize, spvcType.matCol);
|
||||
case SPVC_BASETYPE_FP64:
|
||||
return ConvertBaseTypeToType(GL_DOUBLE, spvcType.vectorSize, spvcType.matCol);
|
||||
|
||||
// FIXME: likely wrong conversions!
|
||||
case SPVC_BASETYPE_IMAGE:
|
||||
return GL_IMAGE_2D;
|
||||
case SPVC_BASETYPE_SAMPLED_IMAGE:
|
||||
return GL_IMAGE_2D;
|
||||
case SPVC_BASETYPE_SAMPLER:
|
||||
return GL_SAMPLER_2D;
|
||||
// FIXME: likely wrong conversions!
|
||||
case SPVC_BASETYPE_IMAGE:
|
||||
return GL_IMAGE_2D;
|
||||
case SPVC_BASETYPE_SAMPLED_IMAGE:
|
||||
return GL_IMAGE_2D;
|
||||
case SPVC_BASETYPE_SAMPLER:
|
||||
return GL_SAMPLER_2D;
|
||||
|
||||
case SPVC_BASETYPE_STRUCT:
|
||||
case SPVC_BASETYPE_VOID:
|
||||
case SPVC_BASETYPE_UNKNOWN:
|
||||
case SPVC_BASETYPE_ACCELERATION_STRUCTURE:
|
||||
default:
|
||||
return GL_FALSE;
|
||||
case SPVC_BASETYPE_STRUCT:
|
||||
case SPVC_BASETYPE_VOID:
|
||||
case SPVC_BASETYPE_UNKNOWN:
|
||||
case SPVC_BASETYPE_ACCELERATION_STRUCTURE:
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace MG_Util
|
||||
} // namespace MobileGL
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace MobileGL {
|
||||
}
|
||||
|
||||
std::string GetThreadName() {
|
||||
char buffer[64] = { 0 };
|
||||
char buffer[64] = {0};
|
||||
#if defined(_WIN32) && !defined(__MINGW32__)
|
||||
PWSTR desc = nullptr;
|
||||
if (SUCCEEDED(GetThreadDescription(GetCurrentThread(), &desc))) {
|
||||
@@ -37,7 +37,7 @@ namespace MobileGL {
|
||||
using namespace std::chrono;
|
||||
auto now = system_clock::now();
|
||||
std::time_t tt = system_clock::to_time_t(now);
|
||||
struct tm tm {};
|
||||
struct tm tm{};
|
||||
#if defined(_WIN32)
|
||||
localtime_s(&tm, &tt);
|
||||
#else
|
||||
@@ -69,7 +69,8 @@ namespace MobileGL {
|
||||
void Log(const char* levelTag, android_LogPriority androidLogLevel, const char* fmt, ...) {
|
||||
std::lock_guard<std::mutex> lock(s_mutex);
|
||||
|
||||
std::string header = "[" + GetCurrentTime() + "] [" + GetOSName() + " " + GetThreadName() + "/" + levelTag + "]: ";
|
||||
std::string header =
|
||||
"[" + GetCurrentTime() + "] [" + GetOSName() + " " + GetThreadName() + "/" + levelTag + "]: ";
|
||||
|
||||
char buffer[1024];
|
||||
va_list args;
|
||||
@@ -98,5 +99,5 @@ namespace MobileGL {
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace MG_Util::Debug
|
||||
} // namespace MobileGL
|
||||
+763
-763
File diff suppressed because it is too large
Load Diff
@@ -5,9 +5,9 @@
|
||||
#include "BufferMetrics.h"
|
||||
|
||||
namespace MobileGL {
|
||||
namespace MG_Util {
|
||||
SizeT GetGLTypeSize(GLenum type) {
|
||||
switch (type) {
|
||||
namespace MG_Util {
|
||||
SizeT GetGLTypeSize(GLenum type) {
|
||||
switch (type) {
|
||||
// Scalars
|
||||
case GL_BYTE:
|
||||
case GL_UNSIGNED_BYTE:
|
||||
@@ -30,10 +30,10 @@ namespace MG_Util {
|
||||
case GL_UNSIGNED_INT_5_9_9_9_REV:
|
||||
return 4;
|
||||
case GL_DOUBLE:
|
||||
#ifdef GL_ARB_gpu_shader_int64
|
||||
#ifdef GL_ARB_gpu_shader_int64
|
||||
case GL_UNSIGNED_INT64_ARB:
|
||||
case GL_INT64_ARB:
|
||||
#endif
|
||||
#endif
|
||||
return 8;
|
||||
|
||||
// ---- Vector Types ----
|
||||
@@ -72,7 +72,7 @@ namespace MG_Util {
|
||||
return 3 * 3 * sizeof(GLfloat);
|
||||
case GL_FLOAT_MAT4:
|
||||
return 4 * 4 * sizeof(GLfloat);
|
||||
|
||||
|
||||
// Float non-square
|
||||
case GL_FLOAT_MAT2x3:
|
||||
return 2 * 3 * sizeof(GLfloat);
|
||||
@@ -111,7 +111,7 @@ namespace MG_Util {
|
||||
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace MG_Util
|
||||
} // namespace MobileGL
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#include <Includes.h>
|
||||
|
||||
namespace MobileGL {
|
||||
namespace MG_Util {
|
||||
SizeT GetGLTypeSize(GLenum type);
|
||||
}
|
||||
}
|
||||
namespace MG_Util {
|
||||
SizeT GetGLTypeSize(GLenum type);
|
||||
}
|
||||
} // namespace MobileGL
|
||||
|
||||
#endif //BUFFERMETRICS_H
|
||||
#endif // BUFFERMETRICS_H
|
||||
|
||||
@@ -139,7 +139,9 @@ namespace MobileGL {
|
||||
tshader->setEnvInput(glslang::EShSourceGlsl, lang, glslang::EShClientVulkan, 450);
|
||||
tshader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_3);
|
||||
tshader->setEnvTarget(glslang::EShTargetSpv,
|
||||
((attrib.flags & ShaderCompileBits::EmitDiscardAsDemote) ? glslang::EShTargetSpv_1_6 : glslang::EShTargetSpv_1_5));
|
||||
((attrib.flags & ShaderCompileBits::EmitDiscardAsDemote)
|
||||
? glslang::EShTargetSpv_1_6
|
||||
: glslang::EShTargetSpv_1_5));
|
||||
}
|
||||
tshader->setAutoMapLocations(true);
|
||||
tshader->setAutoMapBindings(true);
|
||||
@@ -192,7 +194,8 @@ namespace MobileGL {
|
||||
return program;
|
||||
}
|
||||
|
||||
Result<Vector<Vector<unsigned>>> ShaderCompiler::GetSpirvBinaryFromProgram(const ProgramBinaryAttrib &attrib) {
|
||||
Result<Vector<Vector<unsigned>>> ShaderCompiler::GetSpirvBinaryFromProgram(
|
||||
const ProgramBinaryAttrib& attrib) {
|
||||
glslang::SpvOptions spvOptions;
|
||||
spvOptions.disableOptimizer = false;
|
||||
|
||||
|
||||
@@ -93,7 +93,8 @@ namespace MobileGL {
|
||||
SPVC_CHK_RESULT(spvc_compiler_type_struct_member_offset(compiler, type, j, &memberOffset);)
|
||||
metadata.plainUniformOffsetsInUBO[memberName] = memberOffset;
|
||||
SizeT memberSize = 0;
|
||||
SPVC_CHK_RESULT(spvc_compiler_get_declared_struct_member_size(compiler, type, j, &memberSize);)
|
||||
SPVC_CHK_RESULT(
|
||||
spvc_compiler_get_declared_struct_member_size(compiler, type, j, &memberSize);)
|
||||
metadata.plainUniformMemberSizesInBytes[memberName] = memberSize;
|
||||
|
||||
auto memberTypeId = spvc_type_get_member_type(type, j);
|
||||
|
||||
@@ -26,26 +26,25 @@ namespace MobileGL {
|
||||
|
||||
static Uint32 getByteSizeOfBaseType(const spvc_basetype type) {
|
||||
switch (type) {
|
||||
case SPVC_BASETYPE_INT8:
|
||||
case SPVC_BASETYPE_UINT8:
|
||||
return 1;
|
||||
case SPVC_BASETYPE_INT16:
|
||||
case SPVC_BASETYPE_UINT16:
|
||||
case SPVC_BASETYPE_FP16:
|
||||
return 2;
|
||||
case SPVC_BASETYPE_INT32:
|
||||
case SPVC_BASETYPE_UINT32:
|
||||
case SPVC_BASETYPE_FP32:
|
||||
return 4;
|
||||
case SPVC_BASETYPE_INT64:
|
||||
case SPVC_BASETYPE_UINT64:
|
||||
case SPVC_BASETYPE_FP64:
|
||||
return 8;
|
||||
default:
|
||||
return 0;
|
||||
case SPVC_BASETYPE_INT8:
|
||||
case SPVC_BASETYPE_UINT8:
|
||||
return 1;
|
||||
case SPVC_BASETYPE_INT16:
|
||||
case SPVC_BASETYPE_UINT16:
|
||||
case SPVC_BASETYPE_FP16:
|
||||
return 2;
|
||||
case SPVC_BASETYPE_INT32:
|
||||
case SPVC_BASETYPE_UINT32:
|
||||
case SPVC_BASETYPE_FP32:
|
||||
return 4;
|
||||
case SPVC_BASETYPE_INT64:
|
||||
case SPVC_BASETYPE_UINT64:
|
||||
case SPVC_BASETYPE_FP64:
|
||||
return 8;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
struct SpvcMetadata {
|
||||
|
||||
@@ -5,36 +5,34 @@
|
||||
#include "UniformTraverser.h"
|
||||
|
||||
namespace MobileGL {
|
||||
namespace MG_Util {
|
||||
namespace ShaderTranspiler {
|
||||
void UniformTraverser::visitSymbol(glslang::TIntermSymbol *symbol) {
|
||||
auto parent = getParentNode();
|
||||
if (!parent)
|
||||
return;
|
||||
auto parentAgg = parent->getAsAggregate();
|
||||
if (!parentAgg || parentAgg->getOp() != glslang::EOpLinkerObjects)
|
||||
return;
|
||||
namespace MG_Util {
|
||||
namespace ShaderTranspiler {
|
||||
void UniformTraverser::visitSymbol(glslang::TIntermSymbol* symbol) {
|
||||
auto parent = getParentNode();
|
||||
if (!parent) return;
|
||||
auto parentAgg = parent->getAsAggregate();
|
||||
if (!parentAgg || parentAgg->getOp() != glslang::EOpLinkerObjects) return;
|
||||
|
||||
const auto &type = symbol->getType();
|
||||
if (symbol->getQualifier().isUniform() && type.getBasicType() != glslang::EbtSampler) {
|
||||
m_collectedSymbols.emplace_back(symbol);
|
||||
// auto& name = symbol->getName();
|
||||
// auto qualifier = symbol->getQualifier();
|
||||
//
|
||||
// printf("layout(location = %d) uniform %s\n", qualifier.layoutLocation, name.c_str());
|
||||
// auto &uniform = uniforms.emplace_back();
|
||||
// uniform.name = name;
|
||||
// uniform.storageQualifier = qualifier.storage;
|
||||
// uniform.layoutLocation = qualifier.layoutLocation;
|
||||
// uniform.layoutBinding = qualifier.layoutBinding;
|
||||
// uniform.layoutPacking = qualifier.layoutPacking;
|
||||
}
|
||||
// else if (type.getBasicType() == glslang::EbtSampler) {
|
||||
// auto &uniform = samplers.emplace_back();
|
||||
// uniform.name = symbol->getName();
|
||||
// uniform.sampler = type.getSampler();
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const auto& type = symbol->getType();
|
||||
if (symbol->getQualifier().isUniform() && type.getBasicType() != glslang::EbtSampler) {
|
||||
m_collectedSymbols.emplace_back(symbol);
|
||||
// auto& name = symbol->getName();
|
||||
// auto qualifier = symbol->getQualifier();
|
||||
//
|
||||
// printf("layout(location = %d) uniform %s\n", qualifier.layoutLocation, name.c_str());
|
||||
// auto &uniform = uniforms.emplace_back();
|
||||
// uniform.name = name;
|
||||
// uniform.storageQualifier = qualifier.storage;
|
||||
// uniform.layoutLocation = qualifier.layoutLocation;
|
||||
// uniform.layoutBinding = qualifier.layoutBinding;
|
||||
// uniform.layoutPacking = qualifier.layoutPacking;
|
||||
}
|
||||
// else if (type.getBasicType() == glslang::EbtSampler) {
|
||||
// auto &uniform = samplers.emplace_back();
|
||||
// uniform.name = symbol->getName();
|
||||
// uniform.sampler = type.getSampler();
|
||||
// }
|
||||
}
|
||||
} // namespace ShaderTranspiler
|
||||
} // namespace MG_Util
|
||||
} // namespace MobileGL
|
||||
|
||||
@@ -8,17 +8,18 @@
|
||||
#include "Includes.h"
|
||||
|
||||
namespace MobileGL {
|
||||
namespace MG_Util {
|
||||
namespace ShaderTranspiler {
|
||||
class UniformTraverser : public glslang::TIntermTraverser {
|
||||
public:
|
||||
void visitSymbol(glslang::TIntermSymbol *symbol) override;
|
||||
Vector<glslang::TIntermSymbol*>& GetCollectedSymbols() { return m_collectedSymbols; }
|
||||
private:
|
||||
Vector<glslang::TIntermSymbol*> m_collectedSymbols;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace MG_Util {
|
||||
namespace ShaderTranspiler {
|
||||
class UniformTraverser : public glslang::TIntermTraverser {
|
||||
public:
|
||||
void visitSymbol(glslang::TIntermSymbol* symbol) override;
|
||||
Vector<glslang::TIntermSymbol*>& GetCollectedSymbols() { return m_collectedSymbols; }
|
||||
|
||||
#endif //MOBILEGL_UNIFORMTRAVERSER_H
|
||||
private:
|
||||
Vector<glslang::TIntermSymbol*> m_collectedSymbols;
|
||||
};
|
||||
} // namespace ShaderTranspiler
|
||||
} // namespace MG_Util
|
||||
} // namespace MobileGL
|
||||
|
||||
#endif // MOBILEGL_UNIFORMTRAVERSER_H
|
||||
|
||||
Reference in New Issue
Block a user