Free memory associated with SPIR-V generation and the pragmaTable.
void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments)
{
const glslang::TIntermSequence& glslangArguments = node.getSequence();
+
+ glslang::TSampler sampler = {};
+ bool cubeCompare = false;
+ if (node.isTexture()) {
+ sampler = glslangArguments[0]->getAsTyped()->getType().getSampler();
+ cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
+ }
+
for (int i = 0; i < (int)glslangArguments.size(); ++i) {
builder.clearAccessChain();
glslangArguments[i]->traverse(this);
if (i == 0)
lvalue = true;
break;
+ case glslang::EOpSparseTexture:
+ if ((cubeCompare && i == 3) || (! cubeCompare && i == 2))
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureClamp:
+ if ((cubeCompare && i == 4) || (! cubeCompare && i == 3))
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureLod:
+ case glslang::EOpSparseTextureOffset:
+ if (i == 3)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureFetch:
+ if ((sampler.dim != glslang::EsdRect && i == 3) || (sampler.dim == glslang::EsdRect && i == 2))
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureFetchOffset:
+ if ((sampler.dim != glslang::EsdRect && i == 4) || (sampler.dim == glslang::EsdRect && i == 3))
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureLodOffset:
+ case glslang::EOpSparseTextureGrad:
+ case glslang::EOpSparseTextureOffsetClamp:
+ if (i == 4)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureGradOffset:
+ case glslang::EOpSparseTextureGradClamp:
+ if (i == 5)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureGradOffsetClamp:
+ if (i == 6)
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureGather:
+ if ((sampler.shadow && i == 3) || (! sampler.shadow && i == 2))
+ lvalue = true;
+ break;
+ case glslang::EOpSparseTextureGatherOffset:
+ case glslang::EOpSparseTextureGatherOffsets:
+ if ((sampler.shadow && i == 4) || (! sampler.shadow && i == 3))
+ lvalue = true;
+ break;
default:
break;
}
return builder.createTextureQueryCall(spv::OpImageQueryLod, params);
case glslang::EOpTextureQueryLevels:
return builder.createTextureQueryCall(spv::OpImageQueryLevels, params);
+ case glslang::EOpSparseTexelsResident:
+ return builder.createUnaryOp(spv::OpImageSparseTexelsResident, builder.makeBoolType(), arguments[0]);
default:
assert(0);
break;
operands.push_back(*opIt);
builder.createNoResultOp(spv::OpImageWrite, operands);
return spv::NoResult;
- } else {
+ } else if (node->isSparseImage()) {
+ spv::MissingFunctionality("sparse image functions");
+ return spv::NoResult;
+ }
+ else {
// Process image atomic operations
// GLSL "IMAGE_PARAMS" will involve in constructing an image texel pointer and this pointer,
}
// Check for texture functions other than queries
-
+ bool sparse = node->isSparseTexture();
bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
// check for bias argument
++nonBiasArgCount;
if (cracked.grad)
nonBiasArgCount += 2;
+ if (cracked.lodClamp)
+ ++nonBiasArgCount;
+ if (sparse)
+ ++nonBiasArgCount;
if ((int)arguments.size() > nonBiasArgCount)
bias = true;
int extraArgs = 0;
// sort out where Dref is coming from
- if (sampler.shadow && sampler.dim == glslang::EsdCube && sampler.arrayed)
+ if (cubeCompare) {
params.Dref = arguments[2];
- else if (sampler.shadow && cracked.gather) {
+ ++extraArgs;
+ } else if (sampler.shadow && cracked.gather) {
params.Dref = arguments[2];
++extraArgs;
} else if (sampler.shadow) {
params.offsets = arguments[2 + extraArgs];
++extraArgs;
}
+ if (cracked.lodClamp) {
+ params.lodClamp = arguments[2 + extraArgs];
+ ++extraArgs;
+ }
+ if (sparse) {
+ params.texelOut = arguments[2 + extraArgs];
+ ++extraArgs;
+ }
if (bias) {
params.bias = arguments[2 + extraArgs];
++extraArgs;
}
}
- return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), cracked.fetch, cracked.proj, cracked.gather, params);
+ return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), sparse, cracked.fetch, cracked.proj, cracked.gather, params);
}
spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node)
// Accept all parameters needed to create a texture instruction.
// Create the correct instruction based on the inputs, and make the call.
-Id Builder::createTextureCall(Decoration precision, Id resultType, bool fetch, bool proj, bool gather, const TextureParameters& parameters)
+Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, const TextureParameters& parameters)
{
static const int maxTextureArgs = 10;
Id texArgs[maxTextureArgs] = {};
mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask);
texArgs[numArgs++] = parameters.sample;
}
+ if (parameters.lodClamp) {
+ mask = (ImageOperandsMask)(mask | ImageOperandsMinLodMask);
+ texArgs[numArgs++] = parameters.lodClamp;
+ }
if (mask == ImageOperandsMaskNone)
--numArgs; // undo speculative reservation for the mask argument
else
Op opCode;
opCode = OpImageSampleImplicitLod;
if (fetch) {
- opCode = OpImageFetch;
+ if (sparse)
+ opCode = OpImageSparseFetch;
+ else
+ opCode = OpImageFetch;
} else if (gather) {
if (parameters.Dref)
- opCode = OpImageDrefGather;
+ if (sparse)
+ opCode = OpImageSparseDrefGather;
+ else
+ opCode = OpImageDrefGather;
else
- opCode = OpImageGather;
+ if (sparse)
+ opCode = OpImageSparseGather;
+ else
+ opCode = OpImageGather;
} else if (xplicit) {
if (parameters.Dref) {
if (proj)
- opCode = OpImageSampleProjDrefExplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleProjDrefExplicitLod;
+ else
+ opCode = OpImageSampleProjDrefExplicitLod;
else
- opCode = OpImageSampleDrefExplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleDrefExplicitLod;
+ else
+ opCode = OpImageSampleDrefExplicitLod;
} else {
if (proj)
- opCode = OpImageSampleProjExplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleProjExplicitLod;
+ else
+ opCode = OpImageSampleProjExplicitLod;
else
- opCode = OpImageSampleExplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleExplicitLod;
+ else
+ opCode = OpImageSampleExplicitLod;
}
} else {
if (parameters.Dref) {
if (proj)
- opCode = OpImageSampleProjDrefImplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleProjDrefImplicitLod;
+ else
+ opCode = OpImageSampleProjDrefImplicitLod;
else
- opCode = OpImageSampleDrefImplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleDrefImplicitLod;
+ else
+ opCode = OpImageSampleDrefImplicitLod;
} else {
if (proj)
- opCode = OpImageSampleProjImplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleProjImplicitLod;
+ else
+ opCode = OpImageSampleProjImplicitLod;
else
- opCode = OpImageSampleImplicitLod;
+ if (sparse)
+ opCode = OpImageSparseSampleImplicitLod;
+ else
+ opCode = OpImageSampleImplicitLod;
}
}
}
}
+ Id typeId0 = 0;
+ Id typeId1 = 0;
+
+ if (sparse) {
+ typeId0 = resultType;
+ typeId1 = getDerefTypeId(parameters.texelOut);
+ resultType = makeStructResultType(typeId0, typeId1);
+ }
+
// Build the SPIR-V instruction
Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode);
for (int op = 0; op < optArgNum; ++op)
Id resultId = textureInst->getResultId();
- // When a smear is needed, do it, as per what was computed
- // above when resultType was changed to a scalar type.
- if (resultType != smearedType)
- resultId = smearScalar(precision, resultId, smearedType);
+ if (sparse) {
+ // Decode the return type that was a special structure
+ createStore(createCompositeExtract(resultId, typeId1, 1), parameters.texelOut);
+ resultId = createCompositeExtract(resultId, typeId0, 0);
+ } else {
+ // When a smear is needed, do it, as per what was computed
+ // above when resultType was changed to a scalar type.
+ if (resultType != smearedType)
+ resultId = smearScalar(precision, resultId, smearedType);
+ }
return resultId;
}
Id gradY;
Id sample;
Id comp;
+ Id texelOut;
+ Id lodClamp;
};
// Select the correct texture operation based on all inputs, and emit the correct instruction
- Id createTextureCall(Decoration precision, Id resultType, bool fetch, bool proj, bool gather, const TextureParameters&);
+ Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, const TextureParameters&);
// Emit the OpTextureQuery* instruction that was passed in.
// Figure out the right return value and type, and return it.
}
}
+// Simple bundling of what makes a compilation unit for ease in passing around,
+// and separation of handling file IO versus API (programmatic) compilation.
+struct ShaderCompUnit {
+ EShLanguage stage;
+ std::string fileName;
+ char** text; // memory owned/managed externally
+};
+
//
-// For linking mode: Will independently parse each item in the worklist, but then put them
-// in the same program and link them together.
+// For linking mode: Will independently parse each compilation unit, but then put them
+// in the same program and link them together, making at most one linked module per
+// pipeline stage.
//
// Uses the new C++ interface instead of the old handle-based interface.
//
-void CompileAndLinkShaders()
+
+void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
{
// keep track of what to free
std::list<glslang::TShader*> shaders;
-
+
EShMessages messages = EShMsgDefault;
SetMessageOptions(messages);
//
glslang::TProgram& program = *new glslang::TProgram;
- glslang::TWorkItem* workItem;
- while (Worklist.remove(workItem)) {
- EShLanguage stage = FindLanguage(workItem->name);
- glslang::TShader* shader = new glslang::TShader(stage);
+ for (auto compUnit : compUnits) {
+ glslang::TShader* shader = new glslang::TShader(compUnit.stage);
+ shader->setStrings(compUnit.text, 1);
shaders.push_back(shader);
-
- char** shaderStrings = ReadFileData(workItem->name.c_str());
- if (! shaderStrings) {
- usage();
- delete &program;
- return;
- }
const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100;
- shader->setStrings(shaderStrings, 1);
if (Options & EOptionOutputPreprocessed) {
std::string str;
if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false,
}
StderrIfNonEmpty(shader->getInfoLog());
StderrIfNonEmpty(shader->getInfoDebugLog());
- FreeFileData(shaderStrings);
continue;
}
if (! shader->parse(&Resources, defaultVersion, false, messages))
program.addShader(shader);
- if (! (Options & EOptionSuppressInfolog)) {
- PutsIfNonEmpty(workItem->name.c_str());
+ if (! (Options & EOptionSuppressInfolog) &&
+ ! (Options & EOptionMemoryLeakMode)) {
+ PutsIfNonEmpty(compUnit.fileName.c_str());
PutsIfNonEmpty(shader->getInfoLog());
PutsIfNonEmpty(shader->getInfoDebugLog());
}
-
- FreeFileData(shaderStrings);
}
//
if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
LinkFailed = true;
- if (! (Options & EOptionSuppressInfolog)) {
+ if (! (Options & EOptionSuppressInfolog) &&
+ ! (Options & EOptionMemoryLeakMode)) {
PutsIfNonEmpty(program.getInfoLog());
PutsIfNonEmpty(program.getInfoDebugLog());
}
if (program.getIntermediate((EShLanguage)stage)) {
std::vector<unsigned int> spirv;
glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv);
- glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
- if (Options & EOptionHumanReadableSpv) {
- spv::Parameterize();
- spv::Disassemble(std::cout, spirv);
+
+ // Dump the spv to a file or stdout, etc., but only if not doing
+ // memory/perf testing, as it's not internal to programmatic use.
+ if (! (Options & EOptionMemoryLeakMode)) {
+ glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
+ if (Options & EOptionHumanReadableSpv) {
+ spv::Parameterize();
+ spv::Disassemble(std::cout, spirv);
+ }
}
}
}
}
}
+//
+// Do file IO part of compile and link, handing off the pure
+// API/programmatic mode to CompileAndLinkShaderUnits(), which can
+// be put in a loop for testing memory footprint and performance.
+//
+// This is just for linking mode: meaning all the shaders will be put into the
+// the same program linked together.
+//
+// This means there are a limited number of work items (not multi-threading mode)
+// and that the point is testing at the linking level. Hence, to enable
+// performance and memory testing, the actual compile/link can be put in
+// a loop, independent of processing the work items and file IO.
+//
+void CompileAndLinkShaderFiles()
+{
+ std::vector<ShaderCompUnit> compUnits;
+
+ // Transfer all the work items from to a simple list of
+ // of compilation units. (We don't care about the thread
+ // work-item distribution properties in this path, which
+ // is okay due to the limited number of shaders, know since
+ // they are all getting linked together.)
+ glslang::TWorkItem* workItem;
+ while (Worklist.remove(workItem)) {
+ ShaderCompUnit compUnit = {
+ FindLanguage(workItem->name),
+ workItem->name,
+ ReadFileData(workItem->name.c_str())
+ };
+
+ if (! compUnit.text) {
+ usage();
+ return;
+ }
+
+ compUnits.push_back(compUnit);
+ }
+
+ // Actual call to programmatic processing of compile and link,
+ // in a loop for testing memory and performance. This part contains
+ // all the perf/memory that a programmatic consumer will care about.
+ for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) {
+ for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j)
+ CompileAndLinkShaderUnits(compUnits);
+
+ if (Options & EOptionMemoryLeakMode)
+ glslang::OS_DumpMemoryCounters();
+ }
+
+ for (auto c : compUnits)
+ FreeFileData(c.text);
+}
+
int C_DECL main(int argc, char* argv[])
{
ProcessArguments(argc, argv);
if (Options & EOptionLinkProgram ||
Options & EOptionOutputPreprocessed) {
glslang::InitializeProcess();
- CompileAndLinkShaders();
+ CompileAndLinkShaderFiles();
glslang::FinalizeProcess();
} else {
ShInitialize();
void foo24()
{
dvec3 df, di;
- df = modf(outp.xyz, di);
+ df = modf(dvec3(outp.xyz), di);
}
in float in1;
lod = textureQueryLod(samp1D, pf); // ERROR, only in fragment\r
lod = textureQueryLod(samp2Ds, pf2); // ERROR, only in fragment\r
}\r
+\r
+void doubles()\r
+{\r
+ double doublev;\r
+ dvec2 dvec2v;\r
+ dvec3 dvec3v;\r
+ dvec4 dvec4v;\r
+\r
+ bool boolv;\r
+ bvec2 bvec2v;\r
+ bvec3 bvec3v;\r
+ bvec4 bvec4v;\r
+\r
+ doublev = sqrt(2.9);\r
+ dvec2v = sqrt(dvec2(2.7));\r
+ dvec3v = sqrt(dvec3(2.0));\r
+ dvec4v = sqrt(dvec4(2.1));\r
+\r
+ doublev += inversesqrt(doublev);\r
+ dvec2v += inversesqrt(dvec2v);\r
+ dvec3v += inversesqrt(dvec3v);\r
+ dvec4v += inversesqrt(dvec4v);\r
+\r
+ doublev += abs(doublev);\r
+ dvec2v += abs(dvec2v);\r
+ dvec3v += abs(dvec3v);\r
+ dvec4v += abs(dvec4v);\r
+\r
+ doublev += sign(doublev);\r
+ dvec2v += sign(dvec2v);\r
+ dvec3v += sign(dvec3v);\r
+ dvec4v += sign(dvec4v);\r
+\r
+ doublev += floor(doublev);\r
+ dvec2v += floor(dvec2v);\r
+ dvec3v += floor(dvec3v);\r
+ dvec4v += floor(dvec4v);\r
+\r
+ doublev += trunc(doublev);\r
+ dvec2v += trunc(dvec2v);\r
+ dvec3v += trunc(dvec3v);\r
+ dvec4v += trunc(dvec4v);\r
+\r
+ doublev += round(doublev);\r
+ dvec2v += round(dvec2v);\r
+ dvec3v += round(dvec3v);\r
+ dvec4v += round(dvec4v);\r
+\r
+ doublev += roundEven(doublev);\r
+ dvec2v += roundEven(dvec2v);\r
+ dvec3v += roundEven(dvec3v);\r
+ dvec4v += roundEven(dvec4v);\r
+\r
+ doublev += ceil(doublev);\r
+ dvec2v += ceil(dvec2v);\r
+ dvec3v += ceil(dvec3v);\r
+ dvec4v += ceil(dvec4v);\r
+\r
+ doublev += fract(doublev);\r
+ dvec2v += fract(dvec2v);\r
+ dvec3v += fract(dvec3v);\r
+ dvec4v += fract(dvec4v);\r
+\r
+ doublev += mod(doublev, doublev);\r
+ dvec2v += mod(dvec2v, doublev);\r
+ dvec3v += mod(dvec3v, doublev);\r
+ dvec4v += mod(dvec4v, doublev);\r
+ dvec2v += mod(dvec2v, dvec2v);\r
+ dvec3v += mod(dvec3v, dvec3v);\r
+ dvec4v += mod(dvec4v, dvec4v);\r
+\r
+ doublev += modf(doublev, doublev);\r
+ dvec2v += modf(dvec2v, dvec2v);\r
+ dvec3v += modf(dvec3v, dvec3v);\r
+ dvec4v += modf(dvec4v, dvec4v);\r
+\r
+ doublev += min(doublev, doublev);\r
+ dvec2v += min(dvec2v, doublev);\r
+ dvec3v += min(dvec3v, doublev);\r
+ dvec4v += min(dvec4v, doublev);\r
+ dvec2v += min(dvec2v, dvec2v);\r
+ dvec3v += min(dvec3v, dvec3v);\r
+ dvec4v += min(dvec4v, dvec4v);\r
+\r
+ doublev += max(doublev, doublev);\r
+ dvec2v += max(dvec2v, doublev);\r
+ dvec3v += max(dvec3v, doublev);\r
+ dvec4v += max(dvec4v, doublev);\r
+ dvec2v += max(dvec2v, dvec2v);\r
+ dvec3v += max(dvec3v, dvec3v);\r
+ dvec4v += max(dvec4v, dvec4v);\r
+\r
+ doublev += clamp(doublev, doublev, doublev);\r
+ dvec2v += clamp(dvec2v, doublev, doublev);\r
+ dvec3v += clamp(dvec3v, doublev, doublev);\r
+ dvec4v += clamp(dvec4v, doublev, doublev);\r
+ dvec2v += clamp(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += clamp(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += clamp(dvec4v, dvec4v, dvec4v);\r
+\r
+ doublev += mix(doublev, doublev, doublev);\r
+ dvec2v += mix(dvec2v, dvec2v, doublev);\r
+ dvec3v += mix(dvec3v, dvec3v, doublev);\r
+ dvec4v += mix(dvec4v, dvec4v, doublev);\r
+ dvec2v += mix(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += mix(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += mix(dvec4v, dvec4v, dvec4v);\r
+ doublev += mix(doublev, doublev, boolv);\r
+ dvec2v += mix(dvec2v, dvec2v, bvec2v);\r
+ dvec3v += mix(dvec3v, dvec3v, bvec3v);\r
+ dvec4v += mix(dvec4v, dvec4v, bvec4v);\r
+\r
+ doublev += step(doublev, doublev);\r
+ dvec2v += step(dvec2v, dvec2v);\r
+ dvec3v += step(dvec3v, dvec3v);\r
+ dvec4v += step(dvec4v, dvec4v);\r
+ dvec2v += step(doublev, dvec2v);\r
+ dvec3v += step(doublev, dvec3v);\r
+ dvec4v += step(doublev, dvec4v);\r
+\r
+ doublev += smoothstep(doublev, doublev, doublev);\r
+ dvec2v += smoothstep(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += smoothstep(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += smoothstep(dvec4v, dvec4v, dvec4v);\r
+ dvec2v += smoothstep(doublev, doublev, dvec2v);\r
+ dvec3v += smoothstep(doublev, doublev, dvec3v);\r
+ dvec4v += smoothstep(doublev, doublev, dvec4v);\r
+\r
+ boolv = isnan(doublev);\r
+ bvec2v = isnan(dvec2v);\r
+ bvec3v = isnan(dvec3v);\r
+ bvec4v = isnan(dvec4v);\r
+\r
+ boolv = boolv ? isinf(doublev) : false;\r
+ bvec2v = boolv ? isinf(dvec2v) : bvec2(false);\r
+ bvec3v = boolv ? isinf(dvec3v) : bvec3(false);\r
+ bvec4v = boolv ? isinf(dvec4v) : bvec4(false);\r
+\r
+ doublev += length(doublev);\r
+ doublev += length(dvec2v);\r
+ doublev += length(dvec3v);\r
+ doublev += length(dvec4v);\r
+\r
+ doublev += distance(doublev, doublev);\r
+ doublev += distance(dvec2v, dvec2v);\r
+ doublev += distance(dvec3v, dvec3v);\r
+ doublev += distance(dvec4v, dvec4v);\r
+\r
+ doublev += dot(doublev, doublev);\r
+ doublev += dot(dvec2v, dvec2v);\r
+ doublev += dot(dvec3v, dvec3v);\r
+ doublev += dot(dvec4v, dvec4v);\r
+\r
+ dvec3v += cross(dvec3v, dvec3v);\r
+\r
+ doublev += normalize(doublev);\r
+ dvec2v += normalize(dvec2v);\r
+ dvec3v += normalize(dvec3v);\r
+ dvec4v += normalize(dvec4v);\r
+\r
+ doublev += faceforward(doublev, doublev, doublev);\r
+ dvec2v += faceforward(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += faceforward(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += faceforward(dvec4v, dvec4v, dvec4v);\r
+\r
+ doublev += reflect(doublev, doublev);\r
+ dvec2v += reflect(dvec2v, dvec2v);\r
+ dvec3v += reflect(dvec3v, dvec3v);\r
+ dvec4v += reflect(dvec4v, dvec4v);\r
+\r
+ doublev += refract(doublev, doublev, doublev);\r
+ dvec2v += refract(dvec2v, dvec2v, doublev);\r
+ dvec3v += refract(dvec3v, dvec3v, doublev);\r
+ dvec4v += refract(dvec4v, dvec4v, doublev);\r
+\r
+ dmat2 dmat2v = outerProduct(dvec2v, dvec2v);\r
+ dmat3 dmat3v = outerProduct(dvec3v, dvec3v);\r
+ dmat4 dmat4v = outerProduct(dvec4v, dvec4v);\r
+ dmat2x3 dmat2x3v = outerProduct(dvec3v, dvec2v);\r
+ dmat3x2 dmat3x2v = outerProduct(dvec2v, dvec3v);\r
+ dmat2x4 dmat2x4v = outerProduct(dvec4v, dvec2v);\r
+ dmat4x2 dmat4x2v = outerProduct(dvec2v, dvec4v);\r
+ dmat3x4 dmat3x4v = outerProduct(dvec4v, dvec3v);\r
+ dmat4x3 dmat4x3v = outerProduct(dvec3v, dvec4v);\r
+\r
+ dmat2v *= matrixCompMult(dmat2v, dmat2v);
+ dmat3v *= matrixCompMult(dmat3v, dmat3v);
+ dmat4v *= matrixCompMult(dmat4v, dmat4v);
+ dmat2x3v = matrixCompMult(dmat2x3v, dmat2x3v);\r
+ dmat2x4v = matrixCompMult(dmat2x4v, dmat2x4v);\r
+ dmat3x2v = matrixCompMult(dmat3x2v, dmat3x2v);\r
+ dmat3x4v = matrixCompMult(dmat3x4v, dmat3x4v);\r
+ dmat4x2v = matrixCompMult(dmat4x2v, dmat4x2v);\r
+ dmat4x3v = matrixCompMult(dmat4x3v, dmat4x3v);\r
+\r
+ dmat2v *= transpose(dmat2v);\r
+ dmat3v *= transpose(dmat3v);\r
+ dmat4v *= transpose(dmat4v);\r
+ dmat2x3v = transpose(dmat3x2v);\r
+ dmat3x2v = transpose(dmat2x3v);\r
+ dmat2x4v = transpose(dmat4x2v);\r
+ dmat4x2v = transpose(dmat2x4v);\r
+ dmat3x4v = transpose(dmat4x3v);\r
+ dmat4x3v = transpose(dmat3x4v);\r
+\r
+ doublev += determinant(dmat2v);\r
+ doublev += determinant(dmat3v);\r
+ doublev += determinant(dmat4v);\r
+\r
+ dmat2v *= inverse(dmat2v);\r
+ dmat3v *= inverse(dmat3v);\r
+ dmat4v *= inverse(dmat4v);\r
+}\r
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
-0:63 Convert float to double (temp 3-component vector of double)
-0:63 Comma (global 3-component vector of float)
-0:63 move second child to first child (temp 3-component vector of float)
-0:63 'tempReturn' (global 3-component vector of float)
-0:63 modf (global 3-component vector of float)
-0:63 vector swizzle (temp 3-component vector of float)
-0:63 'outp' (out 4-component vector of float)
-0:63 Sequence
-0:63 Constant:
-0:63 0 (const int)
-0:63 Constant:
-0:63 1 (const int)
-0:63 Constant:
-0:63 2 (const int)
-0:63 'tempArg' (temp 3-component vector of float)
-0:63 move second child to first child (temp 3-component vector of double)
-0:63 'di' (temp 3-component vector of double)
-0:63 Convert float to double (temp 3-component vector of double)
-0:63 'tempArg' (temp 3-component vector of float)
-0:63 'tempReturn' (global 3-component vector of float)
+0:63 modf (global 3-component vector of double)
+0:63 Convert float to double (temp 3-component vector of double)
+0:63 vector swizzle (temp 3-component vector of float)
+0:63 'outp' (out 4-component vector of float)
+0:63 Sequence
+0:63 Constant:
+0:63 0 (const int)
+0:63 Constant:
+0:63 1 (const int)
+0:63 Constant:
+0:63 2 (const int)
+0:63 'di' (temp 3-component vector of double)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:73 Sequence
0:? Sequence
0:63 move second child to first child (temp 3-component vector of double)
0:63 'df' (temp 3-component vector of double)
-0:63 Convert float to double (temp 3-component vector of double)
-0:63 Comma (global 3-component vector of float)
-0:63 move second child to first child (temp 3-component vector of float)
-0:63 'tempReturn' (global 3-component vector of float)
-0:63 modf (global 3-component vector of float)
-0:63 vector swizzle (temp 3-component vector of float)
-0:63 'outp' (out 4-component vector of float)
-0:63 Sequence
-0:63 Constant:
-0:63 0 (const int)
-0:63 Constant:
-0:63 1 (const int)
-0:63 Constant:
-0:63 2 (const int)
-0:63 'tempArg' (temp 3-component vector of float)
-0:63 move second child to first child (temp 3-component vector of double)
-0:63 'di' (temp 3-component vector of double)
-0:63 Convert float to double (temp 3-component vector of double)
-0:63 'tempArg' (temp 3-component vector of float)
-0:63 'tempReturn' (global 3-component vector of float)
+0:63 modf (global 3-component vector of double)
+0:63 Convert float to double (temp 3-component vector of double)
+0:63 vector swizzle (temp 3-component vector of float)
+0:63 'outp' (out 4-component vector of float)
+0:63 Sequence
+0:63 Constant:
+0:63 0 (const int)
+0:63 Constant:
+0:63 1 (const int)
+0:63 Constant:
+0:63 2 (const int)
+0:63 'di' (temp 3-component vector of double)
0:71 Function Definition: foodc1( (global void)
0:71 Function Parameters:
0:73 Sequence
0:? Sequence
0:115 'lod' (temp 2-component vector of float)
0:116 'lod' (temp 2-component vector of float)
+0:119 Function Definition: doubles( (global void)
+0:119 Function Parameters:
+0:? Sequence
+0:131 move second child to first child (temp double)
+0:131 'doublev' (temp double)
+0:131 Constant:
+0:131 1.702939
+0:132 move second child to first child (temp 2-component vector of double)
+0:132 'dvec2v' (temp 2-component vector of double)
+0:132 Constant:
+0:132 1.643168
+0:132 1.643168
+0:133 move second child to first child (temp 3-component vector of double)
+0:133 'dvec3v' (temp 3-component vector of double)
+0:133 Constant:
+0:133 1.414214
+0:133 1.414214
+0:133 1.414214
+0:134 move second child to first child (temp 4-component vector of double)
+0:134 'dvec4v' (temp 4-component vector of double)
+0:134 Constant:
+0:134 1.449138
+0:134 1.449138
+0:134 1.449138
+0:134 1.449138
+0:136 add second child into first child (temp double)
+0:136 'doublev' (temp double)
+0:136 inverse sqrt (global double)
+0:136 'doublev' (temp double)
+0:137 add second child into first child (temp 2-component vector of double)
+0:137 'dvec2v' (temp 2-component vector of double)
+0:137 inverse sqrt (global 2-component vector of double)
+0:137 'dvec2v' (temp 2-component vector of double)
+0:138 add second child into first child (temp 3-component vector of double)
+0:138 'dvec3v' (temp 3-component vector of double)
+0:138 inverse sqrt (global 3-component vector of double)
+0:138 'dvec3v' (temp 3-component vector of double)
+0:139 add second child into first child (temp 4-component vector of double)
+0:139 'dvec4v' (temp 4-component vector of double)
+0:139 inverse sqrt (global 4-component vector of double)
+0:139 'dvec4v' (temp 4-component vector of double)
+0:141 add second child into first child (temp double)
+0:141 'doublev' (temp double)
+0:141 Absolute value (global double)
+0:141 'doublev' (temp double)
+0:142 add second child into first child (temp 2-component vector of double)
+0:142 'dvec2v' (temp 2-component vector of double)
+0:142 Absolute value (global 2-component vector of double)
+0:142 'dvec2v' (temp 2-component vector of double)
+0:143 add second child into first child (temp 3-component vector of double)
+0:143 'dvec3v' (temp 3-component vector of double)
+0:143 Absolute value (global 3-component vector of double)
+0:143 'dvec3v' (temp 3-component vector of double)
+0:144 add second child into first child (temp 4-component vector of double)
+0:144 'dvec4v' (temp 4-component vector of double)
+0:144 Absolute value (global 4-component vector of double)
+0:144 'dvec4v' (temp 4-component vector of double)
+0:146 add second child into first child (temp double)
+0:146 'doublev' (temp double)
+0:146 Sign (global double)
+0:146 'doublev' (temp double)
+0:147 add second child into first child (temp 2-component vector of double)
+0:147 'dvec2v' (temp 2-component vector of double)
+0:147 Sign (global 2-component vector of double)
+0:147 'dvec2v' (temp 2-component vector of double)
+0:148 add second child into first child (temp 3-component vector of double)
+0:148 'dvec3v' (temp 3-component vector of double)
+0:148 Sign (global 3-component vector of double)
+0:148 'dvec3v' (temp 3-component vector of double)
+0:149 add second child into first child (temp 4-component vector of double)
+0:149 'dvec4v' (temp 4-component vector of double)
+0:149 Sign (global 4-component vector of double)
+0:149 'dvec4v' (temp 4-component vector of double)
+0:151 add second child into first child (temp double)
+0:151 'doublev' (temp double)
+0:151 Floor (global double)
+0:151 'doublev' (temp double)
+0:152 add second child into first child (temp 2-component vector of double)
+0:152 'dvec2v' (temp 2-component vector of double)
+0:152 Floor (global 2-component vector of double)
+0:152 'dvec2v' (temp 2-component vector of double)
+0:153 add second child into first child (temp 3-component vector of double)
+0:153 'dvec3v' (temp 3-component vector of double)
+0:153 Floor (global 3-component vector of double)
+0:153 'dvec3v' (temp 3-component vector of double)
+0:154 add second child into first child (temp 4-component vector of double)
+0:154 'dvec4v' (temp 4-component vector of double)
+0:154 Floor (global 4-component vector of double)
+0:154 'dvec4v' (temp 4-component vector of double)
+0:156 add second child into first child (temp double)
+0:156 'doublev' (temp double)
+0:156 trunc (global double)
+0:156 'doublev' (temp double)
+0:157 add second child into first child (temp 2-component vector of double)
+0:157 'dvec2v' (temp 2-component vector of double)
+0:157 trunc (global 2-component vector of double)
+0:157 'dvec2v' (temp 2-component vector of double)
+0:158 add second child into first child (temp 3-component vector of double)
+0:158 'dvec3v' (temp 3-component vector of double)
+0:158 trunc (global 3-component vector of double)
+0:158 'dvec3v' (temp 3-component vector of double)
+0:159 add second child into first child (temp 4-component vector of double)
+0:159 'dvec4v' (temp 4-component vector of double)
+0:159 trunc (global 4-component vector of double)
+0:159 'dvec4v' (temp 4-component vector of double)
+0:161 add second child into first child (temp double)
+0:161 'doublev' (temp double)
+0:161 round (global double)
+0:161 'doublev' (temp double)
+0:162 add second child into first child (temp 2-component vector of double)
+0:162 'dvec2v' (temp 2-component vector of double)
+0:162 round (global 2-component vector of double)
+0:162 'dvec2v' (temp 2-component vector of double)
+0:163 add second child into first child (temp 3-component vector of double)
+0:163 'dvec3v' (temp 3-component vector of double)
+0:163 round (global 3-component vector of double)
+0:163 'dvec3v' (temp 3-component vector of double)
+0:164 add second child into first child (temp 4-component vector of double)
+0:164 'dvec4v' (temp 4-component vector of double)
+0:164 round (global 4-component vector of double)
+0:164 'dvec4v' (temp 4-component vector of double)
+0:166 add second child into first child (temp double)
+0:166 'doublev' (temp double)
+0:166 roundEven (global double)
+0:166 'doublev' (temp double)
+0:167 add second child into first child (temp 2-component vector of double)
+0:167 'dvec2v' (temp 2-component vector of double)
+0:167 roundEven (global 2-component vector of double)
+0:167 'dvec2v' (temp 2-component vector of double)
+0:168 add second child into first child (temp 3-component vector of double)
+0:168 'dvec3v' (temp 3-component vector of double)
+0:168 roundEven (global 3-component vector of double)
+0:168 'dvec3v' (temp 3-component vector of double)
+0:169 add second child into first child (temp 4-component vector of double)
+0:169 'dvec4v' (temp 4-component vector of double)
+0:169 roundEven (global 4-component vector of double)
+0:169 'dvec4v' (temp 4-component vector of double)
+0:171 add second child into first child (temp double)
+0:171 'doublev' (temp double)
+0:171 Ceiling (global double)
+0:171 'doublev' (temp double)
+0:172 add second child into first child (temp 2-component vector of double)
+0:172 'dvec2v' (temp 2-component vector of double)
+0:172 Ceiling (global 2-component vector of double)
+0:172 'dvec2v' (temp 2-component vector of double)
+0:173 add second child into first child (temp 3-component vector of double)
+0:173 'dvec3v' (temp 3-component vector of double)
+0:173 Ceiling (global 3-component vector of double)
+0:173 'dvec3v' (temp 3-component vector of double)
+0:174 add second child into first child (temp 4-component vector of double)
+0:174 'dvec4v' (temp 4-component vector of double)
+0:174 Ceiling (global 4-component vector of double)
+0:174 'dvec4v' (temp 4-component vector of double)
+0:176 add second child into first child (temp double)
+0:176 'doublev' (temp double)
+0:176 Fraction (global double)
+0:176 'doublev' (temp double)
+0:177 add second child into first child (temp 2-component vector of double)
+0:177 'dvec2v' (temp 2-component vector of double)
+0:177 Fraction (global 2-component vector of double)
+0:177 'dvec2v' (temp 2-component vector of double)
+0:178 add second child into first child (temp 3-component vector of double)
+0:178 'dvec3v' (temp 3-component vector of double)
+0:178 Fraction (global 3-component vector of double)
+0:178 'dvec3v' (temp 3-component vector of double)
+0:179 add second child into first child (temp 4-component vector of double)
+0:179 'dvec4v' (temp 4-component vector of double)
+0:179 Fraction (global 4-component vector of double)
+0:179 'dvec4v' (temp 4-component vector of double)
+0:181 add second child into first child (temp double)
+0:181 'doublev' (temp double)
+0:181 mod (global double)
+0:181 'doublev' (temp double)
+0:181 'doublev' (temp double)
+0:182 add second child into first child (temp 2-component vector of double)
+0:182 'dvec2v' (temp 2-component vector of double)
+0:182 mod (global 2-component vector of double)
+0:182 'dvec2v' (temp 2-component vector of double)
+0:182 'doublev' (temp double)
+0:183 add second child into first child (temp 3-component vector of double)
+0:183 'dvec3v' (temp 3-component vector of double)
+0:183 mod (global 3-component vector of double)
+0:183 'dvec3v' (temp 3-component vector of double)
+0:183 'doublev' (temp double)
+0:184 add second child into first child (temp 4-component vector of double)
+0:184 'dvec4v' (temp 4-component vector of double)
+0:184 mod (global 4-component vector of double)
+0:184 'dvec4v' (temp 4-component vector of double)
+0:184 'doublev' (temp double)
+0:185 add second child into first child (temp 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:185 mod (global 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:186 add second child into first child (temp 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:186 mod (global 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:187 add second child into first child (temp 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:187 mod (global 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:189 add second child into first child (temp double)
+0:189 'doublev' (temp double)
+0:189 modf (global double)
+0:189 'doublev' (temp double)
+0:189 'doublev' (temp double)
+0:190 add second child into first child (temp 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:190 modf (global 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:191 add second child into first child (temp 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:191 modf (global 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:192 add second child into first child (temp 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:192 modf (global 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:194 add second child into first child (temp double)
+0:194 'doublev' (temp double)
+0:194 min (global double)
+0:194 'doublev' (temp double)
+0:194 'doublev' (temp double)
+0:195 add second child into first child (temp 2-component vector of double)
+0:195 'dvec2v' (temp 2-component vector of double)
+0:195 min (global 2-component vector of double)
+0:195 'dvec2v' (temp 2-component vector of double)
+0:195 'doublev' (temp double)
+0:196 add second child into first child (temp 3-component vector of double)
+0:196 'dvec3v' (temp 3-component vector of double)
+0:196 min (global 3-component vector of double)
+0:196 'dvec3v' (temp 3-component vector of double)
+0:196 'doublev' (temp double)
+0:197 add second child into first child (temp 4-component vector of double)
+0:197 'dvec4v' (temp 4-component vector of double)
+0:197 min (global 4-component vector of double)
+0:197 'dvec4v' (temp 4-component vector of double)
+0:197 'doublev' (temp double)
+0:198 add second child into first child (temp 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:198 min (global 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:199 add second child into first child (temp 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:199 min (global 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:200 add second child into first child (temp 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:200 min (global 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:202 add second child into first child (temp double)
+0:202 'doublev' (temp double)
+0:202 max (global double)
+0:202 'doublev' (temp double)
+0:202 'doublev' (temp double)
+0:203 add second child into first child (temp 2-component vector of double)
+0:203 'dvec2v' (temp 2-component vector of double)
+0:203 max (global 2-component vector of double)
+0:203 'dvec2v' (temp 2-component vector of double)
+0:203 'doublev' (temp double)
+0:204 add second child into first child (temp 3-component vector of double)
+0:204 'dvec3v' (temp 3-component vector of double)
+0:204 max (global 3-component vector of double)
+0:204 'dvec3v' (temp 3-component vector of double)
+0:204 'doublev' (temp double)
+0:205 add second child into first child (temp 4-component vector of double)
+0:205 'dvec4v' (temp 4-component vector of double)
+0:205 max (global 4-component vector of double)
+0:205 'dvec4v' (temp 4-component vector of double)
+0:205 'doublev' (temp double)
+0:206 add second child into first child (temp 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:206 max (global 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:207 add second child into first child (temp 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:207 max (global 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:208 add second child into first child (temp 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:208 max (global 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:210 add second child into first child (temp double)
+0:210 'doublev' (temp double)
+0:210 clamp (global double)
+0:210 'doublev' (temp double)
+0:210 'doublev' (temp double)
+0:210 'doublev' (temp double)
+0:211 add second child into first child (temp 2-component vector of double)
+0:211 'dvec2v' (temp 2-component vector of double)
+0:211 clamp (global 2-component vector of double)
+0:211 'dvec2v' (temp 2-component vector of double)
+0:211 'doublev' (temp double)
+0:211 'doublev' (temp double)
+0:212 add second child into first child (temp 3-component vector of double)
+0:212 'dvec3v' (temp 3-component vector of double)
+0:212 clamp (global 3-component vector of double)
+0:212 'dvec3v' (temp 3-component vector of double)
+0:212 'doublev' (temp double)
+0:212 'doublev' (temp double)
+0:213 add second child into first child (temp 4-component vector of double)
+0:213 'dvec4v' (temp 4-component vector of double)
+0:213 clamp (global 4-component vector of double)
+0:213 'dvec4v' (temp 4-component vector of double)
+0:213 'doublev' (temp double)
+0:213 'doublev' (temp double)
+0:214 add second child into first child (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 clamp (global 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:215 add second child into first child (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 clamp (global 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:216 add second child into first child (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 clamp (global 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:218 add second child into first child (temp double)
+0:218 'doublev' (temp double)
+0:218 mix (global double)
+0:218 'doublev' (temp double)
+0:218 'doublev' (temp double)
+0:218 'doublev' (temp double)
+0:219 add second child into first child (temp 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 mix (global 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 'doublev' (temp double)
+0:220 add second child into first child (temp 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 mix (global 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 'doublev' (temp double)
+0:221 add second child into first child (temp 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 mix (global 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 'doublev' (temp double)
+0:222 add second child into first child (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 mix (global 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:223 add second child into first child (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 mix (global 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:224 add second child into first child (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 mix (global 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:225 add second child into first child (temp double)
+0:225 'doublev' (temp double)
+0:225 mix (global double)
+0:225 'doublev' (temp double)
+0:225 'doublev' (temp double)
+0:225 'boolv' (temp bool)
+0:226 add second child into first child (temp 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 mix (global 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 'bvec2v' (temp 2-component vector of bool)
+0:227 add second child into first child (temp 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 mix (global 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 'bvec3v' (temp 3-component vector of bool)
+0:228 add second child into first child (temp 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 mix (global 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 'bvec4v' (temp 4-component vector of bool)
+0:230 add second child into first child (temp double)
+0:230 'doublev' (temp double)
+0:230 step (global double)
+0:230 'doublev' (temp double)
+0:230 'doublev' (temp double)
+0:231 add second child into first child (temp 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:231 step (global 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:232 add second child into first child (temp 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:232 step (global 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:233 add second child into first child (temp 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:233 step (global 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:234 add second child into first child (temp 2-component vector of double)
+0:234 'dvec2v' (temp 2-component vector of double)
+0:234 step (global 2-component vector of double)
+0:234 'doublev' (temp double)
+0:234 'dvec2v' (temp 2-component vector of double)
+0:235 add second child into first child (temp 3-component vector of double)
+0:235 'dvec3v' (temp 3-component vector of double)
+0:235 step (global 3-component vector of double)
+0:235 'doublev' (temp double)
+0:235 'dvec3v' (temp 3-component vector of double)
+0:236 add second child into first child (temp 4-component vector of double)
+0:236 'dvec4v' (temp 4-component vector of double)
+0:236 step (global 4-component vector of double)
+0:236 'doublev' (temp double)
+0:236 'dvec4v' (temp 4-component vector of double)
+0:238 add second child into first child (temp double)
+0:238 'doublev' (temp double)
+0:238 smoothstep (global double)
+0:238 'doublev' (temp double)
+0:238 'doublev' (temp double)
+0:238 'doublev' (temp double)
+0:239 add second child into first child (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 smoothstep (global 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:240 add second child into first child (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 smoothstep (global 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:241 add second child into first child (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 smoothstep (global 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:242 add second child into first child (temp 2-component vector of double)
+0:242 'dvec2v' (temp 2-component vector of double)
+0:242 smoothstep (global 2-component vector of double)
+0:242 'doublev' (temp double)
+0:242 'doublev' (temp double)
+0:242 'dvec2v' (temp 2-component vector of double)
+0:243 add second child into first child (temp 3-component vector of double)
+0:243 'dvec3v' (temp 3-component vector of double)
+0:243 smoothstep (global 3-component vector of double)
+0:243 'doublev' (temp double)
+0:243 'doublev' (temp double)
+0:243 'dvec3v' (temp 3-component vector of double)
+0:244 add second child into first child (temp 4-component vector of double)
+0:244 'dvec4v' (temp 4-component vector of double)
+0:244 smoothstep (global 4-component vector of double)
+0:244 'doublev' (temp double)
+0:244 'doublev' (temp double)
+0:244 'dvec4v' (temp 4-component vector of double)
+0:246 move second child to first child (temp bool)
+0:246 'boolv' (temp bool)
+0:246 isnan (global bool)
+0:246 'doublev' (temp double)
+0:247 move second child to first child (temp 2-component vector of bool)
+0:247 'bvec2v' (temp 2-component vector of bool)
+0:247 isnan (global 2-component vector of bool)
+0:247 'dvec2v' (temp 2-component vector of double)
+0:248 move second child to first child (temp 3-component vector of bool)
+0:248 'bvec3v' (temp 3-component vector of bool)
+0:248 isnan (global 3-component vector of bool)
+0:248 'dvec3v' (temp 3-component vector of double)
+0:249 move second child to first child (temp 4-component vector of bool)
+0:249 'bvec4v' (temp 4-component vector of bool)
+0:249 isnan (global 4-component vector of bool)
+0:249 'dvec4v' (temp 4-component vector of double)
+0:251 move second child to first child (temp bool)
+0:251 'boolv' (temp bool)
+0:251 Test condition and select (temp bool)
+0:251 Condition
+0:251 'boolv' (temp bool)
+0:251 true case
+0:251 isinf (global bool)
+0:251 'doublev' (temp double)
+0:251 false case
+0:251 Constant:
+0:251 false (const bool)
+0:252 move second child to first child (temp 2-component vector of bool)
+0:252 'bvec2v' (temp 2-component vector of bool)
+0:252 Test condition and select (temp 2-component vector of bool)
+0:252 Condition
+0:252 'boolv' (temp bool)
+0:252 true case
+0:252 isinf (global 2-component vector of bool)
+0:252 'dvec2v' (temp 2-component vector of double)
+0:252 false case
+0:252 Constant:
+0:252 false (const bool)
+0:252 false (const bool)
+0:253 move second child to first child (temp 3-component vector of bool)
+0:253 'bvec3v' (temp 3-component vector of bool)
+0:253 Test condition and select (temp 3-component vector of bool)
+0:253 Condition
+0:253 'boolv' (temp bool)
+0:253 true case
+0:253 isinf (global 3-component vector of bool)
+0:253 'dvec3v' (temp 3-component vector of double)
+0:253 false case
+0:253 Constant:
+0:253 false (const bool)
+0:253 false (const bool)
+0:253 false (const bool)
+0:254 move second child to first child (temp 4-component vector of bool)
+0:254 'bvec4v' (temp 4-component vector of bool)
+0:254 Test condition and select (temp 4-component vector of bool)
+0:254 Condition
+0:254 'boolv' (temp bool)
+0:254 true case
+0:254 isinf (global 4-component vector of bool)
+0:254 'dvec4v' (temp 4-component vector of double)
+0:254 false case
+0:254 Constant:
+0:254 false (const bool)
+0:254 false (const bool)
+0:254 false (const bool)
+0:254 false (const bool)
+0:256 add second child into first child (temp double)
+0:256 'doublev' (temp double)
+0:256 length (global double)
+0:256 'doublev' (temp double)
+0:257 add second child into first child (temp double)
+0:257 'doublev' (temp double)
+0:257 length (global double)
+0:257 'dvec2v' (temp 2-component vector of double)
+0:258 add second child into first child (temp double)
+0:258 'doublev' (temp double)
+0:258 length (global double)
+0:258 'dvec3v' (temp 3-component vector of double)
+0:259 add second child into first child (temp double)
+0:259 'doublev' (temp double)
+0:259 length (global double)
+0:259 'dvec4v' (temp 4-component vector of double)
+0:261 add second child into first child (temp double)
+0:261 'doublev' (temp double)
+0:261 distance (global double)
+0:261 'doublev' (temp double)
+0:261 'doublev' (temp double)
+0:262 add second child into first child (temp double)
+0:262 'doublev' (temp double)
+0:262 distance (global double)
+0:262 'dvec2v' (temp 2-component vector of double)
+0:262 'dvec2v' (temp 2-component vector of double)
+0:263 add second child into first child (temp double)
+0:263 'doublev' (temp double)
+0:263 distance (global double)
+0:263 'dvec3v' (temp 3-component vector of double)
+0:263 'dvec3v' (temp 3-component vector of double)
+0:264 add second child into first child (temp double)
+0:264 'doublev' (temp double)
+0:264 distance (global double)
+0:264 'dvec4v' (temp 4-component vector of double)
+0:264 'dvec4v' (temp 4-component vector of double)
+0:266 add second child into first child (temp double)
+0:266 'doublev' (temp double)
+0:266 dot-product (global double)
+0:266 'doublev' (temp double)
+0:266 'doublev' (temp double)
+0:267 add second child into first child (temp double)
+0:267 'doublev' (temp double)
+0:267 dot-product (global double)
+0:267 'dvec2v' (temp 2-component vector of double)
+0:267 'dvec2v' (temp 2-component vector of double)
+0:268 add second child into first child (temp double)
+0:268 'doublev' (temp double)
+0:268 dot-product (global double)
+0:268 'dvec3v' (temp 3-component vector of double)
+0:268 'dvec3v' (temp 3-component vector of double)
+0:269 add second child into first child (temp double)
+0:269 'doublev' (temp double)
+0:269 dot-product (global double)
+0:269 'dvec4v' (temp 4-component vector of double)
+0:269 'dvec4v' (temp 4-component vector of double)
+0:271 add second child into first child (temp 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:271 cross-product (global 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:273 add second child into first child (temp double)
+0:273 'doublev' (temp double)
+0:273 normalize (global double)
+0:273 'doublev' (temp double)
+0:274 add second child into first child (temp 2-component vector of double)
+0:274 'dvec2v' (temp 2-component vector of double)
+0:274 normalize (global 2-component vector of double)
+0:274 'dvec2v' (temp 2-component vector of double)
+0:275 add second child into first child (temp 3-component vector of double)
+0:275 'dvec3v' (temp 3-component vector of double)
+0:275 normalize (global 3-component vector of double)
+0:275 'dvec3v' (temp 3-component vector of double)
+0:276 add second child into first child (temp 4-component vector of double)
+0:276 'dvec4v' (temp 4-component vector of double)
+0:276 normalize (global 4-component vector of double)
+0:276 'dvec4v' (temp 4-component vector of double)
+0:278 add second child into first child (temp double)
+0:278 'doublev' (temp double)
+0:278 face-forward (global double)
+0:278 'doublev' (temp double)
+0:278 'doublev' (temp double)
+0:278 'doublev' (temp double)
+0:279 add second child into first child (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 face-forward (global 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:280 add second child into first child (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 face-forward (global 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:281 add second child into first child (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 face-forward (global 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:283 add second child into first child (temp double)
+0:283 'doublev' (temp double)
+0:283 reflect (global double)
+0:283 'doublev' (temp double)
+0:283 'doublev' (temp double)
+0:284 add second child into first child (temp 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:284 reflect (global 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:285 add second child into first child (temp 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:285 reflect (global 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:286 add second child into first child (temp 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:286 reflect (global 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:288 add second child into first child (temp double)
+0:288 'doublev' (temp double)
+0:288 refract (global double)
+0:288 'doublev' (temp double)
+0:288 'doublev' (temp double)
+0:288 'doublev' (temp double)
+0:289 add second child into first child (temp 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 refract (global 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 'doublev' (temp double)
+0:290 add second child into first child (temp 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 refract (global 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 'doublev' (temp double)
+0:291 add second child into first child (temp 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 refract (global 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 'doublev' (temp double)
+0:293 Sequence
+0:293 move second child to first child (temp 2X2 matrix of double)
+0:293 'dmat2v' (temp 2X2 matrix of double)
+0:293 outer product (global 2X2 matrix of double)
+0:293 'dvec2v' (temp 2-component vector of double)
+0:293 'dvec2v' (temp 2-component vector of double)
+0:294 Sequence
+0:294 move second child to first child (temp 3X3 matrix of double)
+0:294 'dmat3v' (temp 3X3 matrix of double)
+0:294 outer product (global 3X3 matrix of double)
+0:294 'dvec3v' (temp 3-component vector of double)
+0:294 'dvec3v' (temp 3-component vector of double)
+0:295 Sequence
+0:295 move second child to first child (temp 4X4 matrix of double)
+0:295 'dmat4v' (temp 4X4 matrix of double)
+0:295 outer product (global 4X4 matrix of double)
+0:295 'dvec4v' (temp 4-component vector of double)
+0:295 'dvec4v' (temp 4-component vector of double)
+0:296 Sequence
+0:296 move second child to first child (temp 2X3 matrix of double)
+0:296 'dmat2x3v' (temp 2X3 matrix of double)
+0:296 outer product (global 2X3 matrix of double)
+0:296 'dvec3v' (temp 3-component vector of double)
+0:296 'dvec2v' (temp 2-component vector of double)
+0:297 Sequence
+0:297 move second child to first child (temp 3X2 matrix of double)
+0:297 'dmat3x2v' (temp 3X2 matrix of double)
+0:297 outer product (global 3X2 matrix of double)
+0:297 'dvec2v' (temp 2-component vector of double)
+0:297 'dvec3v' (temp 3-component vector of double)
+0:298 Sequence
+0:298 move second child to first child (temp 2X4 matrix of double)
+0:298 'dmat2x4v' (temp 2X4 matrix of double)
+0:298 outer product (global 2X4 matrix of double)
+0:298 'dvec4v' (temp 4-component vector of double)
+0:298 'dvec2v' (temp 2-component vector of double)
+0:299 Sequence
+0:299 move second child to first child (temp 4X2 matrix of double)
+0:299 'dmat4x2v' (temp 4X2 matrix of double)
+0:299 outer product (global 4X2 matrix of double)
+0:299 'dvec2v' (temp 2-component vector of double)
+0:299 'dvec4v' (temp 4-component vector of double)
+0:300 Sequence
+0:300 move second child to first child (temp 3X4 matrix of double)
+0:300 'dmat3x4v' (temp 3X4 matrix of double)
+0:300 outer product (global 3X4 matrix of double)
+0:300 'dvec4v' (temp 4-component vector of double)
+0:300 'dvec3v' (temp 3-component vector of double)
+0:301 Sequence
+0:301 move second child to first child (temp 4X3 matrix of double)
+0:301 'dmat4x3v' (temp 4X3 matrix of double)
+0:301 outer product (global 4X3 matrix of double)
+0:301 'dvec3v' (temp 3-component vector of double)
+0:301 'dvec4v' (temp 4-component vector of double)
+0:303 matrix mult second child into first child (temp 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:303 component-wise multiply (global 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:304 matrix mult second child into first child (temp 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:304 component-wise multiply (global 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:305 matrix mult second child into first child (temp 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:305 component-wise multiply (global 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:306 move second child to first child (temp 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:306 component-wise multiply (global 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:307 move second child to first child (temp 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:307 component-wise multiply (global 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:308 move second child to first child (temp 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:308 component-wise multiply (global 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:309 move second child to first child (temp 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:309 component-wise multiply (global 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:310 move second child to first child (temp 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:310 component-wise multiply (global 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:311 move second child to first child (temp 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:311 component-wise multiply (global 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:313 matrix mult second child into first child (temp 2X2 matrix of double)
+0:313 'dmat2v' (temp 2X2 matrix of double)
+0:313 transpose (global 2X2 matrix of double)
+0:313 'dmat2v' (temp 2X2 matrix of double)
+0:314 matrix mult second child into first child (temp 3X3 matrix of double)
+0:314 'dmat3v' (temp 3X3 matrix of double)
+0:314 transpose (global 3X3 matrix of double)
+0:314 'dmat3v' (temp 3X3 matrix of double)
+0:315 matrix mult second child into first child (temp 4X4 matrix of double)
+0:315 'dmat4v' (temp 4X4 matrix of double)
+0:315 transpose (global 4X4 matrix of double)
+0:315 'dmat4v' (temp 4X4 matrix of double)
+0:316 move second child to first child (temp 2X3 matrix of double)
+0:316 'dmat2x3v' (temp 2X3 matrix of double)
+0:316 transpose (global 2X3 matrix of double)
+0:316 'dmat3x2v' (temp 3X2 matrix of double)
+0:317 move second child to first child (temp 3X2 matrix of double)
+0:317 'dmat3x2v' (temp 3X2 matrix of double)
+0:317 transpose (global 3X2 matrix of double)
+0:317 'dmat2x3v' (temp 2X3 matrix of double)
+0:318 move second child to first child (temp 2X4 matrix of double)
+0:318 'dmat2x4v' (temp 2X4 matrix of double)
+0:318 transpose (global 2X4 matrix of double)
+0:318 'dmat4x2v' (temp 4X2 matrix of double)
+0:319 move second child to first child (temp 4X2 matrix of double)
+0:319 'dmat4x2v' (temp 4X2 matrix of double)
+0:319 transpose (global 4X2 matrix of double)
+0:319 'dmat2x4v' (temp 2X4 matrix of double)
+0:320 move second child to first child (temp 3X4 matrix of double)
+0:320 'dmat3x4v' (temp 3X4 matrix of double)
+0:320 transpose (global 3X4 matrix of double)
+0:320 'dmat4x3v' (temp 4X3 matrix of double)
+0:321 move second child to first child (temp 4X3 matrix of double)
+0:321 'dmat4x3v' (temp 4X3 matrix of double)
+0:321 transpose (global 4X3 matrix of double)
+0:321 'dmat3x4v' (temp 3X4 matrix of double)
+0:323 add second child into first child (temp double)
+0:323 'doublev' (temp double)
+0:323 determinant (global double)
+0:323 'dmat2v' (temp 2X2 matrix of double)
+0:324 add second child into first child (temp double)
+0:324 'doublev' (temp double)
+0:324 determinant (global double)
+0:324 'dmat3v' (temp 3X3 matrix of double)
+0:325 add second child into first child (temp double)
+0:325 'doublev' (temp double)
+0:325 determinant (global double)
+0:325 'dmat4v' (temp 4X4 matrix of double)
+0:327 matrix mult second child into first child (temp 2X2 matrix of double)
+0:327 'dmat2v' (temp 2X2 matrix of double)
+0:327 inverse (global 2X2 matrix of double)
+0:327 'dmat2v' (temp 2X2 matrix of double)
+0:328 matrix mult second child into first child (temp 3X3 matrix of double)
+0:328 'dmat3v' (temp 3X3 matrix of double)
+0:328 inverse (global 3X3 matrix of double)
+0:328 'dmat3v' (temp 3X3 matrix of double)
+0:329 matrix mult second child into first child (temp 4X4 matrix of double)
+0:329 'dmat4v' (temp 4X4 matrix of double)
+0:329 inverse (global 4X4 matrix of double)
+0:329 'dmat4v' (temp 4X4 matrix of double)
0:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a})
0:? 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize})
0:? Sequence
0:115 'lod' (temp 2-component vector of float)
0:116 'lod' (temp 2-component vector of float)
+0:119 Function Definition: doubles( (global void)
+0:119 Function Parameters:
+0:? Sequence
+0:131 move second child to first child (temp double)
+0:131 'doublev' (temp double)
+0:131 Constant:
+0:131 1.702939
+0:132 move second child to first child (temp 2-component vector of double)
+0:132 'dvec2v' (temp 2-component vector of double)
+0:132 Constant:
+0:132 1.643168
+0:132 1.643168
+0:133 move second child to first child (temp 3-component vector of double)
+0:133 'dvec3v' (temp 3-component vector of double)
+0:133 Constant:
+0:133 1.414214
+0:133 1.414214
+0:133 1.414214
+0:134 move second child to first child (temp 4-component vector of double)
+0:134 'dvec4v' (temp 4-component vector of double)
+0:134 Constant:
+0:134 1.449138
+0:134 1.449138
+0:134 1.449138
+0:134 1.449138
+0:136 add second child into first child (temp double)
+0:136 'doublev' (temp double)
+0:136 inverse sqrt (global double)
+0:136 'doublev' (temp double)
+0:137 add second child into first child (temp 2-component vector of double)
+0:137 'dvec2v' (temp 2-component vector of double)
+0:137 inverse sqrt (global 2-component vector of double)
+0:137 'dvec2v' (temp 2-component vector of double)
+0:138 add second child into first child (temp 3-component vector of double)
+0:138 'dvec3v' (temp 3-component vector of double)
+0:138 inverse sqrt (global 3-component vector of double)
+0:138 'dvec3v' (temp 3-component vector of double)
+0:139 add second child into first child (temp 4-component vector of double)
+0:139 'dvec4v' (temp 4-component vector of double)
+0:139 inverse sqrt (global 4-component vector of double)
+0:139 'dvec4v' (temp 4-component vector of double)
+0:141 add second child into first child (temp double)
+0:141 'doublev' (temp double)
+0:141 Absolute value (global double)
+0:141 'doublev' (temp double)
+0:142 add second child into first child (temp 2-component vector of double)
+0:142 'dvec2v' (temp 2-component vector of double)
+0:142 Absolute value (global 2-component vector of double)
+0:142 'dvec2v' (temp 2-component vector of double)
+0:143 add second child into first child (temp 3-component vector of double)
+0:143 'dvec3v' (temp 3-component vector of double)
+0:143 Absolute value (global 3-component vector of double)
+0:143 'dvec3v' (temp 3-component vector of double)
+0:144 add second child into first child (temp 4-component vector of double)
+0:144 'dvec4v' (temp 4-component vector of double)
+0:144 Absolute value (global 4-component vector of double)
+0:144 'dvec4v' (temp 4-component vector of double)
+0:146 add second child into first child (temp double)
+0:146 'doublev' (temp double)
+0:146 Sign (global double)
+0:146 'doublev' (temp double)
+0:147 add second child into first child (temp 2-component vector of double)
+0:147 'dvec2v' (temp 2-component vector of double)
+0:147 Sign (global 2-component vector of double)
+0:147 'dvec2v' (temp 2-component vector of double)
+0:148 add second child into first child (temp 3-component vector of double)
+0:148 'dvec3v' (temp 3-component vector of double)
+0:148 Sign (global 3-component vector of double)
+0:148 'dvec3v' (temp 3-component vector of double)
+0:149 add second child into first child (temp 4-component vector of double)
+0:149 'dvec4v' (temp 4-component vector of double)
+0:149 Sign (global 4-component vector of double)
+0:149 'dvec4v' (temp 4-component vector of double)
+0:151 add second child into first child (temp double)
+0:151 'doublev' (temp double)
+0:151 Floor (global double)
+0:151 'doublev' (temp double)
+0:152 add second child into first child (temp 2-component vector of double)
+0:152 'dvec2v' (temp 2-component vector of double)
+0:152 Floor (global 2-component vector of double)
+0:152 'dvec2v' (temp 2-component vector of double)
+0:153 add second child into first child (temp 3-component vector of double)
+0:153 'dvec3v' (temp 3-component vector of double)
+0:153 Floor (global 3-component vector of double)
+0:153 'dvec3v' (temp 3-component vector of double)
+0:154 add second child into first child (temp 4-component vector of double)
+0:154 'dvec4v' (temp 4-component vector of double)
+0:154 Floor (global 4-component vector of double)
+0:154 'dvec4v' (temp 4-component vector of double)
+0:156 add second child into first child (temp double)
+0:156 'doublev' (temp double)
+0:156 trunc (global double)
+0:156 'doublev' (temp double)
+0:157 add second child into first child (temp 2-component vector of double)
+0:157 'dvec2v' (temp 2-component vector of double)
+0:157 trunc (global 2-component vector of double)
+0:157 'dvec2v' (temp 2-component vector of double)
+0:158 add second child into first child (temp 3-component vector of double)
+0:158 'dvec3v' (temp 3-component vector of double)
+0:158 trunc (global 3-component vector of double)
+0:158 'dvec3v' (temp 3-component vector of double)
+0:159 add second child into first child (temp 4-component vector of double)
+0:159 'dvec4v' (temp 4-component vector of double)
+0:159 trunc (global 4-component vector of double)
+0:159 'dvec4v' (temp 4-component vector of double)
+0:161 add second child into first child (temp double)
+0:161 'doublev' (temp double)
+0:161 round (global double)
+0:161 'doublev' (temp double)
+0:162 add second child into first child (temp 2-component vector of double)
+0:162 'dvec2v' (temp 2-component vector of double)
+0:162 round (global 2-component vector of double)
+0:162 'dvec2v' (temp 2-component vector of double)
+0:163 add second child into first child (temp 3-component vector of double)
+0:163 'dvec3v' (temp 3-component vector of double)
+0:163 round (global 3-component vector of double)
+0:163 'dvec3v' (temp 3-component vector of double)
+0:164 add second child into first child (temp 4-component vector of double)
+0:164 'dvec4v' (temp 4-component vector of double)
+0:164 round (global 4-component vector of double)
+0:164 'dvec4v' (temp 4-component vector of double)
+0:166 add second child into first child (temp double)
+0:166 'doublev' (temp double)
+0:166 roundEven (global double)
+0:166 'doublev' (temp double)
+0:167 add second child into first child (temp 2-component vector of double)
+0:167 'dvec2v' (temp 2-component vector of double)
+0:167 roundEven (global 2-component vector of double)
+0:167 'dvec2v' (temp 2-component vector of double)
+0:168 add second child into first child (temp 3-component vector of double)
+0:168 'dvec3v' (temp 3-component vector of double)
+0:168 roundEven (global 3-component vector of double)
+0:168 'dvec3v' (temp 3-component vector of double)
+0:169 add second child into first child (temp 4-component vector of double)
+0:169 'dvec4v' (temp 4-component vector of double)
+0:169 roundEven (global 4-component vector of double)
+0:169 'dvec4v' (temp 4-component vector of double)
+0:171 add second child into first child (temp double)
+0:171 'doublev' (temp double)
+0:171 Ceiling (global double)
+0:171 'doublev' (temp double)
+0:172 add second child into first child (temp 2-component vector of double)
+0:172 'dvec2v' (temp 2-component vector of double)
+0:172 Ceiling (global 2-component vector of double)
+0:172 'dvec2v' (temp 2-component vector of double)
+0:173 add second child into first child (temp 3-component vector of double)
+0:173 'dvec3v' (temp 3-component vector of double)
+0:173 Ceiling (global 3-component vector of double)
+0:173 'dvec3v' (temp 3-component vector of double)
+0:174 add second child into first child (temp 4-component vector of double)
+0:174 'dvec4v' (temp 4-component vector of double)
+0:174 Ceiling (global 4-component vector of double)
+0:174 'dvec4v' (temp 4-component vector of double)
+0:176 add second child into first child (temp double)
+0:176 'doublev' (temp double)
+0:176 Fraction (global double)
+0:176 'doublev' (temp double)
+0:177 add second child into first child (temp 2-component vector of double)
+0:177 'dvec2v' (temp 2-component vector of double)
+0:177 Fraction (global 2-component vector of double)
+0:177 'dvec2v' (temp 2-component vector of double)
+0:178 add second child into first child (temp 3-component vector of double)
+0:178 'dvec3v' (temp 3-component vector of double)
+0:178 Fraction (global 3-component vector of double)
+0:178 'dvec3v' (temp 3-component vector of double)
+0:179 add second child into first child (temp 4-component vector of double)
+0:179 'dvec4v' (temp 4-component vector of double)
+0:179 Fraction (global 4-component vector of double)
+0:179 'dvec4v' (temp 4-component vector of double)
+0:181 add second child into first child (temp double)
+0:181 'doublev' (temp double)
+0:181 mod (global double)
+0:181 'doublev' (temp double)
+0:181 'doublev' (temp double)
+0:182 add second child into first child (temp 2-component vector of double)
+0:182 'dvec2v' (temp 2-component vector of double)
+0:182 mod (global 2-component vector of double)
+0:182 'dvec2v' (temp 2-component vector of double)
+0:182 'doublev' (temp double)
+0:183 add second child into first child (temp 3-component vector of double)
+0:183 'dvec3v' (temp 3-component vector of double)
+0:183 mod (global 3-component vector of double)
+0:183 'dvec3v' (temp 3-component vector of double)
+0:183 'doublev' (temp double)
+0:184 add second child into first child (temp 4-component vector of double)
+0:184 'dvec4v' (temp 4-component vector of double)
+0:184 mod (global 4-component vector of double)
+0:184 'dvec4v' (temp 4-component vector of double)
+0:184 'doublev' (temp double)
+0:185 add second child into first child (temp 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:185 mod (global 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:185 'dvec2v' (temp 2-component vector of double)
+0:186 add second child into first child (temp 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:186 mod (global 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:186 'dvec3v' (temp 3-component vector of double)
+0:187 add second child into first child (temp 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:187 mod (global 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:187 'dvec4v' (temp 4-component vector of double)
+0:189 add second child into first child (temp double)
+0:189 'doublev' (temp double)
+0:189 modf (global double)
+0:189 'doublev' (temp double)
+0:189 'doublev' (temp double)
+0:190 add second child into first child (temp 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:190 modf (global 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:190 'dvec2v' (temp 2-component vector of double)
+0:191 add second child into first child (temp 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:191 modf (global 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:191 'dvec3v' (temp 3-component vector of double)
+0:192 add second child into first child (temp 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:192 modf (global 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:192 'dvec4v' (temp 4-component vector of double)
+0:194 add second child into first child (temp double)
+0:194 'doublev' (temp double)
+0:194 min (global double)
+0:194 'doublev' (temp double)
+0:194 'doublev' (temp double)
+0:195 add second child into first child (temp 2-component vector of double)
+0:195 'dvec2v' (temp 2-component vector of double)
+0:195 min (global 2-component vector of double)
+0:195 'dvec2v' (temp 2-component vector of double)
+0:195 'doublev' (temp double)
+0:196 add second child into first child (temp 3-component vector of double)
+0:196 'dvec3v' (temp 3-component vector of double)
+0:196 min (global 3-component vector of double)
+0:196 'dvec3v' (temp 3-component vector of double)
+0:196 'doublev' (temp double)
+0:197 add second child into first child (temp 4-component vector of double)
+0:197 'dvec4v' (temp 4-component vector of double)
+0:197 min (global 4-component vector of double)
+0:197 'dvec4v' (temp 4-component vector of double)
+0:197 'doublev' (temp double)
+0:198 add second child into first child (temp 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:198 min (global 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:198 'dvec2v' (temp 2-component vector of double)
+0:199 add second child into first child (temp 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:199 min (global 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:199 'dvec3v' (temp 3-component vector of double)
+0:200 add second child into first child (temp 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:200 min (global 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:200 'dvec4v' (temp 4-component vector of double)
+0:202 add second child into first child (temp double)
+0:202 'doublev' (temp double)
+0:202 max (global double)
+0:202 'doublev' (temp double)
+0:202 'doublev' (temp double)
+0:203 add second child into first child (temp 2-component vector of double)
+0:203 'dvec2v' (temp 2-component vector of double)
+0:203 max (global 2-component vector of double)
+0:203 'dvec2v' (temp 2-component vector of double)
+0:203 'doublev' (temp double)
+0:204 add second child into first child (temp 3-component vector of double)
+0:204 'dvec3v' (temp 3-component vector of double)
+0:204 max (global 3-component vector of double)
+0:204 'dvec3v' (temp 3-component vector of double)
+0:204 'doublev' (temp double)
+0:205 add second child into first child (temp 4-component vector of double)
+0:205 'dvec4v' (temp 4-component vector of double)
+0:205 max (global 4-component vector of double)
+0:205 'dvec4v' (temp 4-component vector of double)
+0:205 'doublev' (temp double)
+0:206 add second child into first child (temp 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:206 max (global 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:206 'dvec2v' (temp 2-component vector of double)
+0:207 add second child into first child (temp 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:207 max (global 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:207 'dvec3v' (temp 3-component vector of double)
+0:208 add second child into first child (temp 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:208 max (global 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:208 'dvec4v' (temp 4-component vector of double)
+0:210 add second child into first child (temp double)
+0:210 'doublev' (temp double)
+0:210 clamp (global double)
+0:210 'doublev' (temp double)
+0:210 'doublev' (temp double)
+0:210 'doublev' (temp double)
+0:211 add second child into first child (temp 2-component vector of double)
+0:211 'dvec2v' (temp 2-component vector of double)
+0:211 clamp (global 2-component vector of double)
+0:211 'dvec2v' (temp 2-component vector of double)
+0:211 'doublev' (temp double)
+0:211 'doublev' (temp double)
+0:212 add second child into first child (temp 3-component vector of double)
+0:212 'dvec3v' (temp 3-component vector of double)
+0:212 clamp (global 3-component vector of double)
+0:212 'dvec3v' (temp 3-component vector of double)
+0:212 'doublev' (temp double)
+0:212 'doublev' (temp double)
+0:213 add second child into first child (temp 4-component vector of double)
+0:213 'dvec4v' (temp 4-component vector of double)
+0:213 clamp (global 4-component vector of double)
+0:213 'dvec4v' (temp 4-component vector of double)
+0:213 'doublev' (temp double)
+0:213 'doublev' (temp double)
+0:214 add second child into first child (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 clamp (global 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:214 'dvec2v' (temp 2-component vector of double)
+0:215 add second child into first child (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 clamp (global 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:215 'dvec3v' (temp 3-component vector of double)
+0:216 add second child into first child (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 clamp (global 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:216 'dvec4v' (temp 4-component vector of double)
+0:218 add second child into first child (temp double)
+0:218 'doublev' (temp double)
+0:218 mix (global double)
+0:218 'doublev' (temp double)
+0:218 'doublev' (temp double)
+0:218 'doublev' (temp double)
+0:219 add second child into first child (temp 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 mix (global 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 'dvec2v' (temp 2-component vector of double)
+0:219 'doublev' (temp double)
+0:220 add second child into first child (temp 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 mix (global 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 'dvec3v' (temp 3-component vector of double)
+0:220 'doublev' (temp double)
+0:221 add second child into first child (temp 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 mix (global 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 'dvec4v' (temp 4-component vector of double)
+0:221 'doublev' (temp double)
+0:222 add second child into first child (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 mix (global 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:222 'dvec2v' (temp 2-component vector of double)
+0:223 add second child into first child (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 mix (global 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:223 'dvec3v' (temp 3-component vector of double)
+0:224 add second child into first child (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 mix (global 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:224 'dvec4v' (temp 4-component vector of double)
+0:225 add second child into first child (temp double)
+0:225 'doublev' (temp double)
+0:225 mix (global double)
+0:225 'doublev' (temp double)
+0:225 'doublev' (temp double)
+0:225 'boolv' (temp bool)
+0:226 add second child into first child (temp 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 mix (global 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 'dvec2v' (temp 2-component vector of double)
+0:226 'bvec2v' (temp 2-component vector of bool)
+0:227 add second child into first child (temp 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 mix (global 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 'dvec3v' (temp 3-component vector of double)
+0:227 'bvec3v' (temp 3-component vector of bool)
+0:228 add second child into first child (temp 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 mix (global 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 'dvec4v' (temp 4-component vector of double)
+0:228 'bvec4v' (temp 4-component vector of bool)
+0:230 add second child into first child (temp double)
+0:230 'doublev' (temp double)
+0:230 step (global double)
+0:230 'doublev' (temp double)
+0:230 'doublev' (temp double)
+0:231 add second child into first child (temp 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:231 step (global 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:231 'dvec2v' (temp 2-component vector of double)
+0:232 add second child into first child (temp 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:232 step (global 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:232 'dvec3v' (temp 3-component vector of double)
+0:233 add second child into first child (temp 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:233 step (global 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:233 'dvec4v' (temp 4-component vector of double)
+0:234 add second child into first child (temp 2-component vector of double)
+0:234 'dvec2v' (temp 2-component vector of double)
+0:234 step (global 2-component vector of double)
+0:234 'doublev' (temp double)
+0:234 'dvec2v' (temp 2-component vector of double)
+0:235 add second child into first child (temp 3-component vector of double)
+0:235 'dvec3v' (temp 3-component vector of double)
+0:235 step (global 3-component vector of double)
+0:235 'doublev' (temp double)
+0:235 'dvec3v' (temp 3-component vector of double)
+0:236 add second child into first child (temp 4-component vector of double)
+0:236 'dvec4v' (temp 4-component vector of double)
+0:236 step (global 4-component vector of double)
+0:236 'doublev' (temp double)
+0:236 'dvec4v' (temp 4-component vector of double)
+0:238 add second child into first child (temp double)
+0:238 'doublev' (temp double)
+0:238 smoothstep (global double)
+0:238 'doublev' (temp double)
+0:238 'doublev' (temp double)
+0:238 'doublev' (temp double)
+0:239 add second child into first child (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 smoothstep (global 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:239 'dvec2v' (temp 2-component vector of double)
+0:240 add second child into first child (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 smoothstep (global 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:240 'dvec3v' (temp 3-component vector of double)
+0:241 add second child into first child (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 smoothstep (global 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:241 'dvec4v' (temp 4-component vector of double)
+0:242 add second child into first child (temp 2-component vector of double)
+0:242 'dvec2v' (temp 2-component vector of double)
+0:242 smoothstep (global 2-component vector of double)
+0:242 'doublev' (temp double)
+0:242 'doublev' (temp double)
+0:242 'dvec2v' (temp 2-component vector of double)
+0:243 add second child into first child (temp 3-component vector of double)
+0:243 'dvec3v' (temp 3-component vector of double)
+0:243 smoothstep (global 3-component vector of double)
+0:243 'doublev' (temp double)
+0:243 'doublev' (temp double)
+0:243 'dvec3v' (temp 3-component vector of double)
+0:244 add second child into first child (temp 4-component vector of double)
+0:244 'dvec4v' (temp 4-component vector of double)
+0:244 smoothstep (global 4-component vector of double)
+0:244 'doublev' (temp double)
+0:244 'doublev' (temp double)
+0:244 'dvec4v' (temp 4-component vector of double)
+0:246 move second child to first child (temp bool)
+0:246 'boolv' (temp bool)
+0:246 isnan (global bool)
+0:246 'doublev' (temp double)
+0:247 move second child to first child (temp 2-component vector of bool)
+0:247 'bvec2v' (temp 2-component vector of bool)
+0:247 isnan (global 2-component vector of bool)
+0:247 'dvec2v' (temp 2-component vector of double)
+0:248 move second child to first child (temp 3-component vector of bool)
+0:248 'bvec3v' (temp 3-component vector of bool)
+0:248 isnan (global 3-component vector of bool)
+0:248 'dvec3v' (temp 3-component vector of double)
+0:249 move second child to first child (temp 4-component vector of bool)
+0:249 'bvec4v' (temp 4-component vector of bool)
+0:249 isnan (global 4-component vector of bool)
+0:249 'dvec4v' (temp 4-component vector of double)
+0:251 move second child to first child (temp bool)
+0:251 'boolv' (temp bool)
+0:251 Test condition and select (temp bool)
+0:251 Condition
+0:251 'boolv' (temp bool)
+0:251 true case
+0:251 isinf (global bool)
+0:251 'doublev' (temp double)
+0:251 false case
+0:251 Constant:
+0:251 false (const bool)
+0:252 move second child to first child (temp 2-component vector of bool)
+0:252 'bvec2v' (temp 2-component vector of bool)
+0:252 Test condition and select (temp 2-component vector of bool)
+0:252 Condition
+0:252 'boolv' (temp bool)
+0:252 true case
+0:252 isinf (global 2-component vector of bool)
+0:252 'dvec2v' (temp 2-component vector of double)
+0:252 false case
+0:252 Constant:
+0:252 false (const bool)
+0:252 false (const bool)
+0:253 move second child to first child (temp 3-component vector of bool)
+0:253 'bvec3v' (temp 3-component vector of bool)
+0:253 Test condition and select (temp 3-component vector of bool)
+0:253 Condition
+0:253 'boolv' (temp bool)
+0:253 true case
+0:253 isinf (global 3-component vector of bool)
+0:253 'dvec3v' (temp 3-component vector of double)
+0:253 false case
+0:253 Constant:
+0:253 false (const bool)
+0:253 false (const bool)
+0:253 false (const bool)
+0:254 move second child to first child (temp 4-component vector of bool)
+0:254 'bvec4v' (temp 4-component vector of bool)
+0:254 Test condition and select (temp 4-component vector of bool)
+0:254 Condition
+0:254 'boolv' (temp bool)
+0:254 true case
+0:254 isinf (global 4-component vector of bool)
+0:254 'dvec4v' (temp 4-component vector of double)
+0:254 false case
+0:254 Constant:
+0:254 false (const bool)
+0:254 false (const bool)
+0:254 false (const bool)
+0:254 false (const bool)
+0:256 add second child into first child (temp double)
+0:256 'doublev' (temp double)
+0:256 length (global double)
+0:256 'doublev' (temp double)
+0:257 add second child into first child (temp double)
+0:257 'doublev' (temp double)
+0:257 length (global double)
+0:257 'dvec2v' (temp 2-component vector of double)
+0:258 add second child into first child (temp double)
+0:258 'doublev' (temp double)
+0:258 length (global double)
+0:258 'dvec3v' (temp 3-component vector of double)
+0:259 add second child into first child (temp double)
+0:259 'doublev' (temp double)
+0:259 length (global double)
+0:259 'dvec4v' (temp 4-component vector of double)
+0:261 add second child into first child (temp double)
+0:261 'doublev' (temp double)
+0:261 distance (global double)
+0:261 'doublev' (temp double)
+0:261 'doublev' (temp double)
+0:262 add second child into first child (temp double)
+0:262 'doublev' (temp double)
+0:262 distance (global double)
+0:262 'dvec2v' (temp 2-component vector of double)
+0:262 'dvec2v' (temp 2-component vector of double)
+0:263 add second child into first child (temp double)
+0:263 'doublev' (temp double)
+0:263 distance (global double)
+0:263 'dvec3v' (temp 3-component vector of double)
+0:263 'dvec3v' (temp 3-component vector of double)
+0:264 add second child into first child (temp double)
+0:264 'doublev' (temp double)
+0:264 distance (global double)
+0:264 'dvec4v' (temp 4-component vector of double)
+0:264 'dvec4v' (temp 4-component vector of double)
+0:266 add second child into first child (temp double)
+0:266 'doublev' (temp double)
+0:266 dot-product (global double)
+0:266 'doublev' (temp double)
+0:266 'doublev' (temp double)
+0:267 add second child into first child (temp double)
+0:267 'doublev' (temp double)
+0:267 dot-product (global double)
+0:267 'dvec2v' (temp 2-component vector of double)
+0:267 'dvec2v' (temp 2-component vector of double)
+0:268 add second child into first child (temp double)
+0:268 'doublev' (temp double)
+0:268 dot-product (global double)
+0:268 'dvec3v' (temp 3-component vector of double)
+0:268 'dvec3v' (temp 3-component vector of double)
+0:269 add second child into first child (temp double)
+0:269 'doublev' (temp double)
+0:269 dot-product (global double)
+0:269 'dvec4v' (temp 4-component vector of double)
+0:269 'dvec4v' (temp 4-component vector of double)
+0:271 add second child into first child (temp 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:271 cross-product (global 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:271 'dvec3v' (temp 3-component vector of double)
+0:273 add second child into first child (temp double)
+0:273 'doublev' (temp double)
+0:273 normalize (global double)
+0:273 'doublev' (temp double)
+0:274 add second child into first child (temp 2-component vector of double)
+0:274 'dvec2v' (temp 2-component vector of double)
+0:274 normalize (global 2-component vector of double)
+0:274 'dvec2v' (temp 2-component vector of double)
+0:275 add second child into first child (temp 3-component vector of double)
+0:275 'dvec3v' (temp 3-component vector of double)
+0:275 normalize (global 3-component vector of double)
+0:275 'dvec3v' (temp 3-component vector of double)
+0:276 add second child into first child (temp 4-component vector of double)
+0:276 'dvec4v' (temp 4-component vector of double)
+0:276 normalize (global 4-component vector of double)
+0:276 'dvec4v' (temp 4-component vector of double)
+0:278 add second child into first child (temp double)
+0:278 'doublev' (temp double)
+0:278 face-forward (global double)
+0:278 'doublev' (temp double)
+0:278 'doublev' (temp double)
+0:278 'doublev' (temp double)
+0:279 add second child into first child (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 face-forward (global 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:279 'dvec2v' (temp 2-component vector of double)
+0:280 add second child into first child (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 face-forward (global 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:280 'dvec3v' (temp 3-component vector of double)
+0:281 add second child into first child (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 face-forward (global 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:281 'dvec4v' (temp 4-component vector of double)
+0:283 add second child into first child (temp double)
+0:283 'doublev' (temp double)
+0:283 reflect (global double)
+0:283 'doublev' (temp double)
+0:283 'doublev' (temp double)
+0:284 add second child into first child (temp 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:284 reflect (global 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:284 'dvec2v' (temp 2-component vector of double)
+0:285 add second child into first child (temp 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:285 reflect (global 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:285 'dvec3v' (temp 3-component vector of double)
+0:286 add second child into first child (temp 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:286 reflect (global 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:286 'dvec4v' (temp 4-component vector of double)
+0:288 add second child into first child (temp double)
+0:288 'doublev' (temp double)
+0:288 refract (global double)
+0:288 'doublev' (temp double)
+0:288 'doublev' (temp double)
+0:288 'doublev' (temp double)
+0:289 add second child into first child (temp 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 refract (global 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 'dvec2v' (temp 2-component vector of double)
+0:289 'doublev' (temp double)
+0:290 add second child into first child (temp 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 refract (global 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 'dvec3v' (temp 3-component vector of double)
+0:290 'doublev' (temp double)
+0:291 add second child into first child (temp 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 refract (global 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 'dvec4v' (temp 4-component vector of double)
+0:291 'doublev' (temp double)
+0:293 Sequence
+0:293 move second child to first child (temp 2X2 matrix of double)
+0:293 'dmat2v' (temp 2X2 matrix of double)
+0:293 outer product (global 2X2 matrix of double)
+0:293 'dvec2v' (temp 2-component vector of double)
+0:293 'dvec2v' (temp 2-component vector of double)
+0:294 Sequence
+0:294 move second child to first child (temp 3X3 matrix of double)
+0:294 'dmat3v' (temp 3X3 matrix of double)
+0:294 outer product (global 3X3 matrix of double)
+0:294 'dvec3v' (temp 3-component vector of double)
+0:294 'dvec3v' (temp 3-component vector of double)
+0:295 Sequence
+0:295 move second child to first child (temp 4X4 matrix of double)
+0:295 'dmat4v' (temp 4X4 matrix of double)
+0:295 outer product (global 4X4 matrix of double)
+0:295 'dvec4v' (temp 4-component vector of double)
+0:295 'dvec4v' (temp 4-component vector of double)
+0:296 Sequence
+0:296 move second child to first child (temp 2X3 matrix of double)
+0:296 'dmat2x3v' (temp 2X3 matrix of double)
+0:296 outer product (global 2X3 matrix of double)
+0:296 'dvec3v' (temp 3-component vector of double)
+0:296 'dvec2v' (temp 2-component vector of double)
+0:297 Sequence
+0:297 move second child to first child (temp 3X2 matrix of double)
+0:297 'dmat3x2v' (temp 3X2 matrix of double)
+0:297 outer product (global 3X2 matrix of double)
+0:297 'dvec2v' (temp 2-component vector of double)
+0:297 'dvec3v' (temp 3-component vector of double)
+0:298 Sequence
+0:298 move second child to first child (temp 2X4 matrix of double)
+0:298 'dmat2x4v' (temp 2X4 matrix of double)
+0:298 outer product (global 2X4 matrix of double)
+0:298 'dvec4v' (temp 4-component vector of double)
+0:298 'dvec2v' (temp 2-component vector of double)
+0:299 Sequence
+0:299 move second child to first child (temp 4X2 matrix of double)
+0:299 'dmat4x2v' (temp 4X2 matrix of double)
+0:299 outer product (global 4X2 matrix of double)
+0:299 'dvec2v' (temp 2-component vector of double)
+0:299 'dvec4v' (temp 4-component vector of double)
+0:300 Sequence
+0:300 move second child to first child (temp 3X4 matrix of double)
+0:300 'dmat3x4v' (temp 3X4 matrix of double)
+0:300 outer product (global 3X4 matrix of double)
+0:300 'dvec4v' (temp 4-component vector of double)
+0:300 'dvec3v' (temp 3-component vector of double)
+0:301 Sequence
+0:301 move second child to first child (temp 4X3 matrix of double)
+0:301 'dmat4x3v' (temp 4X3 matrix of double)
+0:301 outer product (global 4X3 matrix of double)
+0:301 'dvec3v' (temp 3-component vector of double)
+0:301 'dvec4v' (temp 4-component vector of double)
+0:303 matrix mult second child into first child (temp 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:303 component-wise multiply (global 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:303 'dmat2v' (temp 2X2 matrix of double)
+0:304 matrix mult second child into first child (temp 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:304 component-wise multiply (global 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:304 'dmat3v' (temp 3X3 matrix of double)
+0:305 matrix mult second child into first child (temp 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:305 component-wise multiply (global 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:305 'dmat4v' (temp 4X4 matrix of double)
+0:306 move second child to first child (temp 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:306 component-wise multiply (global 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:306 'dmat2x3v' (temp 2X3 matrix of double)
+0:307 move second child to first child (temp 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:307 component-wise multiply (global 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:307 'dmat2x4v' (temp 2X4 matrix of double)
+0:308 move second child to first child (temp 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:308 component-wise multiply (global 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:308 'dmat3x2v' (temp 3X2 matrix of double)
+0:309 move second child to first child (temp 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:309 component-wise multiply (global 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:309 'dmat3x4v' (temp 3X4 matrix of double)
+0:310 move second child to first child (temp 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:310 component-wise multiply (global 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:310 'dmat4x2v' (temp 4X2 matrix of double)
+0:311 move second child to first child (temp 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:311 component-wise multiply (global 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:311 'dmat4x3v' (temp 4X3 matrix of double)
+0:313 matrix mult second child into first child (temp 2X2 matrix of double)
+0:313 'dmat2v' (temp 2X2 matrix of double)
+0:313 transpose (global 2X2 matrix of double)
+0:313 'dmat2v' (temp 2X2 matrix of double)
+0:314 matrix mult second child into first child (temp 3X3 matrix of double)
+0:314 'dmat3v' (temp 3X3 matrix of double)
+0:314 transpose (global 3X3 matrix of double)
+0:314 'dmat3v' (temp 3X3 matrix of double)
+0:315 matrix mult second child into first child (temp 4X4 matrix of double)
+0:315 'dmat4v' (temp 4X4 matrix of double)
+0:315 transpose (global 4X4 matrix of double)
+0:315 'dmat4v' (temp 4X4 matrix of double)
+0:316 move second child to first child (temp 2X3 matrix of double)
+0:316 'dmat2x3v' (temp 2X3 matrix of double)
+0:316 transpose (global 2X3 matrix of double)
+0:316 'dmat3x2v' (temp 3X2 matrix of double)
+0:317 move second child to first child (temp 3X2 matrix of double)
+0:317 'dmat3x2v' (temp 3X2 matrix of double)
+0:317 transpose (global 3X2 matrix of double)
+0:317 'dmat2x3v' (temp 2X3 matrix of double)
+0:318 move second child to first child (temp 2X4 matrix of double)
+0:318 'dmat2x4v' (temp 2X4 matrix of double)
+0:318 transpose (global 2X4 matrix of double)
+0:318 'dmat4x2v' (temp 4X2 matrix of double)
+0:319 move second child to first child (temp 4X2 matrix of double)
+0:319 'dmat4x2v' (temp 4X2 matrix of double)
+0:319 transpose (global 4X2 matrix of double)
+0:319 'dmat2x4v' (temp 2X4 matrix of double)
+0:320 move second child to first child (temp 3X4 matrix of double)
+0:320 'dmat3x4v' (temp 3X4 matrix of double)
+0:320 transpose (global 3X4 matrix of double)
+0:320 'dmat4x3v' (temp 4X3 matrix of double)
+0:321 move second child to first child (temp 4X3 matrix of double)
+0:321 'dmat4x3v' (temp 4X3 matrix of double)
+0:321 transpose (global 4X3 matrix of double)
+0:321 'dmat3x4v' (temp 3X4 matrix of double)
+0:323 add second child into first child (temp double)
+0:323 'doublev' (temp double)
+0:323 determinant (global double)
+0:323 'dmat2v' (temp 2X2 matrix of double)
+0:324 add second child into first child (temp double)
+0:324 'doublev' (temp double)
+0:324 determinant (global double)
+0:324 'dmat3v' (temp 3X3 matrix of double)
+0:325 add second child into first child (temp double)
+0:325 'doublev' (temp double)
+0:325 determinant (global double)
+0:325 'dmat4v' (temp 4X4 matrix of double)
+0:327 matrix mult second child into first child (temp 2X2 matrix of double)
+0:327 'dmat2v' (temp 2X2 matrix of double)
+0:327 inverse (global 2X2 matrix of double)
+0:327 'dmat2v' (temp 2X2 matrix of double)
+0:328 matrix mult second child into first child (temp 3X3 matrix of double)
+0:328 'dmat3v' (temp 3X3 matrix of double)
+0:328 inverse (global 3X3 matrix of double)
+0:328 'dmat3v' (temp 3X3 matrix of double)
+0:329 matrix mult second child into first child (temp 4X4 matrix of double)
+0:329 'dmat4v' (temp 4X4 matrix of double)
+0:329 inverse (global 4X4 matrix of double)
+0:329 'dmat4v' (temp 4X4 matrix of double)
0:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a})
0:? 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize})
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 125
+// Id's are bound by 1104
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 11 44 50 56 69 96 117 119
+ EntryPoint Fragment 4 "main" 13 1025 1031 1036 1048 1074 1095 1097
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"
Name 4 "main"
Name 6 "foo23("
- Name 11 "outp"
- Name 15 "u2drs"
- Name 36 "v"
- Name 42 "arrayedSampler"
- Name 44 "i"
- Name 50 "c2D"
- Name 56 "gl_ClipDistance"
- Name 69 "uoutp"
- Name 73 "samp2dr"
- Name 96 "ioutp"
- Name 100 "isamp2DA"
- Name 117 "gl_FragCoord"
- Name 119 "vl2"
- Decorate 44(i) Flat
- Decorate 56(gl_ClipDistance) BuiltIn ClipDistance
- Decorate 117(gl_FragCoord) BuiltIn FragCoord
- Decorate 119(vl2) Location 6
+ Name 8 "doubles("
+ Name 13 "outp"
+ Name 17 "u2drs"
+ Name 39 "doublev"
+ Name 43 "dvec2v"
+ Name 48 "dvec3v"
+ Name 53 "dvec4v"
+ Name 428 "boolv"
+ Name 437 "bvec2v"
+ Name 446 "bvec3v"
+ Name 455 "bvec4v"
+ Name 737 "dmat2v"
+ Name 743 "dmat3v"
+ Name 749 "dmat4v"
+ Name 755 "dmat2x3v"
+ Name 761 "dmat3x2v"
+ Name 767 "dmat2x4v"
+ Name 773 "dmat4x2v"
+ Name 779 "dmat3x4v"
+ Name 785 "dmat4x3v"
+ Name 1017 "v"
+ Name 1023 "arrayedSampler"
+ Name 1025 "i"
+ Name 1031 "c2D"
+ Name 1036 "gl_ClipDistance"
+ Name 1048 "uoutp"
+ Name 1052 "samp2dr"
+ Name 1074 "ioutp"
+ Name 1078 "isamp2DA"
+ Name 1095 "gl_FragCoord"
+ Name 1097 "vl2"
+ Decorate 1025(i) Flat
+ Decorate 1036(gl_ClipDistance) BuiltIn ClipDistance
+ Decorate 1095(gl_FragCoord) BuiltIn FragCoord
+ Decorate 1097(vl2) Location 6
2: TypeVoid
3: TypeFunction 2
- 8: TypeFloat 32
- 9: TypeVector 8(float) 4
- 10: TypePointer Output 9(fvec4)
- 11(outp): 10(ptr) Variable Output
- 12: TypeImage 8(float) Rect depth sampled format:Unknown
- 13: TypeSampledImage 12
- 14: TypePointer UniformConstant 13
- 15(u2drs): 14(ptr) Variable UniformConstant
- 18: TypeVector 8(float) 2
- 19: 8(float) Constant 0
- 20: 18(fvec2) ConstantComposite 19 19
- 21: TypeInt 32 1
- 22: TypeVector 21(int) 2
- 23: 21(int) Constant 3
- 24: 21(int) Constant 4
- 25: 22(ivec2) ConstantComposite 23 24
- 28: TypeInt 32 0
- 29: 28(int) Constant 0
- 30: TypePointer Output 8(float)
- 35: TypePointer Function 9(fvec4)
- 37: TypeImage 8(float) 2D sampled format:Unknown
- 38: TypeSampledImage 37
- 39: 28(int) Constant 5
- 40: TypeArray 38 39
- 41: TypePointer UniformConstant 40
-42(arrayedSampler): 41(ptr) Variable UniformConstant
- 43: TypePointer Input 21(int)
- 44(i): 43(ptr) Variable Input
- 46: TypePointer UniformConstant 38
- 49: TypePointer Input 18(fvec2)
- 50(c2D): 49(ptr) Variable Input
- 53: 28(int) Constant 2
- 54: TypeArray 8(float) 53
- 55: TypePointer Input 54
-56(gl_ClipDistance): 55(ptr) Variable Input
- 57: 21(int) Constant 1
- 58: TypePointer Input 8(float)
- 62: TypeVector 8(float) 3
- 67: TypeVector 28(int) 4
- 68: TypePointer Output 67(ivec4)
- 69(uoutp): 68(ptr) Variable Output
- 70: TypeImage 28(int) Rect sampled format:Unknown
- 71: TypeSampledImage 70
- 72: TypePointer UniformConstant 71
- 73(samp2dr): 72(ptr) Variable UniformConstant
- 76: 28(int) Constant 4
- 77: TypeArray 22(ivec2) 76
- 78: 21(int) Constant 2
- 79: 22(ivec2) ConstantComposite 57 78
- 80: 21(int) Constant 15
- 81: 21(int) Constant 16
- 82: 22(ivec2) ConstantComposite 80 81
- 83: 21(int) Constant 4294967294
- 84: 21(int) Constant 0
- 85: 22(ivec2) ConstantComposite 83 84
- 86: 77 ConstantComposite 79 25 82 85
- 94: TypeVector 21(int) 4
- 95: TypePointer Output 94(ivec4)
- 96(ioutp): 95(ptr) Variable Output
- 97: TypeImage 21(int) 2D array sampled format:Unknown
- 98: TypeSampledImage 97
- 99: TypePointer UniformConstant 98
- 100(isamp2DA): 99(ptr) Variable UniformConstant
- 102: 8(float) Constant 1036831949
- 103: 62(fvec3) ConstantComposite 102 102 102
- 104: 22(ivec2) ConstantComposite 57 57
- 116: TypePointer Input 9(fvec4)
-117(gl_FragCoord): 116(ptr) Variable Input
- 119(vl2): 116(ptr) Variable Input
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypePointer Output 11(fvec4)
+ 13(outp): 12(ptr) Variable Output
+ 14: TypeImage 10(float) Rect depth sampled format:Unknown
+ 15: TypeSampledImage 14
+ 16: TypePointer UniformConstant 15
+ 17(u2drs): 16(ptr) Variable UniformConstant
+ 20: TypeVector 10(float) 2
+ 21: 10(float) Constant 0
+ 22: 20(fvec2) ConstantComposite 21 21
+ 23: TypeInt 32 1
+ 24: TypeVector 23(int) 2
+ 25: 23(int) Constant 3
+ 26: 23(int) Constant 4
+ 27: 24(ivec2) ConstantComposite 25 26
+ 30: TypeInt 32 0
+ 31: 30(int) Constant 0
+ 32: TypePointer Output 10(float)
+ 37: TypeFloat 64
+ 38: TypePointer Function 37(float)
+ 40: 37(float) Constant 2507418074 1073430332
+ 41: TypeVector 37(float) 2
+ 42: TypePointer Function 41(fvec2)
+ 44: 37(float) Constant 796182188 1073367658
+ 45: 41(fvec2) ConstantComposite 44 44
+ 46: TypeVector 37(float) 3
+ 47: TypePointer Function 46(fvec3)
+ 49: 37(float) Constant 1719614413 1073127582
+ 50: 46(fvec3) ConstantComposite 49 49 49
+ 51: TypeVector 37(float) 4
+ 52: TypePointer Function 51(fvec4)
+ 426: TypeBool
+ 427: TypePointer Function 426(bool)
+ 435: TypeVector 426(bool) 2
+ 436: TypePointer Function 435(bvec2)
+ 444: TypeVector 426(bool) 3
+ 445: TypePointer Function 444(bvec3)
+ 453: TypeVector 426(bool) 4
+ 454: TypePointer Function 453(bvec4)
+ 561: 426(bool) ConstantFalse
+ 570: 435(bvec2) ConstantComposite 561 561
+ 579: 444(bvec3) ConstantComposite 561 561 561
+ 588: 453(bvec4) ConstantComposite 561 561 561 561
+ 735: TypeMatrix 41(fvec2) 2
+ 736: TypePointer Function 735
+ 741: TypeMatrix 46(fvec3) 3
+ 742: TypePointer Function 741
+ 747: TypeMatrix 51(fvec4) 4
+ 748: TypePointer Function 747
+ 753: TypeMatrix 46(fvec3) 2
+ 754: TypePointer Function 753
+ 759: TypeMatrix 41(fvec2) 3
+ 760: TypePointer Function 759
+ 765: TypeMatrix 51(fvec4) 2
+ 766: TypePointer Function 765
+ 771: TypeMatrix 41(fvec2) 4
+ 772: TypePointer Function 771
+ 777: TypeMatrix 51(fvec4) 3
+ 778: TypePointer Function 777
+ 783: TypeMatrix 46(fvec3) 4
+ 784: TypePointer Function 783
+ 952: 30(int) Constant 1
+ 956: 30(int) Constant 2
+ 960: 30(int) Constant 3
+ 964: 23(int) Constant 1
+ 968: 23(int) Constant 2
+ 994: 10(float) Constant 1065353216
+ 1016: TypePointer Function 11(fvec4)
+ 1018: TypeImage 10(float) 2D sampled format:Unknown
+ 1019: TypeSampledImage 1018
+ 1020: 30(int) Constant 5
+ 1021: TypeArray 1019 1020
+ 1022: TypePointer UniformConstant 1021
+1023(arrayedSampler): 1022(ptr) Variable UniformConstant
+ 1024: TypePointer Input 23(int)
+ 1025(i): 1024(ptr) Variable Input
+ 1027: TypePointer UniformConstant 1019
+ 1030: TypePointer Input 20(fvec2)
+ 1031(c2D): 1030(ptr) Variable Input
+ 1034: TypeArray 10(float) 956
+ 1035: TypePointer Input 1034
+1036(gl_ClipDistance): 1035(ptr) Variable Input
+ 1037: TypePointer Input 10(float)
+ 1041: TypeVector 10(float) 3
+ 1046: TypeVector 30(int) 4
+ 1047: TypePointer Output 1046(ivec4)
+ 1048(uoutp): 1047(ptr) Variable Output
+ 1049: TypeImage 30(int) Rect sampled format:Unknown
+ 1050: TypeSampledImage 1049
+ 1051: TypePointer UniformConstant 1050
+ 1052(samp2dr): 1051(ptr) Variable UniformConstant
+ 1055: 30(int) Constant 4
+ 1056: TypeArray 24(ivec2) 1055
+ 1057: 24(ivec2) ConstantComposite 964 968
+ 1058: 23(int) Constant 15
+ 1059: 23(int) Constant 16
+ 1060: 24(ivec2) ConstantComposite 1058 1059
+ 1061: 23(int) Constant 4294967294
+ 1062: 23(int) Constant 0
+ 1063: 24(ivec2) ConstantComposite 1061 1062
+ 1064: 1056 ConstantComposite 1057 27 1060 1063
+ 1072: TypeVector 23(int) 4
+ 1073: TypePointer Output 1072(ivec4)
+ 1074(ioutp): 1073(ptr) Variable Output
+ 1075: TypeImage 23(int) 2D array sampled format:Unknown
+ 1076: TypeSampledImage 1075
+ 1077: TypePointer UniformConstant 1076
+ 1078(isamp2DA): 1077(ptr) Variable UniformConstant
+ 1080: 10(float) Constant 1036831949
+ 1081: 1041(fvec3) ConstantComposite 1080 1080 1080
+ 1082: 24(ivec2) ConstantComposite 964 964
+ 1094: TypePointer Input 11(fvec4)
+1095(gl_FragCoord): 1094(ptr) Variable Input
+ 1097(vl2): 1094(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 36(v): 35(ptr) Variable Function
- 45: 21(int) Load 44(i)
- 47: 46(ptr) AccessChain 42(arrayedSampler) 45
- 48: 38 Load 47
- 51: 18(fvec2) Load 50(c2D)
- 52: 9(fvec4) ImageSampleImplicitLod 48 51
- Store 36(v) 52
- 59: 58(ptr) AccessChain 56(gl_ClipDistance) 57
- 60: 8(float) Load 59
- 61: 30(ptr) AccessChain 11(outp) 29
- Store 61 60
- 63: 9(fvec4) Load 36(v)
- 64: 62(fvec3) VectorShuffle 63 63 1 2 3
- 65: 9(fvec4) Load 11(outp)
- 66: 9(fvec4) VectorShuffle 65 64 0 4 5 6
- Store 11(outp) 66
- 74: 71 Load 73(samp2dr)
- 75: 18(fvec2) Load 50(c2D)
- 87: 67(ivec4) ImageGather 74 75 78 ConstOffsets 86
- Store 69(uoutp) 87
- 88: 46(ptr) AccessChain 42(arrayedSampler) 84
- 89: 38 Load 88
- 90: 18(fvec2) Load 50(c2D)
- 91: 9(fvec4) ImageGather 89 90 84
- 92: 9(fvec4) Load 11(outp)
- 93: 9(fvec4) FAdd 92 91
- Store 11(outp) 93
- 101: 98 Load 100(isamp2DA)
- 105: 94(ivec4) ImageGather 101 103 23 ConstOffset 104
- Store 96(ioutp) 105
- 106: 98 Load 100(isamp2DA)
- 107: 94(ivec4) ImageGather 106 103 23 ConstOffset 104
- 108: 94(ivec4) Load 96(ioutp)
- 109: 94(ivec4) IAdd 108 107
- Store 96(ioutp) 109
- 110: 98 Load 100(isamp2DA)
- 111: 21(int) Load 44(i)
- 112: 22(ivec2) CompositeConstruct 111 111
- 113: 94(ivec4) ImageGather 110 103 84 Offset 112
- 114: 94(ivec4) Load 96(ioutp)
- 115: 94(ivec4) IAdd 114 113
- Store 96(ioutp) 115
- 118: 9(fvec4) Load 117(gl_FragCoord)
- 120: 9(fvec4) Load 119(vl2)
- 121: 9(fvec4) FAdd 118 120
- 122: 9(fvec4) Load 11(outp)
- 123: 9(fvec4) FAdd 122 121
- Store 11(outp) 123
- 124: 2 FunctionCall 6(foo23()
+ 1017(v): 1016(ptr) Variable Function
+ 1026: 23(int) Load 1025(i)
+ 1028: 1027(ptr) AccessChain 1023(arrayedSampler) 1026
+ 1029: 1019 Load 1028
+ 1032: 20(fvec2) Load 1031(c2D)
+ 1033: 11(fvec4) ImageSampleImplicitLod 1029 1032
+ Store 1017(v) 1033
+ 1038: 1037(ptr) AccessChain 1036(gl_ClipDistance) 964
+ 1039: 10(float) Load 1038
+ 1040: 32(ptr) AccessChain 13(outp) 31
+ Store 1040 1039
+ 1042: 11(fvec4) Load 1017(v)
+ 1043: 1041(fvec3) VectorShuffle 1042 1042 1 2 3
+ 1044: 11(fvec4) Load 13(outp)
+ 1045: 11(fvec4) VectorShuffle 1044 1043 0 4 5 6
+ Store 13(outp) 1045
+ 1053: 1050 Load 1052(samp2dr)
+ 1054: 20(fvec2) Load 1031(c2D)
+ 1065: 1046(ivec4) ImageGather 1053 1054 968 ConstOffsets 1064
+ Store 1048(uoutp) 1065
+ 1066: 1027(ptr) AccessChain 1023(arrayedSampler) 1062
+ 1067: 1019 Load 1066
+ 1068: 20(fvec2) Load 1031(c2D)
+ 1069: 11(fvec4) ImageGather 1067 1068 1062
+ 1070: 11(fvec4) Load 13(outp)
+ 1071: 11(fvec4) FAdd 1070 1069
+ Store 13(outp) 1071
+ 1079: 1076 Load 1078(isamp2DA)
+ 1083: 1072(ivec4) ImageGather 1079 1081 25 ConstOffset 1082
+ Store 1074(ioutp) 1083
+ 1084: 1076 Load 1078(isamp2DA)
+ 1085: 1072(ivec4) ImageGather 1084 1081 25 ConstOffset 1082
+ 1086: 1072(ivec4) Load 1074(ioutp)
+ 1087: 1072(ivec4) IAdd 1086 1085
+ Store 1074(ioutp) 1087
+ 1088: 1076 Load 1078(isamp2DA)
+ 1089: 23(int) Load 1025(i)
+ 1090: 24(ivec2) CompositeConstruct 1089 1089
+ 1091: 1072(ivec4) ImageGather 1088 1081 1062 Offset 1090
+ 1092: 1072(ivec4) Load 1074(ioutp)
+ 1093: 1072(ivec4) IAdd 1092 1091
+ Store 1074(ioutp) 1093
+ 1096: 11(fvec4) Load 1095(gl_FragCoord)
+ 1098: 11(fvec4) Load 1097(vl2)
+ 1099: 11(fvec4) FAdd 1096 1098
+ 1100: 11(fvec4) Load 13(outp)
+ 1101: 11(fvec4) FAdd 1100 1099
+ Store 13(outp) 1101
+ 1102: 2 FunctionCall 6(foo23()
+ 1103: 2 FunctionCall 8(doubles()
Return
FunctionEnd
6(foo23(): 2 Function None 3
7: Label
- 16: 13 Load 15(u2drs)
- 17: 9(fvec4) Load 11(outp)
- 26: 8(float) CompositeExtract 17 2
- 27: 8(float) ImageSampleProjDrefExplicitLod 16 17 26 Grad ConstOffset 20 20 25
- 31: 30(ptr) AccessChain 11(outp) 29
- 32: 8(float) Load 31
- 33: 8(float) FAdd 32 27
- 34: 30(ptr) AccessChain 11(outp) 29
- Store 34 33
+ 18: 15 Load 17(u2drs)
+ 19: 11(fvec4) Load 13(outp)
+ 28: 10(float) CompositeExtract 19 2
+ 29: 10(float) ImageSampleProjDrefExplicitLod 18 19 28 Grad ConstOffset 22 22 27
+ 33: 32(ptr) AccessChain 13(outp) 31
+ 34: 10(float) Load 33
+ 35: 10(float) FAdd 34 29
+ 36: 32(ptr) AccessChain 13(outp) 31
+ Store 36 35
+ Return
+ FunctionEnd
+ 8(doubles(): 2 Function None 3
+ 9: Label
+ 39(doublev): 38(ptr) Variable Function
+ 43(dvec2v): 42(ptr) Variable Function
+ 48(dvec3v): 47(ptr) Variable Function
+ 53(dvec4v): 52(ptr) Variable Function
+ 428(boolv): 427(ptr) Variable Function
+ 437(bvec2v): 436(ptr) Variable Function
+ 446(bvec3v): 445(ptr) Variable Function
+ 455(bvec4v): 454(ptr) Variable Function
+ 554: 427(ptr) Variable Function
+ 563: 436(ptr) Variable Function
+ 572: 445(ptr) Variable Function
+ 581: 454(ptr) Variable Function
+ 737(dmat2v): 736(ptr) Variable Function
+ 743(dmat3v): 742(ptr) Variable Function
+ 749(dmat4v): 748(ptr) Variable Function
+ 755(dmat2x3v): 754(ptr) Variable Function
+ 761(dmat3x2v): 760(ptr) Variable Function
+ 767(dmat2x4v): 766(ptr) Variable Function
+ 773(dmat4x2v): 772(ptr) Variable Function
+ 779(dmat3x4v): 778(ptr) Variable Function
+ 785(dmat4x3v): 784(ptr) Variable Function
+ Store 39(doublev) 40
+ Store 43(dvec2v) 45
+ Store 48(dvec3v) 50
+ 54: 37(float) Load 39(doublev)
+ 55: 51(fvec4) CompositeConstruct 54 54 54 54
+ 56: 51(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 55
+ Store 53(dvec4v) 56
+ 57: 37(float) Load 39(doublev)
+ 58: 37(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 57
+ 59: 37(float) Load 39(doublev)
+ 60: 37(float) FAdd 59 58
+ Store 39(doublev) 60
+ 61: 41(fvec2) Load 43(dvec2v)
+ 62: 41(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 61
+ 63: 41(fvec2) Load 43(dvec2v)
+ 64: 41(fvec2) FAdd 63 62
+ Store 43(dvec2v) 64
+ 65: 46(fvec3) Load 48(dvec3v)
+ 66: 46(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 65
+ 67: 46(fvec3) Load 48(dvec3v)
+ 68: 46(fvec3) FAdd 67 66
+ Store 48(dvec3v) 68
+ 69: 51(fvec4) Load 53(dvec4v)
+ 70: 51(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 69
+ 71: 51(fvec4) Load 53(dvec4v)
+ 72: 51(fvec4) FAdd 71 70
+ Store 53(dvec4v) 72
+ 73: 37(float) Load 39(doublev)
+ 74: 37(float) ExtInst 1(GLSL.std.450) 4(FAbs) 73
+ 75: 37(float) Load 39(doublev)
+ 76: 37(float) FAdd 75 74
+ Store 39(doublev) 76
+ 77: 41(fvec2) Load 43(dvec2v)
+ 78: 41(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 77
+ 79: 41(fvec2) Load 43(dvec2v)
+ 80: 41(fvec2) FAdd 79 78
+ Store 43(dvec2v) 80
+ 81: 46(fvec3) Load 48(dvec3v)
+ 82: 46(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 81
+ 83: 46(fvec3) Load 48(dvec3v)
+ 84: 46(fvec3) FAdd 83 82
+ Store 48(dvec3v) 84
+ 85: 51(fvec4) Load 53(dvec4v)
+ 86: 51(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 85
+ 87: 51(fvec4) Load 53(dvec4v)
+ 88: 51(fvec4) FAdd 87 86
+ Store 53(dvec4v) 88
+ 89: 37(float) Load 39(doublev)
+ 90: 37(float) ExtInst 1(GLSL.std.450) 6(FSign) 89
+ 91: 37(float) Load 39(doublev)
+ 92: 37(float) FAdd 91 90
+ Store 39(doublev) 92
+ 93: 41(fvec2) Load 43(dvec2v)
+ 94: 41(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 93
+ 95: 41(fvec2) Load 43(dvec2v)
+ 96: 41(fvec2) FAdd 95 94
+ Store 43(dvec2v) 96
+ 97: 46(fvec3) Load 48(dvec3v)
+ 98: 46(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 97
+ 99: 46(fvec3) Load 48(dvec3v)
+ 100: 46(fvec3) FAdd 99 98
+ Store 48(dvec3v) 100
+ 101: 51(fvec4) Load 53(dvec4v)
+ 102: 51(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 101
+ 103: 51(fvec4) Load 53(dvec4v)
+ 104: 51(fvec4) FAdd 103 102
+ Store 53(dvec4v) 104
+ 105: 37(float) Load 39(doublev)
+ 106: 37(float) ExtInst 1(GLSL.std.450) 8(Floor) 105
+ 107: 37(float) Load 39(doublev)
+ 108: 37(float) FAdd 107 106
+ Store 39(doublev) 108
+ 109: 41(fvec2) Load 43(dvec2v)
+ 110: 41(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 109
+ 111: 41(fvec2) Load 43(dvec2v)
+ 112: 41(fvec2) FAdd 111 110
+ Store 43(dvec2v) 112
+ 113: 46(fvec3) Load 48(dvec3v)
+ 114: 46(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 113
+ 115: 46(fvec3) Load 48(dvec3v)
+ 116: 46(fvec3) FAdd 115 114
+ Store 48(dvec3v) 116
+ 117: 51(fvec4) Load 53(dvec4v)
+ 118: 51(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 117
+ 119: 51(fvec4) Load 53(dvec4v)
+ 120: 51(fvec4) FAdd 119 118
+ Store 53(dvec4v) 120
+ 121: 37(float) Load 39(doublev)
+ 122: 37(float) ExtInst 1(GLSL.std.450) 3(Trunc) 121
+ 123: 37(float) Load 39(doublev)
+ 124: 37(float) FAdd 123 122
+ Store 39(doublev) 124
+ 125: 41(fvec2) Load 43(dvec2v)
+ 126: 41(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 125
+ 127: 41(fvec2) Load 43(dvec2v)
+ 128: 41(fvec2) FAdd 127 126
+ Store 43(dvec2v) 128
+ 129: 46(fvec3) Load 48(dvec3v)
+ 130: 46(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 129
+ 131: 46(fvec3) Load 48(dvec3v)
+ 132: 46(fvec3) FAdd 131 130
+ Store 48(dvec3v) 132
+ 133: 51(fvec4) Load 53(dvec4v)
+ 134: 51(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 133
+ 135: 51(fvec4) Load 53(dvec4v)
+ 136: 51(fvec4) FAdd 135 134
+ Store 53(dvec4v) 136
+ 137: 37(float) Load 39(doublev)
+ 138: 37(float) ExtInst 1(GLSL.std.450) 1(Round) 137
+ 139: 37(float) Load 39(doublev)
+ 140: 37(float) FAdd 139 138
+ Store 39(doublev) 140
+ 141: 41(fvec2) Load 43(dvec2v)
+ 142: 41(fvec2) ExtInst 1(GLSL.std.450) 1(Round) 141
+ 143: 41(fvec2) Load 43(dvec2v)
+ 144: 41(fvec2) FAdd 143 142
+ Store 43(dvec2v) 144
+ 145: 46(fvec3) Load 48(dvec3v)
+ 146: 46(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 145
+ 147: 46(fvec3) Load 48(dvec3v)
+ 148: 46(fvec3) FAdd 147 146
+ Store 48(dvec3v) 148
+ 149: 51(fvec4) Load 53(dvec4v)
+ 150: 51(fvec4) ExtInst 1(GLSL.std.450) 1(Round) 149
+ 151: 51(fvec4) Load 53(dvec4v)
+ 152: 51(fvec4) FAdd 151 150
+ Store 53(dvec4v) 152
+ 153: 37(float) Load 39(doublev)
+ 154: 37(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 153
+ 155: 37(float) Load 39(doublev)
+ 156: 37(float) FAdd 155 154
+ Store 39(doublev) 156
+ 157: 41(fvec2) Load 43(dvec2v)
+ 158: 41(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 157
+ 159: 41(fvec2) Load 43(dvec2v)
+ 160: 41(fvec2) FAdd 159 158
+ Store 43(dvec2v) 160
+ 161: 46(fvec3) Load 48(dvec3v)
+ 162: 46(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 161
+ 163: 46(fvec3) Load 48(dvec3v)
+ 164: 46(fvec3) FAdd 163 162
+ Store 48(dvec3v) 164
+ 165: 51(fvec4) Load 53(dvec4v)
+ 166: 51(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 165
+ 167: 51(fvec4) Load 53(dvec4v)
+ 168: 51(fvec4) FAdd 167 166
+ Store 53(dvec4v) 168
+ 169: 37(float) Load 39(doublev)
+ 170: 37(float) ExtInst 1(GLSL.std.450) 9(Ceil) 169
+ 171: 37(float) Load 39(doublev)
+ 172: 37(float) FAdd 171 170
+ Store 39(doublev) 172
+ 173: 41(fvec2) Load 43(dvec2v)
+ 174: 41(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 173
+ 175: 41(fvec2) Load 43(dvec2v)
+ 176: 41(fvec2) FAdd 175 174
+ Store 43(dvec2v) 176
+ 177: 46(fvec3) Load 48(dvec3v)
+ 178: 46(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 177
+ 179: 46(fvec3) Load 48(dvec3v)
+ 180: 46(fvec3) FAdd 179 178
+ Store 48(dvec3v) 180
+ 181: 51(fvec4) Load 53(dvec4v)
+ 182: 51(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 181
+ 183: 51(fvec4) Load 53(dvec4v)
+ 184: 51(fvec4) FAdd 183 182
+ Store 53(dvec4v) 184
+ 185: 37(float) Load 39(doublev)
+ 186: 37(float) ExtInst 1(GLSL.std.450) 10(Fract) 185
+ 187: 37(float) Load 39(doublev)
+ 188: 37(float) FAdd 187 186
+ Store 39(doublev) 188
+ 189: 41(fvec2) Load 43(dvec2v)
+ 190: 41(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 189
+ 191: 41(fvec2) Load 43(dvec2v)
+ 192: 41(fvec2) FAdd 191 190
+ Store 43(dvec2v) 192
+ 193: 46(fvec3) Load 48(dvec3v)
+ 194: 46(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 193
+ 195: 46(fvec3) Load 48(dvec3v)
+ 196: 46(fvec3) FAdd 195 194
+ Store 48(dvec3v) 196
+ 197: 51(fvec4) Load 53(dvec4v)
+ 198: 51(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 197
+ 199: 51(fvec4) Load 53(dvec4v)
+ 200: 51(fvec4) FAdd 199 198
+ Store 53(dvec4v) 200
+ 201: 37(float) Load 39(doublev)
+ 202: 37(float) Load 39(doublev)
+ 203: 37(float) FMod 201 202
+ 204: 37(float) Load 39(doublev)
+ 205: 37(float) FAdd 204 203
+ Store 39(doublev) 205
+ 206: 41(fvec2) Load 43(dvec2v)
+ 207: 37(float) Load 39(doublev)
+ 208: 41(fvec2) CompositeConstruct 207 207
+ 209: 41(fvec2) FMod 206 208
+ 210: 41(fvec2) Load 43(dvec2v)
+ 211: 41(fvec2) FAdd 210 209
+ Store 43(dvec2v) 211
+ 212: 46(fvec3) Load 48(dvec3v)
+ 213: 37(float) Load 39(doublev)
+ 214: 46(fvec3) CompositeConstruct 213 213 213
+ 215: 46(fvec3) FMod 212 214
+ 216: 46(fvec3) Load 48(dvec3v)
+ 217: 46(fvec3) FAdd 216 215
+ Store 48(dvec3v) 217
+ 218: 51(fvec4) Load 53(dvec4v)
+ 219: 37(float) Load 39(doublev)
+ 220: 51(fvec4) CompositeConstruct 219 219 219 219
+ 221: 51(fvec4) FMod 218 220
+ 222: 51(fvec4) Load 53(dvec4v)
+ 223: 51(fvec4) FAdd 222 221
+ Store 53(dvec4v) 223
+ 224: 41(fvec2) Load 43(dvec2v)
+ 225: 41(fvec2) Load 43(dvec2v)
+ 226: 41(fvec2) FMod 224 225
+ 227: 41(fvec2) Load 43(dvec2v)
+ 228: 41(fvec2) FAdd 227 226
+ Store 43(dvec2v) 228
+ 229: 46(fvec3) Load 48(dvec3v)
+ 230: 46(fvec3) Load 48(dvec3v)
+ 231: 46(fvec3) FMod 229 230
+ 232: 46(fvec3) Load 48(dvec3v)
+ 233: 46(fvec3) FAdd 232 231
+ Store 48(dvec3v) 233
+ 234: 51(fvec4) Load 53(dvec4v)
+ 235: 51(fvec4) Load 53(dvec4v)
+ 236: 51(fvec4) FMod 234 235
+ 237: 51(fvec4) Load 53(dvec4v)
+ 238: 51(fvec4) FAdd 237 236
+ Store 53(dvec4v) 238
+ 239: 37(float) Load 39(doublev)
+ 240: 37(float) ExtInst 1(GLSL.std.450) 35(Modf) 239 39(doublev)
+ 241: 37(float) Load 39(doublev)
+ 242: 37(float) FAdd 241 240
+ Store 39(doublev) 242
+ 243: 41(fvec2) Load 43(dvec2v)
+ 244: 41(fvec2) ExtInst 1(GLSL.std.450) 35(Modf) 243 43(dvec2v)
+ 245: 41(fvec2) Load 43(dvec2v)
+ 246: 41(fvec2) FAdd 245 244
+ Store 43(dvec2v) 246
+ 247: 46(fvec3) Load 48(dvec3v)
+ 248: 46(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 247 48(dvec3v)
+ 249: 46(fvec3) Load 48(dvec3v)
+ 250: 46(fvec3) FAdd 249 248
+ Store 48(dvec3v) 250
+ 251: 51(fvec4) Load 53(dvec4v)
+ 252: 51(fvec4) ExtInst 1(GLSL.std.450) 35(Modf) 251 53(dvec4v)
+ 253: 51(fvec4) Load 53(dvec4v)
+ 254: 51(fvec4) FAdd 253 252
+ Store 53(dvec4v) 254
+ 255: 37(float) Load 39(doublev)
+ 256: 37(float) Load 39(doublev)
+ 257: 37(float) ExtInst 1(GLSL.std.450) 37(FMin) 255 256
+ 258: 37(float) Load 39(doublev)
+ 259: 37(float) FAdd 258 257
+ Store 39(doublev) 259
+ 260: 41(fvec2) Load 43(dvec2v)
+ 261: 37(float) Load 39(doublev)
+ 262: 41(fvec2) CompositeConstruct 261 261
+ 263: 41(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 260 262
+ 264: 41(fvec2) Load 43(dvec2v)
+ 265: 41(fvec2) FAdd 264 263
+ Store 43(dvec2v) 265
+ 266: 46(fvec3) Load 48(dvec3v)
+ 267: 37(float) Load 39(doublev)
+ 268: 46(fvec3) CompositeConstruct 267 267 267
+ 269: 46(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 266 268
+ 270: 46(fvec3) Load 48(dvec3v)
+ 271: 46(fvec3) FAdd 270 269
+ Store 48(dvec3v) 271
+ 272: 51(fvec4) Load 53(dvec4v)
+ 273: 37(float) Load 39(doublev)
+ 274: 51(fvec4) CompositeConstruct 273 273 273 273
+ 275: 51(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 272 274
+ 276: 51(fvec4) Load 53(dvec4v)
+ 277: 51(fvec4) FAdd 276 275
+ Store 53(dvec4v) 277
+ 278: 41(fvec2) Load 43(dvec2v)
+ 279: 41(fvec2) Load 43(dvec2v)
+ 280: 41(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 278 279
+ 281: 41(fvec2) Load 43(dvec2v)
+ 282: 41(fvec2) FAdd 281 280
+ Store 43(dvec2v) 282
+ 283: 46(fvec3) Load 48(dvec3v)
+ 284: 46(fvec3) Load 48(dvec3v)
+ 285: 46(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 283 284
+ 286: 46(fvec3) Load 48(dvec3v)
+ 287: 46(fvec3) FAdd 286 285
+ Store 48(dvec3v) 287
+ 288: 51(fvec4) Load 53(dvec4v)
+ 289: 51(fvec4) Load 53(dvec4v)
+ 290: 51(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 288 289
+ 291: 51(fvec4) Load 53(dvec4v)
+ 292: 51(fvec4) FAdd 291 290
+ Store 53(dvec4v) 292
+ 293: 37(float) Load 39(doublev)
+ 294: 37(float) Load 39(doublev)
+ 295: 37(float) ExtInst 1(GLSL.std.450) 40(FMax) 293 294
+ 296: 37(float) Load 39(doublev)
+ 297: 37(float) FAdd 296 295
+ Store 39(doublev) 297
+ 298: 41(fvec2) Load 43(dvec2v)
+ 299: 37(float) Load 39(doublev)
+ 300: 41(fvec2) CompositeConstruct 299 299
+ 301: 41(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 298 300
+ 302: 41(fvec2) Load 43(dvec2v)
+ 303: 41(fvec2) FAdd 302 301
+ Store 43(dvec2v) 303
+ 304: 46(fvec3) Load 48(dvec3v)
+ 305: 37(float) Load 39(doublev)
+ 306: 46(fvec3) CompositeConstruct 305 305 305
+ 307: 46(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 304 306
+ 308: 46(fvec3) Load 48(dvec3v)
+ 309: 46(fvec3) FAdd 308 307
+ Store 48(dvec3v) 309
+ 310: 51(fvec4) Load 53(dvec4v)
+ 311: 37(float) Load 39(doublev)
+ 312: 51(fvec4) CompositeConstruct 311 311 311 311
+ 313: 51(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 310 312
+ 314: 51(fvec4) Load 53(dvec4v)
+ 315: 51(fvec4) FAdd 314 313
+ Store 53(dvec4v) 315
+ 316: 41(fvec2) Load 43(dvec2v)
+ 317: 41(fvec2) Load 43(dvec2v)
+ 318: 41(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 316 317
+ 319: 41(fvec2) Load 43(dvec2v)
+ 320: 41(fvec2) FAdd 319 318
+ Store 43(dvec2v) 320
+ 321: 46(fvec3) Load 48(dvec3v)
+ 322: 46(fvec3) Load 48(dvec3v)
+ 323: 46(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 321 322
+ 324: 46(fvec3) Load 48(dvec3v)
+ 325: 46(fvec3) FAdd 324 323
+ Store 48(dvec3v) 325
+ 326: 51(fvec4) Load 53(dvec4v)
+ 327: 51(fvec4) Load 53(dvec4v)
+ 328: 51(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 326 327
+ 329: 51(fvec4) Load 53(dvec4v)
+ 330: 51(fvec4) FAdd 329 328
+ Store 53(dvec4v) 330
+ 331: 37(float) Load 39(doublev)
+ 332: 37(float) Load 39(doublev)
+ 333: 37(float) Load 39(doublev)
+ 334: 37(float) ExtInst 1(GLSL.std.450) 43(FClamp) 331 332 333
+ 335: 37(float) Load 39(doublev)
+ 336: 37(float) FAdd 335 334
+ Store 39(doublev) 336
+ 337: 41(fvec2) Load 43(dvec2v)
+ 338: 37(float) Load 39(doublev)
+ 339: 37(float) Load 39(doublev)
+ 340: 41(fvec2) CompositeConstruct 338 338
+ 341: 41(fvec2) CompositeConstruct 339 339
+ 342: 41(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 337 340 341
+ 343: 41(fvec2) Load 43(dvec2v)
+ 344: 41(fvec2) FAdd 343 342
+ Store 43(dvec2v) 344
+ 345: 46(fvec3) Load 48(dvec3v)
+ 346: 37(float) Load 39(doublev)
+ 347: 37(float) Load 39(doublev)
+ 348: 46(fvec3) CompositeConstruct 346 346 346
+ 349: 46(fvec3) CompositeConstruct 347 347 347
+ 350: 46(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 345 348 349
+ 351: 46(fvec3) Load 48(dvec3v)
+ 352: 46(fvec3) FAdd 351 350
+ Store 48(dvec3v) 352
+ 353: 51(fvec4) Load 53(dvec4v)
+ 354: 37(float) Load 39(doublev)
+ 355: 37(float) Load 39(doublev)
+ 356: 51(fvec4) CompositeConstruct 354 354 354 354
+ 357: 51(fvec4) CompositeConstruct 355 355 355 355
+ 358: 51(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 353 356 357
+ 359: 51(fvec4) Load 53(dvec4v)
+ 360: 51(fvec4) FAdd 359 358
+ Store 53(dvec4v) 360
+ 361: 41(fvec2) Load 43(dvec2v)
+ 362: 41(fvec2) Load 43(dvec2v)
+ 363: 41(fvec2) Load 43(dvec2v)
+ 364: 41(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 361 362 363
+ 365: 41(fvec2) Load 43(dvec2v)
+ 366: 41(fvec2) FAdd 365 364
+ Store 43(dvec2v) 366
+ 367: 46(fvec3) Load 48(dvec3v)
+ 368: 46(fvec3) Load 48(dvec3v)
+ 369: 46(fvec3) Load 48(dvec3v)
+ 370: 46(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 367 368 369
+ 371: 46(fvec3) Load 48(dvec3v)
+ 372: 46(fvec3) FAdd 371 370
+ Store 48(dvec3v) 372
+ 373: 51(fvec4) Load 53(dvec4v)
+ 374: 51(fvec4) Load 53(dvec4v)
+ 375: 51(fvec4) Load 53(dvec4v)
+ 376: 51(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 373 374 375
+ 377: 51(fvec4) Load 53(dvec4v)
+ 378: 51(fvec4) FAdd 377 376
+ Store 53(dvec4v) 378
+ 379: 37(float) Load 39(doublev)
+ 380: 37(float) Load 39(doublev)
+ 381: 37(float) Load 39(doublev)
+ 382: 37(float) ExtInst 1(GLSL.std.450) 46(FMix) 379 380 381
+ 383: 37(float) Load 39(doublev)
+ 384: 37(float) FAdd 383 382
+ Store 39(doublev) 384
+ 385: 41(fvec2) Load 43(dvec2v)
+ 386: 41(fvec2) Load 43(dvec2v)
+ 387: 37(float) Load 39(doublev)
+ 388: 41(fvec2) CompositeConstruct 387 387
+ 389: 41(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 385 386 388
+ 390: 41(fvec2) Load 43(dvec2v)
+ 391: 41(fvec2) FAdd 390 389
+ Store 43(dvec2v) 391
+ 392: 46(fvec3) Load 48(dvec3v)
+ 393: 46(fvec3) Load 48(dvec3v)
+ 394: 37(float) Load 39(doublev)
+ 395: 46(fvec3) CompositeConstruct 394 394 394
+ 396: 46(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 392 393 395
+ 397: 46(fvec3) Load 48(dvec3v)
+ 398: 46(fvec3) FAdd 397 396
+ Store 48(dvec3v) 398
+ 399: 51(fvec4) Load 53(dvec4v)
+ 400: 51(fvec4) Load 53(dvec4v)
+ 401: 37(float) Load 39(doublev)
+ 402: 51(fvec4) CompositeConstruct 401 401 401 401
+ 403: 51(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 399 400 402
+ 404: 51(fvec4) Load 53(dvec4v)
+ 405: 51(fvec4) FAdd 404 403
+ Store 53(dvec4v) 405
+ 406: 41(fvec2) Load 43(dvec2v)
+ 407: 41(fvec2) Load 43(dvec2v)
+ 408: 41(fvec2) Load 43(dvec2v)
+ 409: 41(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 406 407 408
+ 410: 41(fvec2) Load 43(dvec2v)
+ 411: 41(fvec2) FAdd 410 409
+ Store 43(dvec2v) 411
+ 412: 46(fvec3) Load 48(dvec3v)
+ 413: 46(fvec3) Load 48(dvec3v)
+ 414: 46(fvec3) Load 48(dvec3v)
+ 415: 46(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 412 413 414
+ 416: 46(fvec3) Load 48(dvec3v)
+ 417: 46(fvec3) FAdd 416 415
+ Store 48(dvec3v) 417
+ 418: 51(fvec4) Load 53(dvec4v)
+ 419: 51(fvec4) Load 53(dvec4v)
+ 420: 51(fvec4) Load 53(dvec4v)
+ 421: 51(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 418 419 420
+ 422: 51(fvec4) Load 53(dvec4v)
+ 423: 51(fvec4) FAdd 422 421
+ Store 53(dvec4v) 423
+ 424: 37(float) Load 39(doublev)
+ 425: 37(float) Load 39(doublev)
+ 429: 426(bool) Load 428(boolv)
+ 430: 37(float) ExtInst 1(GLSL.std.450) 46(FMix) 424 425 429
+ 431: 37(float) Load 39(doublev)
+ 432: 37(float) FAdd 431 430
+ Store 39(doublev) 432
+ 433: 41(fvec2) Load 43(dvec2v)
+ 434: 41(fvec2) Load 43(dvec2v)
+ 438: 435(bvec2) Load 437(bvec2v)
+ 439: 41(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 433 434 438
+ 440: 41(fvec2) Load 43(dvec2v)
+ 441: 41(fvec2) FAdd 440 439
+ Store 43(dvec2v) 441
+ 442: 46(fvec3) Load 48(dvec3v)
+ 443: 46(fvec3) Load 48(dvec3v)
+ 447: 444(bvec3) Load 446(bvec3v)
+ 448: 46(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 442 443 447
+ 449: 46(fvec3) Load 48(dvec3v)
+ 450: 46(fvec3) FAdd 449 448
+ Store 48(dvec3v) 450
+ 451: 51(fvec4) Load 53(dvec4v)
+ 452: 51(fvec4) Load 53(dvec4v)
+ 456: 453(bvec4) Load 455(bvec4v)
+ 457: 51(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 451 452 456
+ 458: 51(fvec4) Load 53(dvec4v)
+ 459: 51(fvec4) FAdd 458 457
+ Store 53(dvec4v) 459
+ 460: 37(float) Load 39(doublev)
+ 461: 37(float) Load 39(doublev)
+ 462: 37(float) ExtInst 1(GLSL.std.450) 48(Step) 460 461
+ 463: 37(float) Load 39(doublev)
+ 464: 37(float) FAdd 463 462
+ Store 39(doublev) 464
+ 465: 41(fvec2) Load 43(dvec2v)
+ 466: 41(fvec2) Load 43(dvec2v)
+ 467: 41(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 465 466
+ 468: 41(fvec2) Load 43(dvec2v)
+ 469: 41(fvec2) FAdd 468 467
+ Store 43(dvec2v) 469
+ 470: 46(fvec3) Load 48(dvec3v)
+ 471: 46(fvec3) Load 48(dvec3v)
+ 472: 46(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 470 471
+ 473: 46(fvec3) Load 48(dvec3v)
+ 474: 46(fvec3) FAdd 473 472
+ Store 48(dvec3v) 474
+ 475: 51(fvec4) Load 53(dvec4v)
+ 476: 51(fvec4) Load 53(dvec4v)
+ 477: 51(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 475 476
+ 478: 51(fvec4) Load 53(dvec4v)
+ 479: 51(fvec4) FAdd 478 477
+ Store 53(dvec4v) 479
+ 480: 37(float) Load 39(doublev)
+ 481: 41(fvec2) Load 43(dvec2v)
+ 482: 41(fvec2) CompositeConstruct 480 480
+ 483: 41(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 482 481
+ 484: 41(fvec2) Load 43(dvec2v)
+ 485: 41(fvec2) FAdd 484 483
+ Store 43(dvec2v) 485
+ 486: 37(float) Load 39(doublev)
+ 487: 46(fvec3) Load 48(dvec3v)
+ 488: 46(fvec3) CompositeConstruct 486 486 486
+ 489: 46(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 488 487
+ 490: 46(fvec3) Load 48(dvec3v)
+ 491: 46(fvec3) FAdd 490 489
+ Store 48(dvec3v) 491
+ 492: 37(float) Load 39(doublev)
+ 493: 51(fvec4) Load 53(dvec4v)
+ 494: 51(fvec4) CompositeConstruct 492 492 492 492
+ 495: 51(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 494 493
+ 496: 51(fvec4) Load 53(dvec4v)
+ 497: 51(fvec4) FAdd 496 495
+ Store 53(dvec4v) 497
+ 498: 37(float) Load 39(doublev)
+ 499: 37(float) Load 39(doublev)
+ 500: 37(float) Load 39(doublev)
+ 501: 37(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 498 499 500
+ 502: 37(float) Load 39(doublev)
+ 503: 37(float) FAdd 502 501
+ Store 39(doublev) 503
+ 504: 41(fvec2) Load 43(dvec2v)
+ 505: 41(fvec2) Load 43(dvec2v)
+ 506: 41(fvec2) Load 43(dvec2v)
+ 507: 41(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 504 505 506
+ 508: 41(fvec2) Load 43(dvec2v)
+ 509: 41(fvec2) FAdd 508 507
+ Store 43(dvec2v) 509
+ 510: 46(fvec3) Load 48(dvec3v)
+ 511: 46(fvec3) Load 48(dvec3v)
+ 512: 46(fvec3) Load 48(dvec3v)
+ 513: 46(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 510 511 512
+ 514: 46(fvec3) Load 48(dvec3v)
+ 515: 46(fvec3) FAdd 514 513
+ Store 48(dvec3v) 515
+ 516: 51(fvec4) Load 53(dvec4v)
+ 517: 51(fvec4) Load 53(dvec4v)
+ 518: 51(fvec4) Load 53(dvec4v)
+ 519: 51(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 516 517 518
+ 520: 51(fvec4) Load 53(dvec4v)
+ 521: 51(fvec4) FAdd 520 519
+ Store 53(dvec4v) 521
+ 522: 37(float) Load 39(doublev)
+ 523: 37(float) Load 39(doublev)
+ 524: 41(fvec2) Load 43(dvec2v)
+ 525: 41(fvec2) CompositeConstruct 522 522
+ 526: 41(fvec2) CompositeConstruct 523 523
+ 527: 41(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 525 526 524
+ 528: 41(fvec2) Load 43(dvec2v)
+ 529: 41(fvec2) FAdd 528 527
+ Store 43(dvec2v) 529
+ 530: 37(float) Load 39(doublev)
+ 531: 37(float) Load 39(doublev)
+ 532: 46(fvec3) Load 48(dvec3v)
+ 533: 46(fvec3) CompositeConstruct 530 530 530
+ 534: 46(fvec3) CompositeConstruct 531 531 531
+ 535: 46(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 533 534 532
+ 536: 46(fvec3) Load 48(dvec3v)
+ 537: 46(fvec3) FAdd 536 535
+ Store 48(dvec3v) 537
+ 538: 37(float) Load 39(doublev)
+ 539: 37(float) Load 39(doublev)
+ 540: 51(fvec4) Load 53(dvec4v)
+ 541: 51(fvec4) CompositeConstruct 538 538 538 538
+ 542: 51(fvec4) CompositeConstruct 539 539 539 539
+ 543: 51(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 541 542 540
+ 544: 51(fvec4) Load 53(dvec4v)
+ 545: 51(fvec4) FAdd 544 543
+ Store 53(dvec4v) 545
+ 546: 37(float) Load 39(doublev)
+ 547: 426(bool) IsNan 546
+ Store 428(boolv) 547
+ 548: 41(fvec2) Load 43(dvec2v)
+ 549: 435(bvec2) IsNan 548
+ Store 437(bvec2v) 549
+ 550: 46(fvec3) Load 48(dvec3v)
+ 551: 444(bvec3) IsNan 550
+ Store 446(bvec3v) 551
+ 552: 51(fvec4) Load 53(dvec4v)
+ 553: 453(bvec4) IsNan 552
+ Store 455(bvec4v) 553
+ 555: 426(bool) Load 428(boolv)
+ SelectionMerge 557 None
+ BranchConditional 555 556 560
+ 556: Label
+ 558: 37(float) Load 39(doublev)
+ 559: 426(bool) IsInf 558
+ Store 554 559
+ Branch 557
+ 560: Label
+ Store 554 561
+ Branch 557
+ 557: Label
+ 562: 426(bool) Load 554
+ Store 428(boolv) 562
+ 564: 426(bool) Load 428(boolv)
+ SelectionMerge 566 None
+ BranchConditional 564 565 569
+ 565: Label
+ 567: 41(fvec2) Load 43(dvec2v)
+ 568: 435(bvec2) IsInf 567
+ Store 563 568
+ Branch 566
+ 569: Label
+ Store 563 570
+ Branch 566
+ 566: Label
+ 571: 435(bvec2) Load 563
+ Store 437(bvec2v) 571
+ 573: 426(bool) Load 428(boolv)
+ SelectionMerge 575 None
+ BranchConditional 573 574 578
+ 574: Label
+ 576: 46(fvec3) Load 48(dvec3v)
+ 577: 444(bvec3) IsInf 576
+ Store 572 577
+ Branch 575
+ 578: Label
+ Store 572 579
+ Branch 575
+ 575: Label
+ 580: 444(bvec3) Load 572
+ Store 446(bvec3v) 580
+ 582: 426(bool) Load 428(boolv)
+ SelectionMerge 584 None
+ BranchConditional 582 583 587
+ 583: Label
+ 585: 51(fvec4) Load 53(dvec4v)
+ 586: 453(bvec4) IsInf 585
+ Store 581 586
+ Branch 584
+ 587: Label
+ Store 581 588
+ Branch 584
+ 584: Label
+ 589: 453(bvec4) Load 581
+ Store 455(bvec4v) 589
+ 590: 37(float) Load 39(doublev)
+ 591: 37(float) ExtInst 1(GLSL.std.450) 66(Length) 590
+ 592: 37(float) Load 39(doublev)
+ 593: 37(float) FAdd 592 591
+ Store 39(doublev) 593
+ 594: 41(fvec2) Load 43(dvec2v)
+ 595: 37(float) ExtInst 1(GLSL.std.450) 66(Length) 594
+ 596: 37(float) Load 39(doublev)
+ 597: 37(float) FAdd 596 595
+ Store 39(doublev) 597
+ 598: 46(fvec3) Load 48(dvec3v)
+ 599: 37(float) ExtInst 1(GLSL.std.450) 66(Length) 598
+ 600: 37(float) Load 39(doublev)
+ 601: 37(float) FAdd 600 599
+ Store 39(doublev) 601
+ 602: 51(fvec4) Load 53(dvec4v)
+ 603: 37(float) ExtInst 1(GLSL.std.450) 66(Length) 602
+ 604: 37(float) Load 39(doublev)
+ 605: 37(float) FAdd 604 603
+ Store 39(doublev) 605
+ 606: 37(float) Load 39(doublev)
+ 607: 37(float) Load 39(doublev)
+ 608: 37(float) ExtInst 1(GLSL.std.450) 67(Distance) 606 607
+ 609: 37(float) Load 39(doublev)
+ 610: 37(float) FAdd 609 608
+ Store 39(doublev) 610
+ 611: 41(fvec2) Load 43(dvec2v)
+ 612: 41(fvec2) Load 43(dvec2v)
+ 613: 37(float) ExtInst 1(GLSL.std.450) 67(Distance) 611 612
+ 614: 37(float) Load 39(doublev)
+ 615: 37(float) FAdd 614 613
+ Store 39(doublev) 615
+ 616: 46(fvec3) Load 48(dvec3v)
+ 617: 46(fvec3) Load 48(dvec3v)
+ 618: 37(float) ExtInst 1(GLSL.std.450) 67(Distance) 616 617
+ 619: 37(float) Load 39(doublev)
+ 620: 37(float) FAdd 619 618
+ Store 39(doublev) 620
+ 621: 51(fvec4) Load 53(dvec4v)
+ 622: 51(fvec4) Load 53(dvec4v)
+ 623: 37(float) ExtInst 1(GLSL.std.450) 67(Distance) 621 622
+ 624: 37(float) Load 39(doublev)
+ 625: 37(float) FAdd 624 623
+ Store 39(doublev) 625
+ 626: 37(float) Load 39(doublev)
+ 627: 37(float) Load 39(doublev)
+ 628: 37(float) FMul 626 627
+ 629: 37(float) Load 39(doublev)
+ 630: 37(float) FAdd 629 628
+ Store 39(doublev) 630
+ 631: 41(fvec2) Load 43(dvec2v)
+ 632: 41(fvec2) Load 43(dvec2v)
+ 633: 37(float) Dot 631 632
+ 634: 37(float) Load 39(doublev)
+ 635: 37(float) FAdd 634 633
+ Store 39(doublev) 635
+ 636: 46(fvec3) Load 48(dvec3v)
+ 637: 46(fvec3) Load 48(dvec3v)
+ 638: 37(float) Dot 636 637
+ 639: 37(float) Load 39(doublev)
+ 640: 37(float) FAdd 639 638
+ Store 39(doublev) 640
+ 641: 51(fvec4) Load 53(dvec4v)
+ 642: 51(fvec4) Load 53(dvec4v)
+ 643: 37(float) Dot 641 642
+ 644: 37(float) Load 39(doublev)
+ 645: 37(float) FAdd 644 643
+ Store 39(doublev) 645
+ 646: 46(fvec3) Load 48(dvec3v)
+ 647: 46(fvec3) Load 48(dvec3v)
+ 648: 46(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 646 647
+ 649: 46(fvec3) Load 48(dvec3v)
+ 650: 46(fvec3) FAdd 649 648
+ Store 48(dvec3v) 650
+ 651: 37(float) Load 39(doublev)
+ 652: 37(float) ExtInst 1(GLSL.std.450) 69(Normalize) 651
+ 653: 37(float) Load 39(doublev)
+ 654: 37(float) FAdd 653 652
+ Store 39(doublev) 654
+ 655: 41(fvec2) Load 43(dvec2v)
+ 656: 41(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 655
+ 657: 41(fvec2) Load 43(dvec2v)
+ 658: 41(fvec2) FAdd 657 656
+ Store 43(dvec2v) 658
+ 659: 46(fvec3) Load 48(dvec3v)
+ 660: 46(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 659
+ 661: 46(fvec3) Load 48(dvec3v)
+ 662: 46(fvec3) FAdd 661 660
+ Store 48(dvec3v) 662
+ 663: 51(fvec4) Load 53(dvec4v)
+ 664: 51(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 663
+ 665: 51(fvec4) Load 53(dvec4v)
+ 666: 51(fvec4) FAdd 665 664
+ Store 53(dvec4v) 666
+ 667: 37(float) Load 39(doublev)
+ 668: 37(float) Load 39(doublev)
+ 669: 37(float) Load 39(doublev)
+ 670: 37(float) ExtInst 1(GLSL.std.450) 70(FaceForward) 667 668 669
+ 671: 37(float) Load 39(doublev)
+ 672: 37(float) FAdd 671 670
+ Store 39(doublev) 672
+ 673: 41(fvec2) Load 43(dvec2v)
+ 674: 41(fvec2) Load 43(dvec2v)
+ 675: 41(fvec2) Load 43(dvec2v)
+ 676: 41(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 673 674 675
+ 677: 41(fvec2) Load 43(dvec2v)
+ 678: 41(fvec2) FAdd 677 676
+ Store 43(dvec2v) 678
+ 679: 46(fvec3) Load 48(dvec3v)
+ 680: 46(fvec3) Load 48(dvec3v)
+ 681: 46(fvec3) Load 48(dvec3v)
+ 682: 46(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 679 680 681
+ 683: 46(fvec3) Load 48(dvec3v)
+ 684: 46(fvec3) FAdd 683 682
+ Store 48(dvec3v) 684
+ 685: 51(fvec4) Load 53(dvec4v)
+ 686: 51(fvec4) Load 53(dvec4v)
+ 687: 51(fvec4) Load 53(dvec4v)
+ 688: 51(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 685 686 687
+ 689: 51(fvec4) Load 53(dvec4v)
+ 690: 51(fvec4) FAdd 689 688
+ Store 53(dvec4v) 690
+ 691: 37(float) Load 39(doublev)
+ 692: 37(float) Load 39(doublev)
+ 693: 37(float) ExtInst 1(GLSL.std.450) 71(Reflect) 691 692
+ 694: 37(float) Load 39(doublev)
+ 695: 37(float) FAdd 694 693
+ Store 39(doublev) 695
+ 696: 41(fvec2) Load 43(dvec2v)
+ 697: 41(fvec2) Load 43(dvec2v)
+ 698: 41(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 696 697
+ 699: 41(fvec2) Load 43(dvec2v)
+ 700: 41(fvec2) FAdd 699 698
+ Store 43(dvec2v) 700
+ 701: 46(fvec3) Load 48(dvec3v)
+ 702: 46(fvec3) Load 48(dvec3v)
+ 703: 46(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 701 702
+ 704: 46(fvec3) Load 48(dvec3v)
+ 705: 46(fvec3) FAdd 704 703
+ Store 48(dvec3v) 705
+ 706: 51(fvec4) Load 53(dvec4v)
+ 707: 51(fvec4) Load 53(dvec4v)
+ 708: 51(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 706 707
+ 709: 51(fvec4) Load 53(dvec4v)
+ 710: 51(fvec4) FAdd 709 708
+ Store 53(dvec4v) 710
+ 711: 37(float) Load 39(doublev)
+ 712: 37(float) Load 39(doublev)
+ 713: 37(float) Load 39(doublev)
+ 714: 37(float) ExtInst 1(GLSL.std.450) 72(Refract) 711 712 713
+ 715: 37(float) Load 39(doublev)
+ 716: 37(float) FAdd 715 714
+ Store 39(doublev) 716
+ 717: 41(fvec2) Load 43(dvec2v)
+ 718: 41(fvec2) Load 43(dvec2v)
+ 719: 37(float) Load 39(doublev)
+ 720: 41(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 717 718 719
+ 721: 41(fvec2) Load 43(dvec2v)
+ 722: 41(fvec2) FAdd 721 720
+ Store 43(dvec2v) 722
+ 723: 46(fvec3) Load 48(dvec3v)
+ 724: 46(fvec3) Load 48(dvec3v)
+ 725: 37(float) Load 39(doublev)
+ 726: 46(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 723 724 725
+ 727: 46(fvec3) Load 48(dvec3v)
+ 728: 46(fvec3) FAdd 727 726
+ Store 48(dvec3v) 728
+ 729: 51(fvec4) Load 53(dvec4v)
+ 730: 51(fvec4) Load 53(dvec4v)
+ 731: 37(float) Load 39(doublev)
+ 732: 51(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 729 730 731
+ 733: 51(fvec4) Load 53(dvec4v)
+ 734: 51(fvec4) FAdd 733 732
+ Store 53(dvec4v) 734
+ 738: 41(fvec2) Load 43(dvec2v)
+ 739: 41(fvec2) Load 43(dvec2v)
+ 740: 735 OuterProduct 738 739
+ Store 737(dmat2v) 740
+ 744: 46(fvec3) Load 48(dvec3v)
+ 745: 46(fvec3) Load 48(dvec3v)
+ 746: 741 OuterProduct 744 745
+ Store 743(dmat3v) 746
+ 750: 51(fvec4) Load 53(dvec4v)
+ 751: 51(fvec4) Load 53(dvec4v)
+ 752: 747 OuterProduct 750 751
+ Store 749(dmat4v) 752
+ 756: 46(fvec3) Load 48(dvec3v)
+ 757: 41(fvec2) Load 43(dvec2v)
+ 758: 753 OuterProduct 756 757
+ Store 755(dmat2x3v) 758
+ 762: 41(fvec2) Load 43(dvec2v)
+ 763: 46(fvec3) Load 48(dvec3v)
+ 764: 759 OuterProduct 762 763
+ Store 761(dmat3x2v) 764
+ 768: 51(fvec4) Load 53(dvec4v)
+ 769: 41(fvec2) Load 43(dvec2v)
+ 770: 765 OuterProduct 768 769
+ Store 767(dmat2x4v) 770
+ 774: 41(fvec2) Load 43(dvec2v)
+ 775: 51(fvec4) Load 53(dvec4v)
+ 776: 771 OuterProduct 774 775
+ Store 773(dmat4x2v) 776
+ 780: 51(fvec4) Load 53(dvec4v)
+ 781: 46(fvec3) Load 48(dvec3v)
+ 782: 777 OuterProduct 780 781
+ Store 779(dmat3x4v) 782
+ 786: 46(fvec3) Load 48(dvec3v)
+ 787: 51(fvec4) Load 53(dvec4v)
+ 788: 783 OuterProduct 786 787
+ Store 785(dmat4x3v) 788
+ 789: 735 Load 737(dmat2v)
+ 790: 735 Load 737(dmat2v)
+ 791: 41(fvec2) CompositeExtract 789 0
+ 792: 41(fvec2) CompositeExtract 790 0
+ 793: 41(fvec2) FMul 791 792
+ 794: 41(fvec2) CompositeExtract 789 1
+ 795: 41(fvec2) CompositeExtract 790 1
+ 796: 41(fvec2) FMul 794 795
+ 797: 735 CompositeConstruct 793 796
+ 798: 735 Load 737(dmat2v)
+ 799: 735 MatrixTimesMatrix 798 797
+ Store 737(dmat2v) 799
+ 800: 741 Load 743(dmat3v)
+ 801: 741 Load 743(dmat3v)
+ 802: 46(fvec3) CompositeExtract 800 0
+ 803: 46(fvec3) CompositeExtract 801 0
+ 804: 46(fvec3) FMul 802 803
+ 805: 46(fvec3) CompositeExtract 800 1
+ 806: 46(fvec3) CompositeExtract 801 1
+ 807: 46(fvec3) FMul 805 806
+ 808: 46(fvec3) CompositeExtract 800 2
+ 809: 46(fvec3) CompositeExtract 801 2
+ 810: 46(fvec3) FMul 808 809
+ 811: 741 CompositeConstruct 804 807 810
+ 812: 741 Load 743(dmat3v)
+ 813: 741 MatrixTimesMatrix 812 811
+ Store 743(dmat3v) 813
+ 814: 747 Load 749(dmat4v)
+ 815: 747 Load 749(dmat4v)
+ 816: 51(fvec4) CompositeExtract 814 0
+ 817: 51(fvec4) CompositeExtract 815 0
+ 818: 51(fvec4) FMul 816 817
+ 819: 51(fvec4) CompositeExtract 814 1
+ 820: 51(fvec4) CompositeExtract 815 1
+ 821: 51(fvec4) FMul 819 820
+ 822: 51(fvec4) CompositeExtract 814 2
+ 823: 51(fvec4) CompositeExtract 815 2
+ 824: 51(fvec4) FMul 822 823
+ 825: 51(fvec4) CompositeExtract 814 3
+ 826: 51(fvec4) CompositeExtract 815 3
+ 827: 51(fvec4) FMul 825 826
+ 828: 747 CompositeConstruct 818 821 824 827
+ 829: 747 Load 749(dmat4v)
+ 830: 747 MatrixTimesMatrix 829 828
+ Store 749(dmat4v) 830
+ 831: 753 Load 755(dmat2x3v)
+ 832: 753 Load 755(dmat2x3v)
+ 833: 46(fvec3) CompositeExtract 831 0
+ 834: 46(fvec3) CompositeExtract 832 0
+ 835: 46(fvec3) FMul 833 834
+ 836: 46(fvec3) CompositeExtract 831 1
+ 837: 46(fvec3) CompositeExtract 832 1
+ 838: 46(fvec3) FMul 836 837
+ 839: 753 CompositeConstruct 835 838
+ Store 755(dmat2x3v) 839
+ 840: 765 Load 767(dmat2x4v)
+ 841: 765 Load 767(dmat2x4v)
+ 842: 51(fvec4) CompositeExtract 840 0
+ 843: 51(fvec4) CompositeExtract 841 0
+ 844: 51(fvec4) FMul 842 843
+ 845: 51(fvec4) CompositeExtract 840 1
+ 846: 51(fvec4) CompositeExtract 841 1
+ 847: 51(fvec4) FMul 845 846
+ 848: 765 CompositeConstruct 844 847
+ Store 767(dmat2x4v) 848
+ 849: 759 Load 761(dmat3x2v)
+ 850: 759 Load 761(dmat3x2v)
+ 851: 41(fvec2) CompositeExtract 849 0
+ 852: 41(fvec2) CompositeExtract 850 0
+ 853: 41(fvec2) FMul 851 852
+ 854: 41(fvec2) CompositeExtract 849 1
+ 855: 41(fvec2) CompositeExtract 850 1
+ 856: 41(fvec2) FMul 854 855
+ 857: 41(fvec2) CompositeExtract 849 2
+ 858: 41(fvec2) CompositeExtract 850 2
+ 859: 41(fvec2) FMul 857 858
+ 860: 759 CompositeConstruct 853 856 859
+ Store 761(dmat3x2v) 860
+ 861: 777 Load 779(dmat3x4v)
+ 862: 777 Load 779(dmat3x4v)
+ 863: 51(fvec4) CompositeExtract 861 0
+ 864: 51(fvec4) CompositeExtract 862 0
+ 865: 51(fvec4) FMul 863 864
+ 866: 51(fvec4) CompositeExtract 861 1
+ 867: 51(fvec4) CompositeExtract 862 1
+ 868: 51(fvec4) FMul 866 867
+ 869: 51(fvec4) CompositeExtract 861 2
+ 870: 51(fvec4) CompositeExtract 862 2
+ 871: 51(fvec4) FMul 869 870
+ 872: 777 CompositeConstruct 865 868 871
+ Store 779(dmat3x4v) 872
+ 873: 771 Load 773(dmat4x2v)
+ 874: 771 Load 773(dmat4x2v)
+ 875: 41(fvec2) CompositeExtract 873 0
+ 876: 41(fvec2) CompositeExtract 874 0
+ 877: 41(fvec2) FMul 875 876
+ 878: 41(fvec2) CompositeExtract 873 1
+ 879: 41(fvec2) CompositeExtract 874 1
+ 880: 41(fvec2) FMul 878 879
+ 881: 41(fvec2) CompositeExtract 873 2
+ 882: 41(fvec2) CompositeExtract 874 2
+ 883: 41(fvec2) FMul 881 882
+ 884: 41(fvec2) CompositeExtract 873 3
+ 885: 41(fvec2) CompositeExtract 874 3
+ 886: 41(fvec2) FMul 884 885
+ 887: 771 CompositeConstruct 877 880 883 886
+ Store 773(dmat4x2v) 887
+ 888: 783 Load 785(dmat4x3v)
+ 889: 783 Load 785(dmat4x3v)
+ 890: 46(fvec3) CompositeExtract 888 0
+ 891: 46(fvec3) CompositeExtract 889 0
+ 892: 46(fvec3) FMul 890 891
+ 893: 46(fvec3) CompositeExtract 888 1
+ 894: 46(fvec3) CompositeExtract 889 1
+ 895: 46(fvec3) FMul 893 894
+ 896: 46(fvec3) CompositeExtract 888 2
+ 897: 46(fvec3) CompositeExtract 889 2
+ 898: 46(fvec3) FMul 896 897
+ 899: 46(fvec3) CompositeExtract 888 3
+ 900: 46(fvec3) CompositeExtract 889 3
+ 901: 46(fvec3) FMul 899 900
+ 902: 783 CompositeConstruct 892 895 898 901
+ Store 785(dmat4x3v) 902
+ 903: 735 Load 737(dmat2v)
+ 904: 735 Transpose 903
+ 905: 735 Load 737(dmat2v)
+ 906: 735 MatrixTimesMatrix 905 904
+ Store 737(dmat2v) 906
+ 907: 741 Load 743(dmat3v)
+ 908: 741 Transpose 907
+ 909: 741 Load 743(dmat3v)
+ 910: 741 MatrixTimesMatrix 909 908
+ Store 743(dmat3v) 910
+ 911: 747 Load 749(dmat4v)
+ 912: 747 Transpose 911
+ 913: 747 Load 749(dmat4v)
+ 914: 747 MatrixTimesMatrix 913 912
+ Store 749(dmat4v) 914
+ 915: 759 Load 761(dmat3x2v)
+ 916: 753 Transpose 915
+ Store 755(dmat2x3v) 916
+ 917: 753 Load 755(dmat2x3v)
+ 918: 759 Transpose 917
+ Store 761(dmat3x2v) 918
+ 919: 771 Load 773(dmat4x2v)
+ 920: 765 Transpose 919
+ Store 767(dmat2x4v) 920
+ 921: 765 Load 767(dmat2x4v)
+ 922: 771 Transpose 921
+ Store 773(dmat4x2v) 922
+ 923: 783 Load 785(dmat4x3v)
+ 924: 777 Transpose 923
+ Store 779(dmat3x4v) 924
+ 925: 777 Load 779(dmat3x4v)
+ 926: 783 Transpose 925
+ Store 785(dmat4x3v) 926
+ 927: 735 Load 737(dmat2v)
+ 928: 37(float) ExtInst 1(GLSL.std.450) 33(Determinant) 927
+ 929: 37(float) Load 39(doublev)
+ 930: 37(float) FAdd 929 928
+ Store 39(doublev) 930
+ 931: 741 Load 743(dmat3v)
+ 932: 37(float) ExtInst 1(GLSL.std.450) 33(Determinant) 931
+ 933: 37(float) Load 39(doublev)
+ 934: 37(float) FAdd 933 932
+ Store 39(doublev) 934
+ 935: 747 Load 749(dmat4v)
+ 936: 37(float) ExtInst 1(GLSL.std.450) 33(Determinant) 935
+ 937: 37(float) Load 39(doublev)
+ 938: 37(float) FAdd 937 936
+ Store 39(doublev) 938
+ 939: 735 Load 737(dmat2v)
+ 940: 735 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 939
+ 941: 735 Load 737(dmat2v)
+ 942: 735 MatrixTimesMatrix 941 940
+ Store 737(dmat2v) 942
+ 943: 741 Load 743(dmat3v)
+ 944: 741 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 943
+ 945: 741 Load 743(dmat3v)
+ 946: 741 MatrixTimesMatrix 945 944
+ Store 743(dmat3v) 946
+ 947: 747 Load 749(dmat4v)
+ 948: 747 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 947
+ 949: 747 Load 749(dmat4v)
+ 950: 747 MatrixTimesMatrix 949 948
+ Store 749(dmat4v) 950
+ 951: 37(float) Load 39(doublev)
+ 953: 38(ptr) AccessChain 43(dvec2v) 952
+ 954: 37(float) Load 953
+ 955: 37(float) FAdd 951 954
+ 957: 38(ptr) AccessChain 48(dvec3v) 956
+ 958: 37(float) Load 957
+ 959: 37(float) FAdd 955 958
+ 961: 38(ptr) AccessChain 53(dvec4v) 960
+ 962: 37(float) Load 961
+ 963: 37(float) FAdd 959 962
+ 965: 38(ptr) AccessChain 737(dmat2v) 964 952
+ 966: 37(float) Load 965
+ 967: 37(float) FAdd 963 966
+ 969: 38(ptr) AccessChain 743(dmat3v) 968 956
+ 970: 37(float) Load 969
+ 971: 37(float) FAdd 967 970
+ 972: 38(ptr) AccessChain 749(dmat4v) 25 960
+ 973: 37(float) Load 972
+ 974: 37(float) FAdd 971 973
+ 975: 38(ptr) AccessChain 755(dmat2x3v) 964 952
+ 976: 37(float) Load 975
+ 977: 37(float) FAdd 974 976
+ 978: 38(ptr) AccessChain 761(dmat3x2v) 964 952
+ 979: 37(float) Load 978
+ 980: 37(float) FAdd 977 979
+ 981: 38(ptr) AccessChain 779(dmat3x4v) 968 956
+ 982: 37(float) Load 981
+ 983: 37(float) FAdd 980 982
+ 984: 38(ptr) AccessChain 785(dmat4x3v) 968 956
+ 985: 37(float) Load 984
+ 986: 37(float) FAdd 983 985
+ 987: 38(ptr) AccessChain 767(dmat2x4v) 964 952
+ 988: 37(float) Load 987
+ 989: 37(float) FAdd 986 988
+ 990: 38(ptr) AccessChain 773(dmat4x2v) 964 952
+ 991: 37(float) Load 990
+ 992: 37(float) FAdd 989 991
+ 993: 426(bool) Load 428(boolv)
+ 995: 10(float) Select 993 994 21
+ 996: 37(float) FConvert 995
+ 997: 37(float) FAdd 992 996
+ 998: 435(bvec2) Load 437(bvec2v)
+ 999: 426(bool) CompositeExtract 998 0
+ 1000: 10(float) Select 999 994 21
+ 1001: 37(float) FConvert 1000
+ 1002: 37(float) FAdd 997 1001
+ 1003: 444(bvec3) Load 446(bvec3v)
+ 1004: 426(bool) CompositeExtract 1003 0
+ 1005: 10(float) Select 1004 994 21
+ 1006: 37(float) FConvert 1005
+ 1007: 37(float) FAdd 1002 1006
+ 1008: 453(bvec4) Load 455(bvec4v)
+ 1009: 426(bool) CompositeExtract 1008 0
+ 1010: 10(float) Select 1009 994 21
+ 1011: 37(float) FConvert 1010
+ 1012: 37(float) FAdd 1007 1011
+ 1013: 10(float) FConvert 1012
+ 1014: 11(fvec4) Load 13(outp)
+ 1015: 11(fvec4) VectorTimesScalar 1014 1013
+ Store 13(outp) 1015
Return
FunctionEnd
--- /dev/null
+spv.sparseTexture.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 399
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 384
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 450
+ SourceExtension "GL_ARB_sparse_texture2"
+ Name 4 "main"
+ Name 8 "resident"
+ Name 13 "texel"
+ Name 18 "itexel"
+ Name 23 "utexel"
+ Name 29 "s2D"
+ Name 33 "c2"
+ Name 35 "ResType"
+ Name 44 "s3D"
+ Name 48 "c3"
+ Name 59 "isCube"
+ Name 62 "ResType"
+ Name 71 "s2DShadow"
+ Name 77 "ResType"
+ Name 86 "sCubeArrayShadow"
+ Name 89 "c4"
+ Name 108 "usCubeArray"
+ Name 111 "ResType"
+ Name 140 "us2DRect"
+ Name 154 "s2DArrayShadow"
+ Name 186 "s2DMS"
+ Name 223 "is2DArray"
+ Name 256 "sCubeShadow"
+ Name 289 "s2DRectShadow"
+ Name 360 "offsets"
+ Name 384 "outColor"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 9: 6(int) Constant 0
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypePointer Function 11(fvec4)
+ 14: 10(float) Constant 0
+ 15: 11(fvec4) ConstantComposite 14 14 14 14
+ 16: TypeVector 6(int) 4
+ 17: TypePointer Function 16(ivec4)
+ 19: 16(ivec4) ConstantComposite 9 9 9 9
+ 20: TypeInt 32 0
+ 21: TypeVector 20(int) 4
+ 22: TypePointer Function 21(ivec4)
+ 24: 20(int) Constant 0
+ 25: 21(ivec4) ConstantComposite 24 24 24 24
+ 26: TypeImage 10(float) 2D sampled format:Unknown
+ 27: TypeSampledImage 26
+ 28: TypePointer UniformConstant 27
+ 29(s2D): 28(ptr) Variable UniformConstant
+ 31: TypeVector 10(float) 2
+ 32: TypePointer UniformConstant 31(fvec2)
+ 33(c2): 32(ptr) Variable UniformConstant
+ 35(ResType): TypeStruct 6(int) 11(fvec4)
+ 41: TypeImage 10(float) 3D sampled format:Unknown
+ 42: TypeSampledImage 41
+ 43: TypePointer UniformConstant 42
+ 44(s3D): 43(ptr) Variable UniformConstant
+ 46: TypeVector 10(float) 3
+ 47: TypePointer UniformConstant 46(fvec3)
+ 48(c3): 47(ptr) Variable UniformConstant
+ 50: 10(float) Constant 1073741824
+ 56: TypeImage 6(int) Cube sampled format:Unknown
+ 57: TypeSampledImage 56
+ 58: TypePointer UniformConstant 57
+ 59(isCube): 58(ptr) Variable UniformConstant
+ 62(ResType): TypeStruct 6(int) 16(ivec4)
+ 68: TypeImage 10(float) 2D depth sampled format:Unknown
+ 69: TypeSampledImage 68
+ 70: TypePointer UniformConstant 69
+ 71(s2DShadow): 70(ptr) Variable UniformConstant
+ 74: TypePointer Function 10(float)
+ 77(ResType): TypeStruct 6(int) 10(float)
+ 83: TypeImage 10(float) Cube depth array sampled format:Unknown
+ 84: TypeSampledImage 83
+ 85: TypePointer UniformConstant 84
+86(sCubeArrayShadow): 85(ptr) Variable UniformConstant
+ 88: TypePointer UniformConstant 11(fvec4)
+ 89(c4): 88(ptr) Variable UniformConstant
+ 91: 10(float) Constant 1065353216
+ 105: TypeImage 20(int) Cube array sampled format:Unknown
+ 106: TypeSampledImage 105
+ 107: TypePointer UniformConstant 106
+108(usCubeArray): 107(ptr) Variable UniformConstant
+ 111(ResType): TypeStruct 6(int) 21(ivec4)
+ 119: 20(int) Constant 1
+ 129: TypeVector 6(int) 3
+ 130: 6(int) Constant 2
+ 131: 129(ivec3) ConstantComposite 130 130 130
+ 137: TypeImage 20(int) Rect sampled format:Unknown
+ 138: TypeSampledImage 137
+ 139: TypePointer UniformConstant 138
+ 140(us2DRect): 139(ptr) Variable UniformConstant
+ 143: TypeVector 6(int) 2
+ 144: 6(int) Constant 3
+ 145: 143(ivec2) ConstantComposite 144 144
+ 151: TypeImage 10(float) 2D depth array sampled format:Unknown
+ 152: TypeSampledImage 151
+ 153: TypePointer UniformConstant 152
+154(s2DArrayShadow): 153(ptr) Variable UniformConstant
+ 157: 6(int) Constant 5
+ 158: 143(ivec2) ConstantComposite 157 157
+ 159: 20(int) Constant 2
+ 183: TypeImage 10(float) 2D multi-sampled sampled format:Unknown
+ 184: TypeSampledImage 183
+ 185: TypePointer UniformConstant 184
+ 186(s2DMS): 185(ptr) Variable UniformConstant
+ 190: 6(int) Constant 4
+ 199: 129(ivec3) ConstantComposite 190 190 190
+ 220: TypeImage 6(int) 2D array sampled format:Unknown
+ 221: TypeSampledImage 220
+ 222: TypePointer UniformConstant 221
+ 223(is2DArray): 222(ptr) Variable UniformConstant
+ 226: 6(int) Constant 6
+ 227: 143(ivec2) ConstantComposite 226 226
+ 235: 6(int) Constant 7
+ 236: 143(ivec2) ConstantComposite 235 235
+ 253: TypeImage 10(float) Cube depth sampled format:Unknown
+ 254: TypeSampledImage 253
+ 255: TypePointer UniformConstant 254
+256(sCubeShadow): 255(ptr) Variable UniformConstant
+ 286: TypeImage 10(float) Rect depth sampled format:Unknown
+ 287: TypeSampledImage 286
+ 288: TypePointer UniformConstant 287
+289(s2DRectShadow): 288(ptr) Variable UniformConstant
+ 294: 20(int) Constant 3
+ 306: 143(ivec2) ConstantComposite 130 130
+ 335: 143(ivec2) ConstantComposite 190 190
+ 357: 20(int) Constant 4
+ 358: TypeArray 143(ivec2) 357
+ 359: TypePointer UniformConstant 358
+ 360(offsets): 359(ptr) Variable UniformConstant
+ 383: TypePointer Output 11(fvec4)
+ 384(outColor): 383(ptr) Variable Output
+ 387: TypeBool
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(resident): 7(ptr) Variable Function
+ 13(texel): 12(ptr) Variable Function
+ 18(itexel): 17(ptr) Variable Function
+ 23(utexel): 22(ptr) Variable Function
+ 385: 12(ptr) Variable Function
+ Store 8(resident) 9
+ Store 13(texel) 15
+ Store 18(itexel) 19
+ Store 23(utexel) 25
+ 30: 27 Load 29(s2D)
+ 34: 31(fvec2) Load 33(c2)
+ 36: 35(ResType) ImageSparseSampleImplicitLod 30 34
+ 37: 11(fvec4) CompositeExtract 36 1
+ Store 13(texel) 37
+ 38: 6(int) CompositeExtract 36 0
+ 39: 6(int) Load 8(resident)
+ 40: 6(int) BitwiseOr 39 38
+ Store 8(resident) 40
+ 45: 42 Load 44(s3D)
+ 49: 46(fvec3) Load 48(c3)
+ 51: 35(ResType) ImageSparseSampleImplicitLod 45 49 Bias 50
+ 52: 11(fvec4) CompositeExtract 51 1
+ Store 13(texel) 52
+ 53: 6(int) CompositeExtract 51 0
+ 54: 6(int) Load 8(resident)
+ 55: 6(int) BitwiseOr 54 53
+ Store 8(resident) 55
+ 60: 57 Load 59(isCube)
+ 61: 46(fvec3) Load 48(c3)
+ 63: 62(ResType) ImageSparseSampleImplicitLod 60 61
+ 64: 16(ivec4) CompositeExtract 63 1
+ Store 18(itexel) 64
+ 65: 6(int) CompositeExtract 63 0
+ 66: 6(int) Load 8(resident)
+ 67: 6(int) BitwiseOr 66 65
+ Store 8(resident) 67
+ 72: 69 Load 71(s2DShadow)
+ 73: 46(fvec3) Load 48(c3)
+ 75: 74(ptr) AccessChain 13(texel) 24
+ 76: 10(float) CompositeExtract 73 2
+ 78: 77(ResType) ImageSparseSampleDrefImplicitLod 72 73 76
+ 79: 10(float) CompositeExtract 78 1
+ Store 75 79
+ 80: 6(int) CompositeExtract 78 0
+ 81: 6(int) Load 8(resident)
+ 82: 6(int) BitwiseOr 81 80
+ Store 8(resident) 82
+ 87: 84 Load 86(sCubeArrayShadow)
+ 90: 11(fvec4) Load 89(c4)
+ 92: 74(ptr) AccessChain 13(texel) 24
+ 93: 77(ResType) ImageSparseSampleDrefImplicitLod 87 90 91
+ 94: 10(float) CompositeExtract 93 1
+ Store 92 94
+ 95: 6(int) CompositeExtract 93 0
+ 96: 6(int) Load 8(resident)
+ 97: 6(int) BitwiseOr 96 95
+ Store 8(resident) 97
+ 98: 27 Load 29(s2D)
+ 99: 31(fvec2) Load 33(c2)
+ 100: 35(ResType) ImageSparseSampleExplicitLod 98 99 Lod 50
+ 101: 11(fvec4) CompositeExtract 100 1
+ Store 13(texel) 101
+ 102: 6(int) CompositeExtract 100 0
+ 103: 6(int) Load 8(resident)
+ 104: 6(int) BitwiseOr 103 102
+ Store 8(resident) 104
+ 109: 106 Load 108(usCubeArray)
+ 110: 11(fvec4) Load 89(c4)
+ 112:111(ResType) ImageSparseSampleExplicitLod 109 110 Lod 91
+ 113: 21(ivec4) CompositeExtract 112 1
+ Store 23(utexel) 113
+ 114: 6(int) CompositeExtract 112 0
+ 115: 6(int) Load 8(resident)
+ 116: 6(int) BitwiseOr 115 114
+ Store 8(resident) 116
+ 117: 69 Load 71(s2DShadow)
+ 118: 46(fvec3) Load 48(c3)
+ 120: 74(ptr) AccessChain 13(texel) 119
+ 121: 10(float) CompositeExtract 118 2
+ 122: 77(ResType) ImageSparseSampleDrefExplicitLod 117 118 121 Lod 50
+ 123: 10(float) CompositeExtract 122 1
+ Store 120 123
+ 124: 6(int) CompositeExtract 122 0
+ 125: 6(int) Load 8(resident)
+ 126: 6(int) BitwiseOr 125 124
+ Store 8(resident) 126
+ 127: 42 Load 44(s3D)
+ 128: 46(fvec3) Load 48(c3)
+ 132: 35(ResType) ImageSparseSampleImplicitLod 127 128 Bias ConstOffset 50 131
+ 133: 11(fvec4) CompositeExtract 132 1
+ Store 13(texel) 133
+ 134: 6(int) CompositeExtract 132 0
+ 135: 6(int) Load 8(resident)
+ 136: 6(int) BitwiseOr 135 134
+ Store 8(resident) 136
+ 141: 138 Load 140(us2DRect)
+ 142: 31(fvec2) Load 33(c2)
+ 146:111(ResType) ImageSparseSampleImplicitLod 141 142 ConstOffset 145
+ 147: 21(ivec4) CompositeExtract 146 1
+ Store 23(utexel) 147
+ 148: 6(int) CompositeExtract 146 0
+ 149: 6(int) Load 8(resident)
+ 150: 6(int) BitwiseOr 149 148
+ Store 8(resident) 150
+ 155: 152 Load 154(s2DArrayShadow)
+ 156: 11(fvec4) Load 89(c4)
+ 160: 74(ptr) AccessChain 13(texel) 159
+ 161: 10(float) CompositeExtract 156 3
+ 162: 77(ResType) ImageSparseSampleDrefImplicitLod 155 156 161 ConstOffset 158
+ 163: 10(float) CompositeExtract 162 1
+ Store 160 163
+ 164: 6(int) CompositeExtract 162 0
+ 165: 6(int) Load 8(resident)
+ 166: 6(int) BitwiseOr 165 164
+ Store 8(resident) 166
+ 167: 27 Load 29(s2D)
+ 168: 31(fvec2) Load 33(c2)
+ 169: 143(ivec2) ConvertFToS 168
+ 170: 35(ResType) ImageSparseFetch 167 169 Lod 130
+ 171: 11(fvec4) CompositeExtract 170 1
+ Store 13(texel) 171
+ 172: 6(int) CompositeExtract 170 0
+ 173: 6(int) Load 8(resident)
+ 174: 6(int) BitwiseOr 173 172
+ Store 8(resident) 174
+ 175: 138 Load 140(us2DRect)
+ 176: 31(fvec2) Load 33(c2)
+ 177: 143(ivec2) ConvertFToS 176
+ 178:111(ResType) ImageSparseFetch 175 177
+ 179: 21(ivec4) CompositeExtract 178 1
+ Store 23(utexel) 179
+ 180: 6(int) CompositeExtract 178 0
+ 181: 6(int) Load 8(resident)
+ 182: 6(int) BitwiseOr 181 180
+ Store 8(resident) 182
+ 187: 184 Load 186(s2DMS)
+ 188: 31(fvec2) Load 33(c2)
+ 189: 143(ivec2) ConvertFToS 188
+ 191: 35(ResType) ImageSparseFetch 187 189 Sample 190
+ 192: 11(fvec4) CompositeExtract 191 1
+ Store 13(texel) 192
+ 193: 6(int) CompositeExtract 191 0
+ 194: 6(int) Load 8(resident)
+ 195: 6(int) BitwiseOr 194 193
+ Store 8(resident) 195
+ 196: 42 Load 44(s3D)
+ 197: 46(fvec3) Load 48(c3)
+ 198: 129(ivec3) ConvertFToS 197
+ 200: 35(ResType) ImageSparseFetch 196 198 Lod ConstOffset 130 199
+ 201: 11(fvec4) CompositeExtract 200 1
+ Store 13(texel) 201
+ 202: 6(int) CompositeExtract 200 0
+ 203: 6(int) Load 8(resident)
+ 204: 6(int) BitwiseOr 203 202
+ Store 8(resident) 204
+ 205: 138 Load 140(us2DRect)
+ 206: 31(fvec2) Load 33(c2)
+ 207: 143(ivec2) ConvertFToS 206
+ 208:111(ResType) ImageSparseFetch 205 207 ConstOffset 145
+ 209: 21(ivec4) CompositeExtract 208 1
+ Store 23(utexel) 209
+ 210: 6(int) CompositeExtract 208 0
+ 211: 6(int) Load 8(resident)
+ 212: 6(int) BitwiseOr 211 210
+ Store 8(resident) 212
+ 213: 27 Load 29(s2D)
+ 214: 31(fvec2) Load 33(c2)
+ 215: 35(ResType) ImageSparseSampleExplicitLod 213 214 Lod ConstOffset 50 158
+ 216: 11(fvec4) CompositeExtract 215 1
+ Store 13(texel) 216
+ 217: 6(int) CompositeExtract 215 0
+ 218: 6(int) Load 8(resident)
+ 219: 6(int) BitwiseOr 218 217
+ Store 8(resident) 219
+ 224: 221 Load 223(is2DArray)
+ 225: 46(fvec3) Load 48(c3)
+ 228: 62(ResType) ImageSparseSampleExplicitLod 224 225 Lod ConstOffset 50 227
+ 229: 16(ivec4) CompositeExtract 228 1
+ Store 18(itexel) 229
+ 230: 6(int) CompositeExtract 228 0
+ 231: 6(int) Load 8(resident)
+ 232: 6(int) BitwiseOr 231 230
+ Store 8(resident) 232
+ 233: 69 Load 71(s2DShadow)
+ 234: 46(fvec3) Load 48(c3)
+ 237: 74(ptr) AccessChain 13(texel) 159
+ 238: 10(float) CompositeExtract 234 2
+ 239: 77(ResType) ImageSparseSampleDrefExplicitLod 233 234 238 Lod ConstOffset 50 236
+ 240: 10(float) CompositeExtract 239 1
+ Store 237 240
+ 241: 6(int) CompositeExtract 239 0
+ 242: 6(int) Load 8(resident)
+ 243: 6(int) BitwiseOr 242 241
+ Store 8(resident) 243
+ 244: 42 Load 44(s3D)
+ 245: 46(fvec3) Load 48(c3)
+ 246: 46(fvec3) Load 48(c3)
+ 247: 46(fvec3) Load 48(c3)
+ 248: 35(ResType) ImageSparseSampleExplicitLod 244 245 Grad 246 247
+ 249: 11(fvec4) CompositeExtract 248 1
+ Store 13(texel) 249
+ 250: 6(int) CompositeExtract 248 0
+ 251: 6(int) Load 8(resident)
+ 252: 6(int) BitwiseOr 251 250
+ Store 8(resident) 252
+ 257: 254 Load 256(sCubeShadow)
+ 258: 11(fvec4) Load 89(c4)
+ 259: 46(fvec3) Load 48(c3)
+ 260: 46(fvec3) Load 48(c3)
+ 261: 74(ptr) AccessChain 13(texel) 119
+ 262: 10(float) CompositeExtract 258 3
+ 263: 77(ResType) ImageSparseSampleDrefExplicitLod 257 258 262 Grad 259 260
+ 264: 10(float) CompositeExtract 263 1
+ Store 261 264
+ 265: 6(int) CompositeExtract 263 0
+ 266: 6(int) Load 8(resident)
+ 267: 6(int) BitwiseOr 266 265
+ Store 8(resident) 267
+ 268: 106 Load 108(usCubeArray)
+ 269: 11(fvec4) Load 89(c4)
+ 270: 46(fvec3) Load 48(c3)
+ 271: 46(fvec3) Load 48(c3)
+ 272:111(ResType) ImageSparseSampleExplicitLod 268 269 Grad 270 271
+ 273: 21(ivec4) CompositeExtract 272 1
+ Store 23(utexel) 273
+ 274: 6(int) CompositeExtract 272 0
+ 275: 6(int) Load 8(resident)
+ 276: 6(int) BitwiseOr 275 274
+ Store 8(resident) 276
+ 277: 27 Load 29(s2D)
+ 278: 31(fvec2) Load 33(c2)
+ 279: 31(fvec2) Load 33(c2)
+ 280: 31(fvec2) Load 33(c2)
+ 281: 35(ResType) ImageSparseSampleExplicitLod 277 278 Grad ConstOffset 279 280 158
+ 282: 11(fvec4) CompositeExtract 281 1
+ Store 13(texel) 282
+ 283: 6(int) CompositeExtract 281 0
+ 284: 6(int) Load 8(resident)
+ 285: 6(int) BitwiseOr 284 283
+ Store 8(resident) 285
+ 290: 287 Load 289(s2DRectShadow)
+ 291: 46(fvec3) Load 48(c3)
+ 292: 31(fvec2) Load 33(c2)
+ 293: 31(fvec2) Load 33(c2)
+ 295: 74(ptr) AccessChain 13(texel) 294
+ 296: 10(float) CompositeExtract 291 2
+ 297: 77(ResType) ImageSparseSampleDrefExplicitLod 290 291 296 Grad ConstOffset 292 293 227
+ 298: 10(float) CompositeExtract 297 1
+ Store 295 298
+ 299: 6(int) CompositeExtract 297 0
+ 300: 6(int) Load 8(resident)
+ 301: 6(int) BitwiseOr 300 299
+ Store 8(resident) 301
+ 302: 221 Load 223(is2DArray)
+ 303: 46(fvec3) Load 48(c3)
+ 304: 31(fvec2) Load 33(c2)
+ 305: 31(fvec2) Load 33(c2)
+ 307: 62(ResType) ImageSparseSampleExplicitLod 302 303 Grad ConstOffset 304 305 306
+ 308: 16(ivec4) CompositeExtract 307 1
+ Store 18(itexel) 308
+ 309: 6(int) CompositeExtract 307 0
+ 310: 6(int) Load 8(resident)
+ 311: 6(int) BitwiseOr 310 309
+ Store 8(resident) 311
+ 312: 27 Load 29(s2D)
+ 313: 31(fvec2) Load 33(c2)
+ 314: 35(ResType) ImageSparseGather 312 313 9
+ 315: 11(fvec4) CompositeExtract 314 1
+ Store 13(texel) 315
+ 316: 6(int) CompositeExtract 314 0
+ 317: 6(int) Load 8(resident)
+ 318: 6(int) BitwiseOr 317 316
+ Store 8(resident) 318
+ 319: 221 Load 223(is2DArray)
+ 320: 46(fvec3) Load 48(c3)
+ 321: 62(ResType) ImageSparseGather 319 320 130
+ 322: 16(ivec4) CompositeExtract 321 1
+ Store 18(itexel) 322
+ 323: 6(int) CompositeExtract 321 0
+ 324: 6(int) Load 8(resident)
+ 325: 6(int) BitwiseOr 324 323
+ Store 8(resident) 325
+ 326: 152 Load 154(s2DArrayShadow)
+ 327: 46(fvec3) Load 48(c3)
+ 328: 35(ResType) ImageSparseDrefGather 326 327 50
+ 329: 11(fvec4) CompositeExtract 328 1
+ Store 13(texel) 329
+ 330: 6(int) CompositeExtract 328 0
+ 331: 6(int) Load 8(resident)
+ 332: 6(int) BitwiseOr 331 330
+ Store 8(resident) 332
+ 333: 27 Load 29(s2D)
+ 334: 31(fvec2) Load 33(c2)
+ 336: 35(ResType) ImageSparseGather 333 334 9 ConstOffset 335
+ 337: 11(fvec4) CompositeExtract 336 1
+ Store 13(texel) 337
+ 338: 6(int) CompositeExtract 336 0
+ 339: 6(int) Load 8(resident)
+ 340: 6(int) BitwiseOr 339 338
+ Store 8(resident) 340
+ 341: 221 Load 223(is2DArray)
+ 342: 46(fvec3) Load 48(c3)
+ 343: 62(ResType) ImageSparseGather 341 342 130 ConstOffset 158
+ 344: 16(ivec4) CompositeExtract 343 1
+ Store 18(itexel) 344
+ 345: 6(int) CompositeExtract 343 0
+ 346: 6(int) Load 8(resident)
+ 347: 6(int) BitwiseOr 346 345
+ Store 8(resident) 347
+ 348: 287 Load 289(s2DRectShadow)
+ 349: 31(fvec2) Load 33(c2)
+ 350: 35(ResType) ImageSparseDrefGather 348 349 50 ConstOffset 236
+ 351: 11(fvec4) CompositeExtract 350 1
+ Store 13(texel) 351
+ 352: 6(int) CompositeExtract 350 0
+ 353: 6(int) Load 8(resident)
+ 354: 6(int) BitwiseOr 353 352
+ Store 8(resident) 354
+ 355: 27 Load 29(s2D)
+ 356: 31(fvec2) Load 33(c2)
+ 361: 358 Load 360(offsets)
+ 362: 35(ResType) ImageSparseGather 355 356 9 ConstOffsets 361
+ 363: 11(fvec4) CompositeExtract 362 1
+ Store 13(texel) 363
+ 364: 6(int) CompositeExtract 362 0
+ 365: 6(int) Load 8(resident)
+ 366: 6(int) BitwiseOr 365 364
+ Store 8(resident) 366
+ 367: 221 Load 223(is2DArray)
+ 368: 46(fvec3) Load 48(c3)
+ 369: 358 Load 360(offsets)
+ 370: 62(ResType) ImageSparseGather 367 368 130 ConstOffsets 369
+ 371: 16(ivec4) CompositeExtract 370 1
+ Store 18(itexel) 371
+ 372: 6(int) CompositeExtract 370 0
+ 373: 6(int) Load 8(resident)
+ 374: 6(int) BitwiseOr 373 372
+ Store 8(resident) 374
+ 375: 287 Load 289(s2DRectShadow)
+ 376: 31(fvec2) Load 33(c2)
+ 377: 358 Load 360(offsets)
+ 378: 35(ResType) ImageSparseDrefGather 375 376 50 ConstOffsets 377
+ 379: 11(fvec4) CompositeExtract 378 1
+ Store 13(texel) 379
+ 380: 6(int) CompositeExtract 378 0
+ 381: 6(int) Load 8(resident)
+ 382: 6(int) BitwiseOr 381 380
+ Store 8(resident) 382
+ 386: 6(int) Load 8(resident)
+ 388: 387(bool) ImageSparseTexelsResident 386
+ SelectionMerge 390 None
+ BranchConditional 388 389 392
+ 389: Label
+ 391: 11(fvec4) Load 13(texel)
+ Store 385 391
+ Branch 390
+ 392: Label
+ 393: 16(ivec4) Load 18(itexel)
+ 394: 11(fvec4) ConvertSToF 393
+ 395: 21(ivec4) Load 23(utexel)
+ 396: 11(fvec4) ConvertUToF 395
+ 397: 11(fvec4) FAdd 394 396
+ Store 385 397
+ Branch 390
+ 390: Label
+ 398: 11(fvec4) Load 385
+ Store 384(outColor) 398
+ Return
+ FunctionEnd
--- /dev/null
+spv.sparseTextureClamp.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 360
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 345
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 450
+ SourceExtension "GL_ARB_sparse_texture_clamp"
+ Name 4 "main"
+ Name 8 "resident"
+ Name 13 "texel"
+ Name 18 "itexel"
+ Name 23 "utexel"
+ Name 29 "s2D"
+ Name 33 "c2"
+ Name 36 "lodClamp"
+ Name 38 "ResType"
+ Name 47 "s3D"
+ Name 51 "c3"
+ Name 63 "isCube"
+ Name 67 "ResType"
+ Name 76 "s2DShadow"
+ Name 83 "ResType"
+ Name 92 "sCubeArrayShadow"
+ Name 95 "c4"
+ Name 154 "us2DRect"
+ Name 161 "ResType"
+ Name 170 "s2DArrayShadow"
+ Name 218 "sCubeShadow"
+ Name 235 "usCubeArray"
+ Name 286 "s2DRectShadow"
+ Name 305 "is2DArray"
+ Name 345 "outColor"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 9: 6(int) Constant 0
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypePointer Function 11(fvec4)
+ 14: 10(float) Constant 0
+ 15: 11(fvec4) ConstantComposite 14 14 14 14
+ 16: TypeVector 6(int) 4
+ 17: TypePointer Function 16(ivec4)
+ 19: 16(ivec4) ConstantComposite 9 9 9 9
+ 20: TypeInt 32 0
+ 21: TypeVector 20(int) 4
+ 22: TypePointer Function 21(ivec4)
+ 24: 20(int) Constant 0
+ 25: 21(ivec4) ConstantComposite 24 24 24 24
+ 26: TypeImage 10(float) 2D sampled format:Unknown
+ 27: TypeSampledImage 26
+ 28: TypePointer UniformConstant 27
+ 29(s2D): 28(ptr) Variable UniformConstant
+ 31: TypeVector 10(float) 2
+ 32: TypePointer UniformConstant 31(fvec2)
+ 33(c2): 32(ptr) Variable UniformConstant
+ 35: TypePointer UniformConstant 10(float)
+ 36(lodClamp): 35(ptr) Variable UniformConstant
+ 38(ResType): TypeStruct 6(int) 11(fvec4)
+ 44: TypeImage 10(float) 3D sampled format:Unknown
+ 45: TypeSampledImage 44
+ 46: TypePointer UniformConstant 45
+ 47(s3D): 46(ptr) Variable UniformConstant
+ 49: TypeVector 10(float) 3
+ 50: TypePointer UniformConstant 49(fvec3)
+ 51(c3): 50(ptr) Variable UniformConstant
+ 54: 10(float) Constant 1073741824
+ 60: TypeImage 6(int) Cube sampled format:Unknown
+ 61: TypeSampledImage 60
+ 62: TypePointer UniformConstant 61
+ 63(isCube): 62(ptr) Variable UniformConstant
+ 67(ResType): TypeStruct 6(int) 16(ivec4)
+ 73: TypeImage 10(float) 2D depth sampled format:Unknown
+ 74: TypeSampledImage 73
+ 75: TypePointer UniformConstant 74
+ 76(s2DShadow): 75(ptr) Variable UniformConstant
+ 80: TypePointer Function 10(float)
+ 83(ResType): TypeStruct 6(int) 10(float)
+ 89: TypeImage 10(float) Cube depth array sampled format:Unknown
+ 90: TypeSampledImage 89
+ 91: TypePointer UniformConstant 90
+92(sCubeArrayShadow): 91(ptr) Variable UniformConstant
+ 94: TypePointer UniformConstant 11(fvec4)
+ 95(c4): 94(ptr) Variable UniformConstant
+ 97: 10(float) Constant 1065353216
+ 142: TypeVector 6(int) 3
+ 143: 6(int) Constant 2
+ 144: 142(ivec3) ConstantComposite 143 143 143
+ 151: TypeImage 20(int) Rect sampled format:Unknown
+ 152: TypeSampledImage 151
+ 153: TypePointer UniformConstant 152
+ 154(us2DRect): 153(ptr) Variable UniformConstant
+ 157: TypeVector 6(int) 2
+ 158: 6(int) Constant 3
+ 159: 157(ivec2) ConstantComposite 158 158
+ 161(ResType): TypeStruct 6(int) 21(ivec4)
+ 167: TypeImage 10(float) 2D depth array sampled format:Unknown
+ 168: TypeSampledImage 167
+ 169: TypePointer UniformConstant 168
+170(s2DArrayShadow): 169(ptr) Variable UniformConstant
+ 173: 6(int) Constant 5
+ 174: 157(ivec2) ConstantComposite 173 173
+ 176: 20(int) Constant 2
+ 215: TypeImage 10(float) Cube depth sampled format:Unknown
+ 216: TypeSampledImage 215
+ 217: TypePointer UniformConstant 216
+218(sCubeShadow): 217(ptr) Variable UniformConstant
+ 224: 20(int) Constant 1
+ 232: TypeImage 20(int) Cube array sampled format:Unknown
+ 233: TypeSampledImage 232
+ 234: TypePointer UniformConstant 233
+235(usCubeArray): 234(ptr) Variable UniformConstant
+ 283: TypeImage 10(float) Rect depth sampled format:Unknown
+ 284: TypeSampledImage 283
+ 285: TypePointer UniformConstant 284
+286(s2DRectShadow): 285(ptr) Variable UniformConstant
+ 291: 6(int) Constant 6
+ 292: 157(ivec2) ConstantComposite 291 291
+ 294: 20(int) Constant 3
+ 302: TypeImage 6(int) 2D array sampled format:Unknown
+ 303: TypeSampledImage 302
+ 304: TypePointer UniformConstant 303
+ 305(is2DArray): 304(ptr) Variable UniformConstant
+ 310: 157(ivec2) ConstantComposite 143 143
+ 344: TypePointer Output 11(fvec4)
+ 345(outColor): 344(ptr) Variable Output
+ 348: TypeBool
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(resident): 7(ptr) Variable Function
+ 13(texel): 12(ptr) Variable Function
+ 18(itexel): 17(ptr) Variable Function
+ 23(utexel): 22(ptr) Variable Function
+ 346: 12(ptr) Variable Function
+ Store 8(resident) 9
+ Store 13(texel) 15
+ Store 18(itexel) 19
+ Store 23(utexel) 25
+ 30: 27 Load 29(s2D)
+ 34: 31(fvec2) Load 33(c2)
+ 37: 10(float) Load 36(lodClamp)
+ 39: 38(ResType) ImageSparseSampleImplicitLod 30 34 MinLod 37
+ 40: 11(fvec4) CompositeExtract 39 1
+ Store 13(texel) 40
+ 41: 6(int) CompositeExtract 39 0
+ 42: 6(int) Load 8(resident)
+ 43: 6(int) BitwiseOr 42 41
+ Store 8(resident) 43
+ 48: 45 Load 47(s3D)
+ 52: 49(fvec3) Load 51(c3)
+ 53: 10(float) Load 36(lodClamp)
+ 55: 38(ResType) ImageSparseSampleImplicitLod 48 52 Bias MinLod 54 53
+ 56: 11(fvec4) CompositeExtract 55 1
+ Store 13(texel) 56
+ 57: 6(int) CompositeExtract 55 0
+ 58: 6(int) Load 8(resident)
+ 59: 6(int) BitwiseOr 58 57
+ Store 8(resident) 59
+ 64: 61 Load 63(isCube)
+ 65: 49(fvec3) Load 51(c3)
+ 66: 10(float) Load 36(lodClamp)
+ 68: 67(ResType) ImageSparseSampleImplicitLod 64 65 MinLod 66
+ 69: 16(ivec4) CompositeExtract 68 1
+ Store 18(itexel) 69
+ 70: 6(int) CompositeExtract 68 0
+ 71: 6(int) Load 8(resident)
+ 72: 6(int) BitwiseOr 71 70
+ Store 8(resident) 72
+ 77: 74 Load 76(s2DShadow)
+ 78: 49(fvec3) Load 51(c3)
+ 79: 10(float) Load 36(lodClamp)
+ 81: 80(ptr) AccessChain 13(texel) 24
+ 82: 10(float) CompositeExtract 78 2
+ 84: 83(ResType) ImageSparseSampleDrefImplicitLod 77 78 82 MinLod 79
+ 85: 10(float) CompositeExtract 84 1
+ Store 81 85
+ 86: 6(int) CompositeExtract 84 0
+ 87: 6(int) Load 8(resident)
+ 88: 6(int) BitwiseOr 87 86
+ Store 8(resident) 88
+ 93: 90 Load 92(sCubeArrayShadow)
+ 96: 11(fvec4) Load 95(c4)
+ 98: 10(float) Load 36(lodClamp)
+ 99: 80(ptr) AccessChain 13(texel) 24
+ 100: 83(ResType) ImageSparseSampleDrefImplicitLod 93 96 97 MinLod 98
+ 101: 10(float) CompositeExtract 100 1
+ Store 99 101
+ 102: 6(int) CompositeExtract 100 0
+ 103: 6(int) Load 8(resident)
+ 104: 6(int) BitwiseOr 103 102
+ Store 8(resident) 104
+ 105: 27 Load 29(s2D)
+ 106: 31(fvec2) Load 33(c2)
+ 107: 10(float) Load 36(lodClamp)
+ 108: 11(fvec4) ImageSampleImplicitLod 105 106 MinLod 107
+ 109: 11(fvec4) Load 13(texel)
+ 110: 11(fvec4) FAdd 109 108
+ Store 13(texel) 110
+ 111: 45 Load 47(s3D)
+ 112: 49(fvec3) Load 51(c3)
+ 113: 10(float) Load 36(lodClamp)
+ 114: 11(fvec4) ImageSampleImplicitLod 111 112 Bias MinLod 54 113
+ 115: 11(fvec4) Load 13(texel)
+ 116: 11(fvec4) FAdd 115 114
+ Store 13(texel) 116
+ 117: 61 Load 63(isCube)
+ 118: 49(fvec3) Load 51(c3)
+ 119: 10(float) Load 36(lodClamp)
+ 120: 16(ivec4) ImageSampleImplicitLod 117 118 MinLod 119
+ 121: 16(ivec4) Load 18(itexel)
+ 122: 16(ivec4) IAdd 121 120
+ Store 18(itexel) 122
+ 123: 74 Load 76(s2DShadow)
+ 124: 49(fvec3) Load 51(c3)
+ 125: 10(float) Load 36(lodClamp)
+ 126: 10(float) CompositeExtract 124 2
+ 127: 10(float) ImageSampleDrefImplicitLod 123 124 126 MinLod 125
+ 128: 80(ptr) AccessChain 13(texel) 24
+ 129: 10(float) Load 128
+ 130: 10(float) FAdd 129 127
+ 131: 80(ptr) AccessChain 13(texel) 24
+ Store 131 130
+ 132: 90 Load 92(sCubeArrayShadow)
+ 133: 11(fvec4) Load 95(c4)
+ 134: 10(float) Load 36(lodClamp)
+ 135: 10(float) ImageSampleDrefImplicitLod 132 133 97 MinLod 134
+ 136: 80(ptr) AccessChain 13(texel) 24
+ 137: 10(float) Load 136
+ 138: 10(float) FAdd 137 135
+ 139: 80(ptr) AccessChain 13(texel) 24
+ Store 139 138
+ 140: 45 Load 47(s3D)
+ 141: 49(fvec3) Load 51(c3)
+ 145: 10(float) Load 36(lodClamp)
+ 146: 38(ResType) ImageSparseSampleImplicitLod 140 141 Bias ConstOffset MinLod 54 144 145
+ 147: 11(fvec4) CompositeExtract 146 1
+ Store 13(texel) 147
+ 148: 6(int) CompositeExtract 146 0
+ 149: 6(int) Load 8(resident)
+ 150: 6(int) BitwiseOr 149 148
+ Store 8(resident) 150
+ 155: 152 Load 154(us2DRect)
+ 156: 31(fvec2) Load 33(c2)
+ 160: 10(float) Load 36(lodClamp)
+ 162:161(ResType) ImageSparseSampleImplicitLod 155 156 ConstOffset MinLod 159 160
+ 163: 21(ivec4) CompositeExtract 162 1
+ Store 23(utexel) 163
+ 164: 6(int) CompositeExtract 162 0
+ 165: 6(int) Load 8(resident)
+ 166: 6(int) BitwiseOr 165 164
+ Store 8(resident) 166
+ 171: 168 Load 170(s2DArrayShadow)
+ 172: 11(fvec4) Load 95(c4)
+ 175: 10(float) Load 36(lodClamp)
+ 177: 80(ptr) AccessChain 13(texel) 176
+ 178: 10(float) CompositeExtract 172 3
+ 179: 83(ResType) ImageSparseSampleDrefImplicitLod 171 172 178 ConstOffset MinLod 174 175
+ 180: 10(float) CompositeExtract 179 1
+ Store 177 180
+ 181: 6(int) CompositeExtract 179 0
+ 182: 6(int) Load 8(resident)
+ 183: 6(int) BitwiseOr 182 181
+ Store 8(resident) 183
+ 184: 45 Load 47(s3D)
+ 185: 49(fvec3) Load 51(c3)
+ 186: 10(float) Load 36(lodClamp)
+ 187: 11(fvec4) ImageSampleImplicitLod 184 185 Bias ConstOffset MinLod 54 144 186
+ 188: 11(fvec4) Load 13(texel)
+ 189: 11(fvec4) FAdd 188 187
+ Store 13(texel) 189
+ 190: 152 Load 154(us2DRect)
+ 191: 31(fvec2) Load 33(c2)
+ 192: 10(float) Load 36(lodClamp)
+ 193: 21(ivec4) ImageSampleImplicitLod 190 191 ConstOffset MinLod 159 192
+ 194: 21(ivec4) Load 23(utexel)
+ 195: 21(ivec4) IAdd 194 193
+ Store 23(utexel) 195
+ 196: 168 Load 170(s2DArrayShadow)
+ 197: 11(fvec4) Load 95(c4)
+ 198: 10(float) Load 36(lodClamp)
+ 199: 10(float) CompositeExtract 197 3
+ 200: 10(float) ImageSampleDrefImplicitLod 196 197 199 ConstOffset MinLod 174 198
+ 201: 80(ptr) AccessChain 13(texel) 176
+ 202: 10(float) Load 201
+ 203: 10(float) FAdd 202 200
+ 204: 80(ptr) AccessChain 13(texel) 176
+ Store 204 203
+ 205: 45 Load 47(s3D)
+ 206: 49(fvec3) Load 51(c3)
+ 207: 49(fvec3) Load 51(c3)
+ 208: 49(fvec3) Load 51(c3)
+ 209: 10(float) Load 36(lodClamp)
+ 210: 38(ResType) ImageSparseSampleExplicitLod 205 206 Grad MinLod 207 208 209
+ 211: 11(fvec4) CompositeExtract 210 1
+ Store 13(texel) 211
+ 212: 6(int) CompositeExtract 210 0
+ 213: 6(int) Load 8(resident)
+ 214: 6(int) BitwiseOr 213 212
+ Store 8(resident) 214
+ 219: 216 Load 218(sCubeShadow)
+ 220: 11(fvec4) Load 95(c4)
+ 221: 49(fvec3) Load 51(c3)
+ 222: 49(fvec3) Load 51(c3)
+ 223: 10(float) Load 36(lodClamp)
+ 225: 80(ptr) AccessChain 13(texel) 224
+ 226: 10(float) CompositeExtract 220 3
+ 227: 83(ResType) ImageSparseSampleDrefExplicitLod 219 220 226 Grad MinLod 221 222 223
+ 228: 10(float) CompositeExtract 227 1
+ Store 225 228
+ 229: 6(int) CompositeExtract 227 0
+ 230: 6(int) Load 8(resident)
+ 231: 6(int) BitwiseOr 230 229
+ Store 8(resident) 231
+ 236: 233 Load 235(usCubeArray)
+ 237: 11(fvec4) Load 95(c4)
+ 238: 49(fvec3) Load 51(c3)
+ 239: 49(fvec3) Load 51(c3)
+ 240: 10(float) Load 36(lodClamp)
+ 241:161(ResType) ImageSparseSampleExplicitLod 236 237 Grad MinLod 238 239 240
+ 242: 21(ivec4) CompositeExtract 241 1
+ Store 23(utexel) 242
+ 243: 6(int) CompositeExtract 241 0
+ 244: 6(int) Load 8(resident)
+ 245: 6(int) BitwiseOr 244 243
+ Store 8(resident) 245
+ 246: 45 Load 47(s3D)
+ 247: 49(fvec3) Load 51(c3)
+ 248: 49(fvec3) Load 51(c3)
+ 249: 49(fvec3) Load 51(c3)
+ 250: 10(float) Load 36(lodClamp)
+ 251: 11(fvec4) ImageSampleExplicitLod 246 247 Grad MinLod 248 249 250
+ 252: 11(fvec4) Load 13(texel)
+ 253: 11(fvec4) FAdd 252 251
+ Store 13(texel) 253
+ 254: 216 Load 218(sCubeShadow)
+ 255: 11(fvec4) Load 95(c4)
+ 256: 49(fvec3) Load 51(c3)
+ 257: 49(fvec3) Load 51(c3)
+ 258: 10(float) Load 36(lodClamp)
+ 259: 10(float) CompositeExtract 255 3
+ 260: 10(float) ImageSampleDrefExplicitLod 254 255 259 Grad MinLod 256 257 258
+ 261: 80(ptr) AccessChain 13(texel) 224
+ 262: 10(float) Load 261
+ 263: 10(float) FAdd 262 260
+ 264: 80(ptr) AccessChain 13(texel) 224
+ Store 264 263
+ 265: 233 Load 235(usCubeArray)
+ 266: 11(fvec4) Load 95(c4)
+ 267: 49(fvec3) Load 51(c3)
+ 268: 49(fvec3) Load 51(c3)
+ 269: 10(float) Load 36(lodClamp)
+ 270: 21(ivec4) ImageSampleExplicitLod 265 266 Grad MinLod 267 268 269
+ 271: 21(ivec4) Load 23(utexel)
+ 272: 21(ivec4) IAdd 271 270
+ Store 23(utexel) 272
+ 273: 27 Load 29(s2D)
+ 274: 31(fvec2) Load 33(c2)
+ 275: 31(fvec2) Load 33(c2)
+ 276: 31(fvec2) Load 33(c2)
+ 277: 10(float) Load 36(lodClamp)
+ 278: 38(ResType) ImageSparseSampleExplicitLod 273 274 Grad ConstOffset MinLod 275 276 174 277
+ 279: 11(fvec4) CompositeExtract 278 1
+ Store 13(texel) 279
+ 280: 6(int) CompositeExtract 278 0
+ 281: 6(int) Load 8(resident)
+ 282: 6(int) BitwiseOr 281 280
+ Store 8(resident) 282
+ 287: 284 Load 286(s2DRectShadow)
+ 288: 49(fvec3) Load 51(c3)
+ 289: 31(fvec2) Load 33(c2)
+ 290: 31(fvec2) Load 33(c2)
+ 293: 10(float) Load 36(lodClamp)
+ 295: 80(ptr) AccessChain 13(texel) 294
+ 296: 10(float) CompositeExtract 288 2
+ 297: 83(ResType) ImageSparseSampleDrefExplicitLod 287 288 296 Grad ConstOffset MinLod 289 290 292 293
+ 298: 10(float) CompositeExtract 297 1
+ Store 295 298
+ 299: 6(int) CompositeExtract 297 0
+ 300: 6(int) Load 8(resident)
+ 301: 6(int) BitwiseOr 300 299
+ Store 8(resident) 301
+ 306: 303 Load 305(is2DArray)
+ 307: 49(fvec3) Load 51(c3)
+ 308: 31(fvec2) Load 33(c2)
+ 309: 31(fvec2) Load 33(c2)
+ 311: 10(float) Load 36(lodClamp)
+ 312: 67(ResType) ImageSparseSampleExplicitLod 306 307 Grad ConstOffset MinLod 308 309 310 311
+ 313: 16(ivec4) CompositeExtract 312 1
+ Store 18(itexel) 313
+ 314: 6(int) CompositeExtract 312 0
+ 315: 6(int) Load 8(resident)
+ 316: 6(int) BitwiseOr 315 314
+ Store 8(resident) 316
+ 317: 27 Load 29(s2D)
+ 318: 31(fvec2) Load 33(c2)
+ 319: 31(fvec2) Load 33(c2)
+ 320: 31(fvec2) Load 33(c2)
+ 321: 10(float) Load 36(lodClamp)
+ 322: 11(fvec4) ImageSampleExplicitLod 317 318 Grad ConstOffset MinLod 319 320 174 321
+ 323: 11(fvec4) Load 13(texel)
+ 324: 11(fvec4) FAdd 323 322
+ Store 13(texel) 324
+ 325: 284 Load 286(s2DRectShadow)
+ 326: 49(fvec3) Load 51(c3)
+ 327: 31(fvec2) Load 33(c2)
+ 328: 31(fvec2) Load 33(c2)
+ 329: 10(float) Load 36(lodClamp)
+ 330: 10(float) CompositeExtract 326 2
+ 331: 10(float) ImageSampleDrefExplicitLod 325 326 330 Grad ConstOffset MinLod 327 328 292 329
+ 332: 80(ptr) AccessChain 13(texel) 294
+ 333: 10(float) Load 332
+ 334: 10(float) FAdd 333 331
+ 335: 80(ptr) AccessChain 13(texel) 294
+ Store 335 334
+ 336: 303 Load 305(is2DArray)
+ 337: 49(fvec3) Load 51(c3)
+ 338: 31(fvec2) Load 33(c2)
+ 339: 31(fvec2) Load 33(c2)
+ 340: 10(float) Load 36(lodClamp)
+ 341: 16(ivec4) ImageSampleExplicitLod 336 337 Grad ConstOffset MinLod 338 339 310 340
+ 342: 16(ivec4) Load 18(itexel)
+ 343: 16(ivec4) IAdd 342 341
+ Store 18(itexel) 343
+ 347: 6(int) Load 8(resident)
+ 349: 348(bool) ImageSparseTexelsResident 347
+ SelectionMerge 351 None
+ BranchConditional 349 350 353
+ 350: Label
+ 352: 11(fvec4) Load 13(texel)
+ Store 346 352
+ Branch 351
+ 353: Label
+ 354: 16(ivec4) Load 18(itexel)
+ 355: 11(fvec4) ConvertSToF 354
+ 356: 21(ivec4) Load 23(utexel)
+ 357: 11(fvec4) ConvertUToF 356
+ 358: 11(fvec4) FAdd 355 357
+ Store 346 358
+ Branch 351
+ 351: Label
+ 359: 11(fvec4) Load 346
+ Store 345(outColor) 359
+ Return
+ FunctionEnd
outp.x += textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[1]);\r
}\r
\r
+void doubles()\r
+{\r
+ double doublev;\r
+ dvec2 dvec2v;\r
+ dvec3 dvec3v;\r
+ dvec4 dvec4v;\r
+\r
+ bool boolv;\r
+ bvec2 bvec2v;\r
+ bvec3 bvec3v;\r
+ bvec4 bvec4v;\r
+\r
+ doublev = sqrt(2.9);\r
+ dvec2v = sqrt(dvec2(2.7));\r
+ dvec3v = sqrt(dvec3(2.0));\r
+ dvec4v = sqrt(dvec4(doublev));\r
+\r
+ doublev += inversesqrt(doublev);\r
+ dvec2v += inversesqrt(dvec2v);\r
+ dvec3v += inversesqrt(dvec3v);\r
+ dvec4v += inversesqrt(dvec4v);\r
+\r
+ doublev += abs(doublev);\r
+ dvec2v += abs(dvec2v);\r
+ dvec3v += abs(dvec3v);\r
+ dvec4v += abs(dvec4v);\r
+\r
+ doublev += sign(doublev);\r
+ dvec2v += sign(dvec2v);\r
+ dvec3v += sign(dvec3v);\r
+ dvec4v += sign(dvec4v);\r
+\r
+ doublev += floor(doublev);\r
+ dvec2v += floor(dvec2v);\r
+ dvec3v += floor(dvec3v);\r
+ dvec4v += floor(dvec4v);\r
+\r
+ doublev += trunc(doublev);\r
+ dvec2v += trunc(dvec2v);\r
+ dvec3v += trunc(dvec3v);\r
+ dvec4v += trunc(dvec4v);\r
+\r
+ doublev += round(doublev);\r
+ dvec2v += round(dvec2v);\r
+ dvec3v += round(dvec3v);\r
+ dvec4v += round(dvec4v);\r
+\r
+ doublev += roundEven(doublev);\r
+ dvec2v += roundEven(dvec2v);\r
+ dvec3v += roundEven(dvec3v);\r
+ dvec4v += roundEven(dvec4v);\r
+\r
+ doublev += ceil(doublev);\r
+ dvec2v += ceil(dvec2v);\r
+ dvec3v += ceil(dvec3v);\r
+ dvec4v += ceil(dvec4v);\r
+\r
+ doublev += fract(doublev);\r
+ dvec2v += fract(dvec2v);\r
+ dvec3v += fract(dvec3v);\r
+ dvec4v += fract(dvec4v);\r
+\r
+ doublev += mod(doublev, doublev);\r
+ dvec2v += mod(dvec2v, doublev);\r
+ dvec3v += mod(dvec3v, doublev);\r
+ dvec4v += mod(dvec4v, doublev);\r
+ dvec2v += mod(dvec2v, dvec2v);\r
+ dvec3v += mod(dvec3v, dvec3v);\r
+ dvec4v += mod(dvec4v, dvec4v);\r
+\r
+ doublev += modf(doublev, doublev);\r
+ dvec2v += modf(dvec2v, dvec2v);\r
+ dvec3v += modf(dvec3v, dvec3v);\r
+ dvec4v += modf(dvec4v, dvec4v);\r
+\r
+ doublev += min(doublev, doublev);\r
+ dvec2v += min(dvec2v, doublev);\r
+ dvec3v += min(dvec3v, doublev);\r
+ dvec4v += min(dvec4v, doublev);\r
+ dvec2v += min(dvec2v, dvec2v);\r
+ dvec3v += min(dvec3v, dvec3v);\r
+ dvec4v += min(dvec4v, dvec4v);\r
+\r
+ doublev += max(doublev, doublev);\r
+ dvec2v += max(dvec2v, doublev);\r
+ dvec3v += max(dvec3v, doublev);\r
+ dvec4v += max(dvec4v, doublev);\r
+ dvec2v += max(dvec2v, dvec2v);\r
+ dvec3v += max(dvec3v, dvec3v);\r
+ dvec4v += max(dvec4v, dvec4v);\r
+\r
+ doublev += clamp(doublev, doublev, doublev);\r
+ dvec2v += clamp(dvec2v, doublev, doublev);\r
+ dvec3v += clamp(dvec3v, doublev, doublev);\r
+ dvec4v += clamp(dvec4v, doublev, doublev);\r
+ dvec2v += clamp(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += clamp(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += clamp(dvec4v, dvec4v, dvec4v);\r
+\r
+ doublev += mix(doublev, doublev, doublev);\r
+ dvec2v += mix(dvec2v, dvec2v, doublev);\r
+ dvec3v += mix(dvec3v, dvec3v, doublev);\r
+ dvec4v += mix(dvec4v, dvec4v, doublev);\r
+ dvec2v += mix(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += mix(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += mix(dvec4v, dvec4v, dvec4v);\r
+ doublev += mix(doublev, doublev, boolv);\r
+ dvec2v += mix(dvec2v, dvec2v, bvec2v);\r
+ dvec3v += mix(dvec3v, dvec3v, bvec3v);\r
+ dvec4v += mix(dvec4v, dvec4v, bvec4v);\r
+\r
+ doublev += step(doublev, doublev);\r
+ dvec2v += step(dvec2v, dvec2v);\r
+ dvec3v += step(dvec3v, dvec3v);\r
+ dvec4v += step(dvec4v, dvec4v);\r
+ dvec2v += step(doublev, dvec2v);\r
+ dvec3v += step(doublev, dvec3v);\r
+ dvec4v += step(doublev, dvec4v);\r
+\r
+ doublev += smoothstep(doublev, doublev, doublev);\r
+ dvec2v += smoothstep(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += smoothstep(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += smoothstep(dvec4v, dvec4v, dvec4v);\r
+ dvec2v += smoothstep(doublev, doublev, dvec2v);\r
+ dvec3v += smoothstep(doublev, doublev, dvec3v);\r
+ dvec4v += smoothstep(doublev, doublev, dvec4v);\r
+\r
+ boolv = isnan(doublev);\r
+ bvec2v = isnan(dvec2v);\r
+ bvec3v = isnan(dvec3v);\r
+ bvec4v = isnan(dvec4v);\r
+\r
+ boolv = boolv ? isinf(doublev) : false;\r
+ bvec2v = boolv ? isinf(dvec2v) : bvec2(false);\r
+ bvec3v = boolv ? isinf(dvec3v) : bvec3(false);\r
+ bvec4v = boolv ? isinf(dvec4v) : bvec4(false);\r
+\r
+ doublev += length(doublev);\r
+ doublev += length(dvec2v);\r
+ doublev += length(dvec3v);\r
+ doublev += length(dvec4v);\r
+\r
+ doublev += distance(doublev, doublev);\r
+ doublev += distance(dvec2v, dvec2v);\r
+ doublev += distance(dvec3v, dvec3v);\r
+ doublev += distance(dvec4v, dvec4v);\r
+\r
+ doublev += dot(doublev, doublev);\r
+ doublev += dot(dvec2v, dvec2v);\r
+ doublev += dot(dvec3v, dvec3v);\r
+ doublev += dot(dvec4v, dvec4v);\r
+\r
+ dvec3v += cross(dvec3v, dvec3v);\r
+\r
+ doublev += normalize(doublev);\r
+ dvec2v += normalize(dvec2v);\r
+ dvec3v += normalize(dvec3v);\r
+ dvec4v += normalize(dvec4v);\r
+\r
+ doublev += faceforward(doublev, doublev, doublev);\r
+ dvec2v += faceforward(dvec2v, dvec2v, dvec2v);\r
+ dvec3v += faceforward(dvec3v, dvec3v, dvec3v);\r
+ dvec4v += faceforward(dvec4v, dvec4v, dvec4v);\r
+\r
+ doublev += reflect(doublev, doublev);\r
+ dvec2v += reflect(dvec2v, dvec2v);\r
+ dvec3v += reflect(dvec3v, dvec3v);\r
+ dvec4v += reflect(dvec4v, dvec4v);\r
+\r
+ doublev += refract(doublev, doublev, doublev);\r
+ dvec2v += refract(dvec2v, dvec2v, doublev);\r
+ dvec3v += refract(dvec3v, dvec3v, doublev);\r
+ dvec4v += refract(dvec4v, dvec4v, doublev);\r
+\r
+ dmat2 dmat2v = outerProduct(dvec2v, dvec2v);\r
+ dmat3 dmat3v = outerProduct(dvec3v, dvec3v);\r
+ dmat4 dmat4v = outerProduct(dvec4v, dvec4v);\r
+ dmat2x3 dmat2x3v = outerProduct(dvec3v, dvec2v);\r
+ dmat3x2 dmat3x2v = outerProduct(dvec2v, dvec3v);\r
+ dmat2x4 dmat2x4v = outerProduct(dvec4v, dvec2v);\r
+ dmat4x2 dmat4x2v = outerProduct(dvec2v, dvec4v);\r
+ dmat3x4 dmat3x4v = outerProduct(dvec4v, dvec3v);\r
+ dmat4x3 dmat4x3v = outerProduct(dvec3v, dvec4v);\r
+\r
+ dmat2v *= matrixCompMult(dmat2v, dmat2v);
+ dmat3v *= matrixCompMult(dmat3v, dmat3v);
+ dmat4v *= matrixCompMult(dmat4v, dmat4v);
+ dmat2x3v = matrixCompMult(dmat2x3v, dmat2x3v); // For now, relying on no dead-code elimination\r
+ dmat2x4v = matrixCompMult(dmat2x4v, dmat2x4v);\r
+ dmat3x2v = matrixCompMult(dmat3x2v, dmat3x2v);\r
+ dmat3x4v = matrixCompMult(dmat3x4v, dmat3x4v);\r
+ dmat4x2v = matrixCompMult(dmat4x2v, dmat4x2v);\r
+ dmat4x3v = matrixCompMult(dmat4x3v, dmat4x3v);\r
+\r
+ dmat2v *= transpose(dmat2v);\r
+ dmat3v *= transpose(dmat3v);\r
+ dmat4v *= transpose(dmat4v);\r
+ dmat2x3v = transpose(dmat3x2v); // For now, relying on no dead-code elimination\r
+ dmat3x2v = transpose(dmat2x3v);\r
+ dmat2x4v = transpose(dmat4x2v);\r
+ dmat4x2v = transpose(dmat2x4v);\r
+ dmat3x4v = transpose(dmat4x3v);\r
+ dmat4x3v = transpose(dmat3x4v);\r
+\r
+ doublev += determinant(dmat2v);\r
+ doublev += determinant(dmat3v);\r
+ doublev += determinant(dmat4v);\r
+\r
+ dmat2v *= inverse(dmat2v);\r
+ dmat3v *= inverse(dmat3v);\r
+ dmat4v *= inverse(dmat4v);\r
+ \r
+ outp *= float(doublev + dvec2v.y + dvec3v.z + dvec4v.w + \r
+ dmat2v[1][1] + dmat3v[2][2] + dmat4v[3][3] + dmat2x3v[1][1] + dmat3x2v[1][1] + dmat3x4v[2][2] + dmat4x3v[2][2] + dmat2x4v[1][1] + dmat4x2v[1][1] +\r
+ float(boolv) + float(bvec2v.x) + float(bvec3v.x) + float(bvec4v.x));\r
+}\r
+\r
void main()\r
{\r
vec4 v;\r
\r
outp += gl_FragCoord + vl2;\r
foo23();\r
+ doubles();\r
}\r
\r
--- /dev/null
+#version 450\r
+#extension GL_ARB_sparse_texture2: enable\r
+\r
+uniform sampler2D s2D;\r
+uniform sampler3D s3D;\r
+uniform sampler2DShadow s2DShadow;\r
+uniform samplerCubeShadow sCubeShadow;\r
+uniform sampler2DArrayShadow s2DArrayShadow;\r
+uniform sampler2DRectShadow s2DRectShadow;\r
+uniform samplerCubeArrayShadow sCubeArrayShadow;\r
+uniform sampler2DMS s2DMS;\r
+\r
+uniform isamplerCube isCube;\r
+uniform isampler2DArray is2DArray;\r
+\r
+uniform usamplerCubeArray usCubeArray;\r
+uniform usampler2DRect us2DRect;\r
+\r
+uniform vec2 c2;\r
+uniform vec3 c3;\r
+uniform vec4 c4;\r
+\r
+uniform ivec2 offsets[4];\r
+\r
+out vec4 outColor;\r
+\r
+void main()\r
+{\r
+ int resident = 0;\r
+ vec4 texel = vec4(0.0);\r
+ ivec4 itexel = ivec4(0);\r
+ uvec4 utexel = uvec4(0);\r
+\r
+ resident |= sparseTextureARB(s2D, c2, texel);\r
+ resident |= sparseTextureARB(s3D, c3, texel, 2.0);\r
+ resident |= sparseTextureARB(isCube, c3, itexel);\r
+ resident |= sparseTextureARB(s2DShadow, c3, texel.x);\r
+ resident |= sparseTextureARB(sCubeArrayShadow, c4, 1.0, texel.x);\r
+\r
+ resident |= sparseTextureLodARB(s2D, c2, 2.0, texel);\r
+ resident |= sparseTextureLodARB(usCubeArray, c4, 1.0, utexel);\r
+ resident |= sparseTextureLodARB(s2DShadow, c3, 2.0, texel.y);\r
+\r
+ resident |= sparseTextureOffsetARB(s3D, c3, ivec3(2), texel, 2.0);\r
+ resident |= sparseTextureOffsetARB(us2DRect, c2, ivec2(3), utexel);\r
+ resident |= sparseTextureOffsetARB(s2DArrayShadow, c4, ivec2(5), texel.z);\r
+\r
+ resident |= sparseTexelFetchARB(s2D, ivec2(c2), 2, texel);\r
+ resident |= sparseTexelFetchARB(us2DRect, ivec2(c2), utexel);\r
+ resident |= sparseTexelFetchARB(s2DMS, ivec2(c2), 4, texel);\r
+\r
+ resident |= sparseTexelFetchOffsetARB(s3D, ivec3(c3), 2, ivec3(4), texel);\r
+ resident |= sparseTexelFetchOffsetARB(us2DRect, ivec2(c2), ivec2(3), utexel);\r
+\r
+ resident |= sparseTextureLodOffsetARB(s2D, c2, 2.0, ivec2(5), texel);\r
+ resident |= sparseTextureLodOffsetARB(is2DArray, c3, 2.0, ivec2(6), itexel);\r
+ resident |= sparseTextureLodOffsetARB(s2DShadow, c3, 2.0, ivec2(7), texel.z);\r
+\r
+ resident |= sparseTextureGradARB(s3D, c3, c3, c3, texel);\r
+ resident |= sparseTextureGradARB(sCubeShadow, c4, c3, c3, texel.y);\r
+ resident |= sparseTextureGradARB(usCubeArray, c4, c3, c3, utexel);\r
+\r
+ resident |= sparseTextureGradOffsetARB(s2D, c2, c2, c2, ivec2(5), texel);\r
+ resident |= sparseTextureGradOffsetARB(s2DRectShadow, c3, c2, c2, ivec2(6), texel.w);\r
+ resident |= sparseTextureGradOffsetARB(is2DArray, c3, c2, c2, ivec2(2), itexel);\r
+\r
+ resident |= sparseTextureGatherARB(s2D, c2, texel);\r
+ resident |= sparseTextureGatherARB(is2DArray, c3, itexel, 2);\r
+ resident |= sparseTextureGatherARB(s2DArrayShadow, c3, 2.0, texel);\r
+\r
+ resident |= sparseTextureGatherOffsetARB(s2D, c2, ivec2(4), texel);\r
+ resident |= sparseTextureGatherOffsetARB(is2DArray, c3, ivec2(5), itexel, 2);\r
+ resident |= sparseTextureGatherOffsetARB(s2DRectShadow, c2, 2.0, ivec2(7), texel); \r
+\r
+ resident |= sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel);\r
+ resident |= sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2);\r
+ resident |= sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); \r
+\r
+ outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);\r
+}
\ No newline at end of file
--- /dev/null
+#version 450\r
+#extension GL_ARB_sparse_texture_clamp: enable\r
+\r
+uniform sampler2D s2D;\r
+uniform sampler3D s3D;\r
+uniform sampler2DShadow s2DShadow;\r
+uniform samplerCubeShadow sCubeShadow;\r
+uniform sampler2DArrayShadow s2DArrayShadow;\r
+uniform sampler2DRectShadow s2DRectShadow;\r
+uniform samplerCubeArrayShadow sCubeArrayShadow;\r
+\r
+uniform isamplerCube isCube;\r
+uniform isampler2DArray is2DArray;\r
+\r
+uniform usamplerCubeArray usCubeArray;\r
+uniform usampler2DRect us2DRect;\r
+\r
+uniform vec2 c2;\r
+uniform vec3 c3;\r
+uniform vec4 c4;\r
+\r
+uniform float lodClamp;\r
+\r
+out vec4 outColor;\r
+\r
+void main()\r
+{\r
+ int resident = 0;\r
+ vec4 texel = vec4(0.0);\r
+ ivec4 itexel = ivec4(0);\r
+ uvec4 utexel = uvec4(0);\r
+\r
+ resident |= sparseTextureClampARB(s2D, c2, lodClamp, texel);\r
+ resident |= sparseTextureClampARB(s3D, c3, lodClamp, texel, 2.0);\r
+ resident |= sparseTextureClampARB(isCube, c3, lodClamp, itexel);\r
+ resident |= sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x);\r
+ resident |= sparseTextureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp, texel.x);\r
+\r
+ texel += textureClampARB(s2D, c2, lodClamp);\r
+ texel += textureClampARB(s3D, c3, lodClamp, 2.0);\r
+ itexel += textureClampARB(isCube, c3, lodClamp);\r
+ texel.x += textureClampARB(s2DShadow, c3, lodClamp);\r
+ texel.x += textureClampARB(sCubeArrayShadow, c4, 1.0, lodClamp);\r
+\r
+ resident |= sparseTextureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, texel, 2.0);\r
+ resident |= sparseTextureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp, utexel);\r
+ resident |= sparseTextureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp, texel.z);\r
+\r
+ texel += textureOffsetClampARB(s3D, c3, ivec3(2), lodClamp, 2.0);\r
+ utexel += textureOffsetClampARB(us2DRect, c2, ivec2(3), lodClamp);\r
+ texel.z += textureOffsetClampARB(s2DArrayShadow, c4, ivec2(5), lodClamp);\r
+\r
+ resident |= sparseTextureGradClampARB(s3D, c3, c3, c3, lodClamp, texel);\r
+ resident |= sparseTextureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp, texel.y);\r
+ resident |= sparseTextureGradClampARB(usCubeArray, c4, c3, c3, lodClamp, utexel);\r
+\r
+ texel += textureGradClampARB(s3D, c3, c3, c3, lodClamp);\r
+ texel.y += textureGradClampARB(sCubeShadow, c4, c3, c3, lodClamp);\r
+ utexel += textureGradClampARB(usCubeArray, c4, c3, c3, lodClamp);\r
+\r
+ resident |= sparseTextureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp, texel);\r
+ resident |= sparseTextureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp, texel.w);\r
+ resident |= sparseTextureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp, itexel);\r
+\r
+ texel += textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);\r
+ texel.w += textureGradOffsetClampARB(s2DRectShadow, c3, c2, c2, ivec2(6), lodClamp);\r
+ itexel += textureGradOffsetClampARB(is2DArray, c3, c2, c2, ivec2(2), lodClamp);\r
+\r
+ outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);\r
+}
\ No newline at end of file
spv.shiftOps.frag
spv.simpleFunctionCall.frag
spv.simpleMat.vert
+spv.sparseTexture.frag
+spv.sparseTextureClamp.frag
spv.structAssignment.frag
spv.structDeref.frag
spv.structure.frag
EOpImageAtomicExchange,
EOpImageAtomicCompSwap,
+ EOpSparseImageLoad,
+
EOpImageGuardEnd,
//
EOpTextureGather,
EOpTextureGatherOffset,
EOpTextureGatherOffsets,
+ EOpTextureClamp,
+ EOpTextureOffsetClamp,
+ EOpTextureGradClamp,
+ EOpTextureGradOffsetClamp,
+
+ EOpSparseTextureGuardBegin,
+
+ EOpSparseTexture,
+ EOpSparseTextureLod,
+ EOpSparseTextureOffset,
+ EOpSparseTextureFetch,
+ EOpSparseTextureFetchOffset,
+ EOpSparseTextureLodOffset,
+ EOpSparseTextureGrad,
+ EOpSparseTextureGradOffset,
+ EOpSparseTextureGather,
+ EOpSparseTextureGatherOffset,
+ EOpSparseTextureGatherOffsets,
+ EOpSparseTexelsResident,
+ EOpSparseTextureClamp,
+ EOpSparseTextureOffsetClamp,
+ EOpSparseTextureGradClamp,
+ EOpSparseTextureGradOffsetClamp,
+
+ EOpSparseTextureGuardEnd,
EOpTextureGuardEnd,
bool offsets;
bool gather;
bool grad;
+ bool lodClamp;
};
//
bool isConstructor() const;
bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; }
bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; }
+ bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; }
+ bool isSparseImage() const { return op == EOpSparseImageLoad; }
// Crack the op into the individual dimensions of texturing operation.
void crackTexture(TSampler sampler, TCrackedTextureOp& cracked) const
cracked.offsets = false;
cracked.gather = false;
cracked.grad = false;
+ cracked.lodClamp = false;
switch (op) {
case EOpImageQuerySize:
case EOpTextureQueryLod:
case EOpTextureQueryLevels:
case EOpTextureQuerySamples:
+ case EOpSparseTexelsResident:
cracked.query = true;
break;
case EOpTexture:
+ case EOpSparseTexture:
+ break;
+ case EOpTextureClamp:
+ case EOpSparseTextureClamp:
+ cracked.lodClamp = true;
break;
case EOpTextureProj:
cracked.proj = true;
break;
case EOpTextureLod:
+ case EOpSparseTextureLod:
cracked.lod = true;
break;
case EOpTextureOffset:
+ case EOpSparseTextureOffset:
cracked.offset = true;
break;
+ case EOpTextureOffsetClamp:
+ case EOpSparseTextureOffsetClamp:
+ cracked.offset = true;
+ cracked.lodClamp = true;
+ break;
case EOpTextureFetch:
+ case EOpSparseTextureFetch:
cracked.fetch = true;
if (sampler.dim == Esd1D || (sampler.dim == Esd2D && ! sampler.ms) || sampler.dim == Esd3D)
cracked.lod = true;
break;
case EOpTextureFetchOffset:
+ case EOpSparseTextureFetchOffset:
cracked.fetch = true;
cracked.offset = true;
if (sampler.dim == Esd1D || (sampler.dim == Esd2D && ! sampler.ms) || sampler.dim == Esd3D)
cracked.proj = true;
break;
case EOpTextureLodOffset:
+ case EOpSparseTextureLodOffset:
cracked.offset = true;
cracked.lod = true;
break;
cracked.proj = true;
break;
case EOpTextureGrad:
+ case EOpSparseTextureGrad:
cracked.grad = true;
break;
+ case EOpTextureGradClamp:
+ case EOpSparseTextureGradClamp:
+ cracked.grad = true;
+ cracked.lodClamp = true;
+ break;
case EOpTextureGradOffset:
+ case EOpSparseTextureGradOffset:
cracked.grad = true;
cracked.offset = true;
break;
cracked.offset = true;
cracked.proj = true;
break;
+ case EOpTextureGradOffsetClamp:
+ case EOpSparseTextureGradOffsetClamp:
+ cracked.grad = true;
+ cracked.offset = true;
+ cracked.lodClamp = true;
+ break;
case EOpTextureGather:
+ case EOpSparseTextureGather:
cracked.gather = true;
break;
case EOpTextureGatherOffset:
+ case EOpSparseTextureGatherOffset:
cracked.gather = true;
cracked.offset = true;
break;
case EOpTextureGatherOffsets:
+ case EOpSparseTextureGatherOffsets:
cracked.gather = true;
cracked.offsets = true;
break;
"\n");
}
+ //
+ // double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack
+ //
+ if (profile != EEsProfile && version >= 400) {
+ commonBuiltins.append(
+
+ "double sqrt(double);"
+ "dvec2 sqrt(dvec2);"
+ "dvec3 sqrt(dvec3);"
+ "dvec4 sqrt(dvec4);"
+
+ "double inversesqrt(double);"
+ "dvec2 inversesqrt(dvec2);"
+ "dvec3 inversesqrt(dvec3);"
+ "dvec4 inversesqrt(dvec4);"
+
+ "double abs(double);"
+ "dvec2 abs(dvec2);"
+ "dvec3 abs(dvec3);"
+ "dvec4 abs(dvec4);"
+
+ "double sign(double);"
+ "dvec2 sign(dvec2);"
+ "dvec3 sign(dvec3);"
+ "dvec4 sign(dvec4);"
+
+ "double floor(double);"
+ "dvec2 floor(dvec2);"
+ "dvec3 floor(dvec3);"
+ "dvec4 floor(dvec4);"
+
+ "double trunc(double);"
+ "dvec2 trunc(dvec2);"
+ "dvec3 trunc(dvec3);"
+ "dvec4 trunc(dvec4);"
+
+ "double round(double);"
+ "dvec2 round(dvec2);"
+ "dvec3 round(dvec3);"
+ "dvec4 round(dvec4);"
+
+ "double roundEven(double);"
+ "dvec2 roundEven(dvec2);"
+ "dvec3 roundEven(dvec3);"
+ "dvec4 roundEven(dvec4);"
+
+ "double ceil(double);"
+ "dvec2 ceil(dvec2);"
+ "dvec3 ceil(dvec3);"
+ "dvec4 ceil(dvec4);"
+
+ "double fract(double);"
+ "dvec2 fract(dvec2);"
+ "dvec3 fract(dvec3);"
+ "dvec4 fract(dvec4);"
+
+ "double mod(double, double);"
+ "dvec2 mod(dvec2 , double);"
+ "dvec3 mod(dvec3 , double);"
+ "dvec4 mod(dvec4 , double);"
+ "dvec2 mod(dvec2 , dvec2);"
+ "dvec3 mod(dvec3 , dvec3);"
+ "dvec4 mod(dvec4 , dvec4);"
+
+ "double modf(double, out double);"
+ "dvec2 modf(dvec2, out dvec2);"
+ "dvec3 modf(dvec3, out dvec3);"
+ "dvec4 modf(dvec4, out dvec4);"
+
+ "double min(double, double);"
+ "dvec2 min(dvec2, double);"
+ "dvec3 min(dvec3, double);"
+ "dvec4 min(dvec4, double);"
+ "dvec2 min(dvec2, dvec2);"
+ "dvec3 min(dvec3, dvec3);"
+ "dvec4 min(dvec4, dvec4);"
+
+ "double max(double, double);"
+ "dvec2 max(dvec2 , double);"
+ "dvec3 max(dvec3 , double);"
+ "dvec4 max(dvec4 , double);"
+ "dvec2 max(dvec2 , dvec2);"
+ "dvec3 max(dvec3 , dvec3);"
+ "dvec4 max(dvec4 , dvec4);"
+
+ "double clamp(double, double, double);"
+ "dvec2 clamp(dvec2 , double, double);"
+ "dvec3 clamp(dvec3 , double, double);"
+ "dvec4 clamp(dvec4 , double, double);"
+ "dvec2 clamp(dvec2 , dvec2 , dvec2);"
+ "dvec3 clamp(dvec3 , dvec3 , dvec3);"
+ "dvec4 clamp(dvec4 , dvec4 , dvec4);"
+
+ "double mix(double, double, double);"
+ "dvec2 mix(dvec2, dvec2, double);"
+ "dvec3 mix(dvec3, dvec3, double);"
+ "dvec4 mix(dvec4, dvec4, double);"
+ "dvec2 mix(dvec2, dvec2, dvec2);"
+ "dvec3 mix(dvec3, dvec3, dvec3);"
+ "dvec4 mix(dvec4, dvec4, dvec4);"
+ "double mix(double, double, bool);"
+ "dvec2 mix(dvec2, dvec2, bvec2);"
+ "dvec3 mix(dvec3, dvec3, bvec3);"
+ "dvec4 mix(dvec4, dvec4, bvec4);"
+
+ "double step(double, double);"
+ "dvec2 step(dvec2 , dvec2);"
+ "dvec3 step(dvec3 , dvec3);"
+ "dvec4 step(dvec4 , dvec4);"
+ "dvec2 step(double, dvec2);"
+ "dvec3 step(double, dvec3);"
+ "dvec4 step(double, dvec4);"
+
+ "double smoothstep(double, double, double);"
+ "dvec2 smoothstep(dvec2 , dvec2 , dvec2);"
+ "dvec3 smoothstep(dvec3 , dvec3 , dvec3);"
+ "dvec4 smoothstep(dvec4 , dvec4 , dvec4);"
+ "dvec2 smoothstep(double, double, dvec2);"
+ "dvec3 smoothstep(double, double, dvec3);"
+ "dvec4 smoothstep(double, double, dvec4);"
+
+ "bool isnan(double);"
+ "bvec2 isnan(dvec2);"
+ "bvec3 isnan(dvec3);"
+ "bvec4 isnan(dvec4);"
+
+ "bool isinf(double);"
+ "bvec2 isinf(dvec2);"
+ "bvec3 isinf(dvec3);"
+ "bvec4 isinf(dvec4);"
+
+ "double length(double);"
+ "double length(dvec2);"
+ "double length(dvec3);"
+ "double length(dvec4);"
+
+ "double distance(double, double);"
+ "double distance(dvec2 , dvec2);"
+ "double distance(dvec3 , dvec3);"
+ "double distance(dvec4 , dvec4);"
+
+ "double dot(double, double);"
+ "double dot(dvec2 , dvec2);"
+ "double dot(dvec3 , dvec3);"
+ "double dot(dvec4 , dvec4);"
+
+ "dvec3 cross(dvec3, dvec3);"
+
+ "double normalize(double);"
+ "dvec2 normalize(dvec2);"
+ "dvec3 normalize(dvec3);"
+ "dvec4 normalize(dvec4);"
+
+ "double faceforward(double, double, double);"
+ "dvec2 faceforward(dvec2, dvec2, dvec2);"
+ "dvec3 faceforward(dvec3, dvec3, dvec3);"
+ "dvec4 faceforward(dvec4, dvec4, dvec4);"
+
+ "double reflect(double, double);"
+ "dvec2 reflect(dvec2 , dvec2 );"
+ "dvec3 reflect(dvec3 , dvec3 );"
+ "dvec4 reflect(dvec4 , dvec4 );"
+
+ "double refract(double, double, double);"
+ "dvec2 refract(dvec2 , dvec2 , double);"
+ "dvec3 refract(dvec3 , dvec3 , double);"
+ "dvec4 refract(dvec4 , dvec4 , double);"
+
+ "dmat2 matrixCompMult(dmat2, dmat2);"
+ "dmat3 matrixCompMult(dmat3, dmat3);"
+ "dmat4 matrixCompMult(dmat4, dmat4);"
+ "dmat2x3 matrixCompMult(dmat2x3, dmat2x3);"
+ "dmat2x4 matrixCompMult(dmat2x4, dmat2x4);"
+ "dmat3x2 matrixCompMult(dmat3x2, dmat3x2);"
+ "dmat3x4 matrixCompMult(dmat3x4, dmat3x4);"
+ "dmat4x2 matrixCompMult(dmat4x2, dmat4x2);"
+ "dmat4x3 matrixCompMult(dmat4x3, dmat4x3);"
+
+ "dmat2 outerProduct(dvec2, dvec2);"
+ "dmat3 outerProduct(dvec3, dvec3);"
+ "dmat4 outerProduct(dvec4, dvec4);"
+ "dmat2x3 outerProduct(dvec3, dvec2);"
+ "dmat3x2 outerProduct(dvec2, dvec3);"
+ "dmat2x4 outerProduct(dvec4, dvec2);"
+ "dmat4x2 outerProduct(dvec2, dvec4);"
+ "dmat3x4 outerProduct(dvec4, dvec3);"
+ "dmat4x3 outerProduct(dvec3, dvec4);"
+
+ "dmat2 transpose(dmat2);"
+ "dmat3 transpose(dmat3);"
+ "dmat4 transpose(dmat4);"
+ "dmat2x3 transpose(dmat3x2);"
+ "dmat3x2 transpose(dmat2x3);"
+ "dmat2x4 transpose(dmat4x2);"
+ "dmat4x2 transpose(dmat2x4);"
+ "dmat3x4 transpose(dmat4x3);"
+ "dmat4x3 transpose(dmat3x4);"
+
+ "double determinant(dmat2);"
+ "double determinant(dmat3);"
+ "double determinant(dmat4);"
+
+ "dmat2 inverse(dmat2);"
+ "dmat3 inverse(dmat3);"
+ "dmat4 inverse(dmat4);"
+ );
+ }
+
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 430)) {
commonBuiltins.append(
}
}
}
+
+ //
+ // sparseTexelsResidentARB()
+ //
+
+ if (profile != EEsProfile && version >= 450) {
+ commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n");
+ }
}
//
commonBuiltins.append(prefixes[sampler.type]);
commonBuiltins.append("vec4);\n");
+ if (sampler.dim != Esd1D && sampler.dim != EsdBuffer && profile != EEsProfile && version >= 450) {
+ commonBuiltins.append("int sparseImageLoadARB(readonly volatile coherent ");
+ commonBuiltins.append(imageParams);
+ commonBuiltins.append(", out ");
+ commonBuiltins.append(prefixes[sampler.type]);
+ commonBuiltins.append("vec4");
+ commonBuiltins.append(");\n");
+ }
+
if ( profile != EEsProfile ||
(profile == EEsProfile && version >= 310)) {
if (sampler.type == EbtInt || sampler.type == EbtUint) {
//
// Add all the texture lookup functions for the given type.
//
-void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int /*version*/, EProfile /*profile*/)
+void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
{
//
// texturing
if (extraProj && (sampler.dim == Esd3D || sampler.shadow))
continue;
- TString s;
-
- // return type
- if (sampler.shadow)
- s.append("float ");
- else {
- s.append(prefixes[sampler.type]);
- s.append("vec4 ");
- }
-
- // name
- if (fetch)
- s.append("texel");
- else
- s.append("texture");
- if (proj)
- s.append("Proj");
- if (lod)
- s.append("Lod");
- if (grad)
- s.append("Grad");
- if (fetch)
- s.append("Fetch");
- if (offset)
- s.append("Offset");
- s.append("(");
-
- // sampler type
- s.append(typeName);
-
- // P coordinate
- if (extraProj)
- s.append(",vec4");
- else {
- s.append(",");
- TBasicType t = fetch ? EbtInt : EbtFloat;
- if (totalDims == 1)
- s.append(TType::getBasicString(t));
- else {
- s.append(prefixes[t]);
- s.append("vec");
- s.append(postfixes[totalDims]);
+ for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) { // loop over "bool" lod clamp
+
+ if (lodClamp && (profile == EEsProfile || version < 450))
+ continue;
+ if (lodClamp && (proj || lod || fetch))
+ continue;
+
+ for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not
+
+ if (sparse && (profile == EEsProfile || version < 450))
+ continue;
+ // Sparse sampling is not for 1D/1D array texture, buffer texture, and projective texture
+ if (sparse && (sampler.dim == Esd1D || sampler.dim == EsdBuffer || proj))
+ continue;
+
+ TString s;
+
+ // return type
+ if (sparse)
+ s.append("int ");
+ else {
+ if (sampler.shadow)
+ s.append("float ");
+ else {
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
+ }
+
+ // name
+ if (sparse) {
+ if (fetch)
+ s.append("sparseTexel");
+ else
+ s.append("sparseTexture");
+ } else {
+ if (fetch)
+ s.append("texel");
+ else
+ s.append("texture");
+ }
+ if (proj)
+ s.append("Proj");
+ if (lod)
+ s.append("Lod");
+ if (grad)
+ s.append("Grad");
+ if (fetch)
+ s.append("Fetch");
+ if (offset)
+ s.append("Offset");
+ if (lodClamp)
+ s.append("Clamp");
+ if (lodClamp || sparse)
+ s.append("ARB");
+ s.append("(");
+
+ // sampler type
+ s.append(typeName);
+
+ // P coordinate
+ if (extraProj)
+ s.append(",vec4");
+ else {
+ s.append(",");
+ TBasicType t = fetch ? EbtInt : EbtFloat;
+ if (totalDims == 1)
+ s.append(TType::getBasicString(t));
+ else {
+ s.append(prefixes[t]);
+ s.append("vec");
+ s.append(postfixes[totalDims]);
+ }
+ }
+
+ if (bias && compare)
+ continue;
+
+ // non-optional lod argument (lod that's not driven by lod loop) or sample
+ if ((fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms) ||
+ (sampler.ms && fetch))
+ s.append(",int");
+
+ // non-optional lod
+ if (lod)
+ s.append(",float");
+
+ // gradient arguments
+ if (grad) {
+ if (dimMap[sampler.dim] == 1)
+ s.append(",float,float");
+ else {
+ s.append(",vec");
+ s.append(postfixes[dimMap[sampler.dim]]);
+ s.append(",vec");
+ s.append(postfixes[dimMap[sampler.dim]]);
+ }
+ }
+
+ // offset
+ if (offset) {
+ if (dimMap[sampler.dim] == 1)
+ s.append(",int");
+ else {
+ s.append(",ivec");
+ s.append(postfixes[dimMap[sampler.dim]]);
+ }
+ }
+
+ // non-optional compare
+ if (compare)
+ s.append(",float");
+
+ // lod clamp
+ if (lodClamp)
+ s.append(",float");
+
+ // texel out (for sparse texture)
+ if (sparse) {
+ s.append(",out ");
+ if (sampler.shadow)
+ s.append("float ");
+ else {
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
+ }
+
+ // optional bias
+ if (bias)
+ s.append(",float");
+
+ s.append(");\n");
+
+ // Add to the per-language set of built-ins
+
+ if (bias)
+ stageBuiltins[EShLangFragment].append(s);
+ else
+ commonBuiltins.append(s);
}
}
-
- if (bias && compare)
- continue;
-
- // non-optional lod argument (lod that's not driven by lod loop) or sample
- if ((fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms) ||
- (sampler.ms && fetch))
- s.append(",int");
-
- // non-optional lod
- if (lod)
- s.append(",float");
-
- // gradient arguments
- if (grad) {
- if (dimMap[sampler.dim] == 1)
- s.append(",float,float");
- else {
- s.append(",vec");
- s.append(postfixes[dimMap[sampler.dim]]);
- s.append(",vec");
- s.append(postfixes[dimMap[sampler.dim]]);
- }
- }
-
- // offset
- if (offset) {
- if (dimMap[sampler.dim] == 1)
- s.append(",int");
- else {
- s.append(",ivec");
- s.append(postfixes[dimMap[sampler.dim]]);
- }
- }
-
- // optional bias or non-optional compare
- if (bias || compare)
- s.append(",float");
-
- s.append(");\n");
-
- // Add to the per-language set of built-ins
-
- if (bias)
- stageBuiltins[EShLangFragment].append(s);
- else
- commonBuiltins.append(s);
}
}
}
//
// Add all the texture gather functions for the given type.
//
-void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int version, EProfile /* profile */)
+void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int version, EProfile profile)
{
switch (sampler.dim) {
case Esd2D:
if (offset > 0 && sampler.dim == EsdCube)
continue;
- TString s;
-
- // return type
- s.append(prefixes[sampler.type]);
- s.append("vec4 ");
-
- // name
- s.append("textureGather");
- switch (offset) {
- case 1:
- s.append("Offset");
- break;
- case 2:
- s.append("Offsets");
- default:
- break;
- }
- s.append("(");
+ for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not
+ if (sparse && (profile == EEsProfile || version < 450))
+ continue;
- // sampler type argument
- s.append(typeName);
+ TString s;
- // P coordinate argument
- s.append(",vec");
- int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0);
- s.append(postfixes[totalDims]);
+ // return type
+ if (sparse)
+ s.append("int ");
+ else {
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
- // refZ argument
- if (sampler.shadow)
- s.append(",float");
+ // name
+ if (sparse)
+ s.append("sparseTextureGather");
+ else
+ s.append("textureGather");
+ switch (offset) {
+ case 1:
+ s.append("Offset");
+ break;
+ case 2:
+ s.append("Offsets");
+ default:
+ break;
+ }
+ if (sparse)
+ s.append("ARB");
+ s.append("(");
+
+ // sampler type argument
+ s.append(typeName);
+
+ // P coordinate argument
+ s.append(",vec");
+ int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0);
+ s.append(postfixes[totalDims]);
+
+ // refZ argument
+ if (sampler.shadow)
+ s.append(",float");
+
+ // offset argument
+ if (offset > 0) {
+ s.append(",ivec2");
+ if (offset == 2)
+ s.append("[4]");
+ }
- // offset argument
- if (offset > 0) {
- s.append(",ivec2");
- if (offset == 2)
- s.append("[4]");
- }
+ // texel out (for sparse texture)
+ if (sparse) {
+ s.append(",out ");
+ s.append(prefixes[sampler.type]);
+ s.append("vec4 ");
+ }
- // comp argument
- if (comp)
- s.append(",int");
+ // comp argument
+ if (comp)
+ s.append(",int");
- s.append(");\n");
- commonBuiltins.append(s);
- //printf("%s", s.c_str());
+ s.append(");\n");
+ commonBuiltins.append(s);
+ }
}
}
}
symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_ARB_derivative_control);
}
+ // E_GL_ARB_sparse_texture2
+ if (profile != EEsProfile)
+ {
+ symbolTable.setFunctionExtensions("sparseTextureARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureLodARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureOffsetARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTexelFetchARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTexelFetchOffsetARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureLodOffsetARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureGradARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureGradOffsetARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureGatherARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureGatherOffsetARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTextureGatherOffsetsARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseImageLoadARB", 1, &E_GL_ARB_sparse_texture2);
+ symbolTable.setFunctionExtensions("sparseTexelsResident", 1, &E_GL_ARB_sparse_texture2);
+ }
+
+ // E_GL_ARB_sparse_texture_clamp
+ if (profile != EEsProfile)
+ {
+ symbolTable.setFunctionExtensions("sparseTextureClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("sparseTextureOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("sparseTextureGradClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("sparseTextureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("textureClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("textureOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("textureGradClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ symbolTable.setFunctionExtensions("textureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
+ }
+
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth);
if (profile == EEsProfile) {
symbolTable.relateToOperator("shadow1DProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("shadow2DProjLod", EOpTextureProjLod);
}
+
+ if (profile != EEsProfile)
+ {
+ symbolTable.relateToOperator("sparseTextureARB", EOpSparseTexture);
+ symbolTable.relateToOperator("sparseTextureLodARB", EOpSparseTextureLod);
+ symbolTable.relateToOperator("sparseTextureOffsetARB", EOpSparseTextureOffset);
+ symbolTable.relateToOperator("sparseTexelFetchARB", EOpSparseTextureFetch);
+ symbolTable.relateToOperator("sparseTexelFetchOffsetARB", EOpSparseTextureFetchOffset);
+ symbolTable.relateToOperator("sparseTextureLodOffsetARB", EOpSparseTextureLodOffset);
+ symbolTable.relateToOperator("sparseTextureGradARB", EOpSparseTextureGrad);
+ symbolTable.relateToOperator("sparseTextureGradOffsetARB", EOpSparseTextureGradOffset);
+ symbolTable.relateToOperator("sparseTextureGatherARB", EOpSparseTextureGather);
+ symbolTable.relateToOperator("sparseTextureGatherOffsetARB", EOpSparseTextureGatherOffset);
+ symbolTable.relateToOperator("sparseTextureGatherOffsetsARB", EOpSparseTextureGatherOffsets);
+ symbolTable.relateToOperator("sparseImageLoadARB", EOpSparseImageLoad);
+ symbolTable.relateToOperator("sparseTexelsResidentARB", EOpSparseTexelsResident);
+
+ symbolTable.relateToOperator("sparseTextureClampARB", EOpSparseTextureClamp);
+ symbolTable.relateToOperator("sparseTextureOffsetClampARB", EOpSparseTextureOffsetClamp);
+ symbolTable.relateToOperator("sparseTextureGradClampARB", EOpSparseTextureGradClamp);
+ symbolTable.relateToOperator("sparseTextureGradOffsetClampARB", EOpSparseTextureGradOffsetClamp);
+ symbolTable.relateToOperator("textureClampARB", EOpTextureClamp);
+ symbolTable.relateToOperator("textureOffsetClampARB", EOpTextureOffsetClamp);
+ symbolTable.relateToOperator("textureGradClampARB", EOpTextureGradClamp);
+ symbolTable.relateToOperator("textureGradOffsetClampARB", EOpTextureGradOffsetClamp);
+ }
}
switch(language) {
extensionBehavior[E_GL_ARB_derivative_control] = EBhDisable;
extensionBehavior[E_GL_ARB_shader_texture_image_samples] = EBhDisable;
extensionBehavior[E_GL_ARB_viewport_array] = EBhDisable;
+ extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable;
+ extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable;
// extensionBehavior[E_GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members
// #line and #include
"#define GL_ARB_derivative_control 1\n"
"#define GL_ARB_shader_texture_image_samples 1\n"
"#define GL_ARB_viewport_array 1\n"
+ "#define GL_ARB_sparse_texture2 1\n"
+ "#define GL_ARB_sparse_texture_clamp 1\n"
"#define GL_GOOGLE_cpp_style_line_directive 1\n"
"#define GL_GOOGLE_include_directive 1\n"
const char* const E_GL_ARB_derivative_control = "GL_ARB_derivative_control";
const char* const E_GL_ARB_shader_texture_image_samples = "GL_ARB_shader_texture_image_samples";
const char* const E_GL_ARB_viewport_array = "GL_ARB_viewport_array";
+const char* const E_GL_ARB_sparse_texture2 = "GL_ARB_sparse_texture2";
+const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture_clamp";
//const char* const E_GL_ARB_cull_distance = "GL_ARB_cull_distance"; // present for 4.5, but need extension control over block members
// #line and #include
Sleep(milliseconds);
}
+//#define DUMP_COUNTERS
+
void OS_DumpMemoryCounters()
{
#ifdef DUMP_COUNTERS