mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
Implement NonSemantic.Shader.DebugInfo.100
See https://github.com/KhronosGroup/SPIRV-Registry.
This commit is contained in:
parent
9e78bc8108
commit
7a914ce926
@ -146,6 +146,7 @@ genrule(
|
|||||||
"SPIRV/GLSL.ext.NV.h",
|
"SPIRV/GLSL.ext.NV.h",
|
||||||
"SPIRV/GLSL.std.450.h",
|
"SPIRV/GLSL.std.450.h",
|
||||||
"SPIRV/NonSemanticDebugPrintf.h",
|
"SPIRV/NonSemanticDebugPrintf.h",
|
||||||
|
"SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||||
"SPIRV/spirv.hpp",
|
"SPIRV/spirv.hpp",
|
||||||
],
|
],
|
||||||
outs = [
|
outs = [
|
||||||
@ -155,6 +156,7 @@ genrule(
|
|||||||
"include/SPIRV/GLSL.ext.NV.h",
|
"include/SPIRV/GLSL.ext.NV.h",
|
||||||
"include/SPIRV/GLSL.std.450.h",
|
"include/SPIRV/GLSL.std.450.h",
|
||||||
"include/SPIRV/NonSemanticDebugPrintf.h",
|
"include/SPIRV/NonSemanticDebugPrintf.h",
|
||||||
|
"include/SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||||
"include/SPIRV/spirv.hpp",
|
"include/SPIRV/spirv.hpp",
|
||||||
],
|
],
|
||||||
cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
|
cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
|
||||||
|
1
BUILD.gn
1
BUILD.gn
@ -133,6 +133,7 @@ template("glslang_sources_common") {
|
|||||||
"SPIRV/Logger.cpp",
|
"SPIRV/Logger.cpp",
|
||||||
"SPIRV/Logger.h",
|
"SPIRV/Logger.h",
|
||||||
"SPIRV/NonSemanticDebugPrintf.h",
|
"SPIRV/NonSemanticDebugPrintf.h",
|
||||||
|
"SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||||
"SPIRV/SPVRemapper.cpp",
|
"SPIRV/SPVRemapper.cpp",
|
||||||
"SPIRV/SPVRemapper.h",
|
"SPIRV/SPVRemapper.h",
|
||||||
"SPIRV/SpvBuilder.cpp",
|
"SPIRV/SpvBuilder.cpp",
|
||||||
|
@ -86,6 +86,8 @@ GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, g
|
|||||||
glslang_spv_options_t spv_options;
|
glslang_spv_options_t spv_options;
|
||||||
spv_options.generate_debug_info = false;
|
spv_options.generate_debug_info = false;
|
||||||
spv_options.strip_debug_info = false;
|
spv_options.strip_debug_info = false;
|
||||||
|
spv_options.emit_nonsemantic_shader_debug_info = false;
|
||||||
|
spv_options.emit_nonsemantic_shader_debug_source = false;
|
||||||
spv_options.disable_optimizer = true;
|
spv_options.disable_optimizer = true;
|
||||||
spv_options.optimize_size = false;
|
spv_options.optimize_size = false;
|
||||||
spv_options.disassemble = false;
|
spv_options.disassemble = false;
|
||||||
|
@ -62,7 +62,8 @@ set(HEADERS
|
|||||||
disassemble.h
|
disassemble.h
|
||||||
GLSL.ext.AMD.h
|
GLSL.ext.AMD.h
|
||||||
GLSL.ext.NV.h
|
GLSL.ext.NV.h
|
||||||
NonSemanticDebugPrintf.h)
|
NonSemanticDebugPrintf.h
|
||||||
|
NonSemanticShaderDebugInfo100.h)
|
||||||
|
|
||||||
set(SPVREMAP_HEADERS
|
set(SPVREMAP_HEADERS
|
||||||
SPVRemapper.h
|
SPVRemapper.h
|
||||||
|
@ -1557,6 +1557,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
|
|||||||
for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr)
|
for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr)
|
||||||
builder.addInclude(iItr->first, iItr->second);
|
builder.addInclude(iItr->first, iItr->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder.setEmitNonSemanticShaderDebugInfo(options.emitNonSemanticShaderDebugInfo);
|
||||||
|
builder.setEmitNonSemanticShaderDebugSource(options.emitNonSemanticShaderDebugSource);
|
||||||
|
|
||||||
stdBuiltins = builder.import("GLSL.std.450");
|
stdBuiltins = builder.import("GLSL.std.450");
|
||||||
|
|
||||||
spv::AddressingModel addressingModel = spv::AddressingModelLogical;
|
spv::AddressingModel addressingModel = spv::AddressingModelLogical;
|
||||||
@ -2498,6 +2502,14 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Force variable declaration - Debug Mode Only
|
||||||
|
if (node->getOp() == glslang::EOpDeclare) {
|
||||||
|
builder.clearAccessChain();
|
||||||
|
node->getOperand()->traverse(this);
|
||||||
|
builder.clearAccessChain();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Start by evaluating the operand
|
// Start by evaluating the operand
|
||||||
|
|
||||||
// Does it need a swizzle inversion? If so, evaluation is inverted;
|
// Does it need a swizzle inversion? If so, evaluation is inverted;
|
||||||
@ -2758,32 +2770,38 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
|||||||
spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
|
spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
|
||||||
|
|
||||||
switch (node->getOp()) {
|
switch (node->getOp()) {
|
||||||
|
case glslang::EOpScope:
|
||||||
case glslang::EOpSequence:
|
case glslang::EOpSequence:
|
||||||
{
|
{
|
||||||
if (preVisit)
|
if (visit == glslang::EvPreVisit) {
|
||||||
++sequenceDepth;
|
++sequenceDepth;
|
||||||
else
|
if (sequenceDepth == 1) {
|
||||||
|
// If this is the parent node of all the functions, we want to see them
|
||||||
|
// early, so all call points have actual SPIR-V functions to reference.
|
||||||
|
// In all cases, still let the traverser visit the children for us.
|
||||||
|
makeFunctions(node->getAsAggregate()->getSequence());
|
||||||
|
|
||||||
|
// Also, we want all globals initializers to go into the beginning of the entry point, before
|
||||||
|
// anything else gets there, so visit out of order, doing them all now.
|
||||||
|
makeGlobalInitializers(node->getAsAggregate()->getSequence());
|
||||||
|
|
||||||
|
//Pre process linker objects for ray tracing stages
|
||||||
|
if (glslangIntermediate->isRayTracingStage())
|
||||||
|
collectRayTracingLinkerObjects();
|
||||||
|
|
||||||
|
// Initializers are done, don't want to visit again, but functions and link objects need to be processed,
|
||||||
|
// so do them manually.
|
||||||
|
visitFunctions(node->getAsAggregate()->getSequence());
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if (node->getOp() == glslang::EOpScope)
|
||||||
|
builder.enterScope(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sequenceDepth > 1 && node->getOp() == glslang::EOpScope)
|
||||||
|
builder.leaveScope();
|
||||||
--sequenceDepth;
|
--sequenceDepth;
|
||||||
|
|
||||||
if (sequenceDepth == 1) {
|
|
||||||
// If this is the parent node of all the functions, we want to see them
|
|
||||||
// early, so all call points have actual SPIR-V functions to reference.
|
|
||||||
// In all cases, still let the traverser visit the children for us.
|
|
||||||
makeFunctions(node->getAsAggregate()->getSequence());
|
|
||||||
|
|
||||||
// Also, we want all globals initializers to go into the beginning of the entry point, before
|
|
||||||
// anything else gets there, so visit out of order, doing them all now.
|
|
||||||
makeGlobalInitializers(node->getAsAggregate()->getSequence());
|
|
||||||
|
|
||||||
//Pre process linker objects for ray tracing stages
|
|
||||||
if (glslangIntermediate->isRayTracingStage())
|
|
||||||
collectRayTracingLinkerObjects();
|
|
||||||
|
|
||||||
// Initializers are done, don't want to visit again, but functions and link objects need to be processed,
|
|
||||||
// so do them manually.
|
|
||||||
visitFunctions(node->getAsAggregate()->getSequence());
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -2812,6 +2830,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
|||||||
if (isShaderEntryPoint(node)) {
|
if (isShaderEntryPoint(node)) {
|
||||||
inEntryPoint = true;
|
inEntryPoint = true;
|
||||||
builder.setBuildPoint(shaderEntry->getLastBlock());
|
builder.setBuildPoint(shaderEntry->getLastBlock());
|
||||||
|
builder.enterFunction(shaderEntry);
|
||||||
currentFunction = shaderEntry;
|
currentFunction = shaderEntry;
|
||||||
} else {
|
} else {
|
||||||
handleFunctionEntry(node);
|
handleFunctionEntry(node);
|
||||||
@ -3796,8 +3815,8 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
|
|||||||
// by a block-ending branch. But we don't want to put any other body/test
|
// by a block-ending branch. But we don't want to put any other body/test
|
||||||
// instructions in it, since the body/test may have arbitrary instructions,
|
// instructions in it, since the body/test may have arbitrary instructions,
|
||||||
// including merges of its own.
|
// including merges of its own.
|
||||||
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
|
|
||||||
builder.setBuildPoint(&blocks.head);
|
builder.setBuildPoint(&blocks.head);
|
||||||
|
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
|
||||||
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands);
|
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands);
|
||||||
if (node->testFirst() && node->getTest()) {
|
if (node->testFirst() && node->getTest()) {
|
||||||
spv::Block& test = builder.makeNewBlock();
|
spv::Block& test = builder.makeNewBlock();
|
||||||
@ -4016,7 +4035,7 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
|
|||||||
initializer = builder.makeNullConstant(spvType);
|
initializer = builder.makeNullConstant(spvType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer);
|
return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return type Id of the sampled type.
|
// Return type Id of the sampled type.
|
||||||
@ -4104,7 +4123,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
|||||||
if (explicitLayout != glslang::ElpNone)
|
if (explicitLayout != glslang::ElpNone)
|
||||||
spvType = builder.makeUintType(32);
|
spvType = builder.makeUintType(32);
|
||||||
else
|
else
|
||||||
spvType = builder.makeBoolType();
|
spvType = builder.makeBoolType(false);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtInt:
|
case glslang::EbtInt:
|
||||||
spvType = builder.makeIntType(32);
|
spvType = builder.makeIntType(32);
|
||||||
@ -4422,14 +4441,14 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
|
|||||||
// except sometimes for blocks
|
// except sometimes for blocks
|
||||||
std::vector<std::pair<glslang::TType*, glslang::TQualifier> > deferredForwardPointers;
|
std::vector<std::pair<glslang::TType*, glslang::TQualifier> > deferredForwardPointers;
|
||||||
for (int i = 0; i < (int)glslangMembers->size(); i++) {
|
for (int i = 0; i < (int)glslangMembers->size(); i++) {
|
||||||
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
|
auto& glslangMember = (*glslangMembers)[i];
|
||||||
if (glslangMember.hiddenMember()) {
|
if (glslangMember.type->hiddenMember()) {
|
||||||
++memberDelta;
|
++memberDelta;
|
||||||
if (type.getBasicType() == glslang::EbtBlock)
|
if (type.getBasicType() == glslang::EbtBlock)
|
||||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
||||||
} else {
|
} else {
|
||||||
if (type.getBasicType() == glslang::EbtBlock) {
|
if (type.getBasicType() == glslang::EbtBlock) {
|
||||||
if (filterMember(glslangMember)) {
|
if (filterMember(*glslangMember.type)) {
|
||||||
memberDelta++;
|
memberDelta++;
|
||||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
|
||||||
continue;
|
continue;
|
||||||
@ -4437,7 +4456,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
|
|||||||
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta;
|
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta;
|
||||||
}
|
}
|
||||||
// modify just this child's view of the qualifier
|
// modify just this child's view of the qualifier
|
||||||
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
|
glslang::TQualifier memberQualifier = glslangMember.type->getQualifier();
|
||||||
InheritQualifiers(memberQualifier, qualifier);
|
InheritQualifiers(memberQualifier, qualifier);
|
||||||
|
|
||||||
// manually inherit location
|
// manually inherit location
|
||||||
@ -4448,25 +4467,38 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
|
|||||||
bool lastBufferBlockMember = qualifier.storage == glslang::EvqBuffer &&
|
bool lastBufferBlockMember = qualifier.storage == glslang::EvqBuffer &&
|
||||||
i == (int)glslangMembers->size() - 1;
|
i == (int)glslangMembers->size() - 1;
|
||||||
|
|
||||||
// Make forward pointers for any pointer members, and create a list of members to
|
// Make forward pointers for any pointer members.
|
||||||
// convert to spirv types after creating the struct.
|
if (glslangMember.type->isReference() &&
|
||||||
if (glslangMember.isReference()) {
|
forwardPointers.find(glslangMember.type->getReferentType()) == forwardPointers.end()) {
|
||||||
if (forwardPointers.find(glslangMember.getReferentType()) == forwardPointers.end()) {
|
deferredForwardPointers.push_back(std::make_pair(glslangMember.type, memberQualifier));
|
||||||
deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier));
|
}
|
||||||
}
|
|
||||||
spvMembers.push_back(
|
// Create the member type.
|
||||||
convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
|
auto const spvMember = convertGlslangToSpvType(*glslangMember.type, explicitLayout, memberQualifier, lastBufferBlockMember,
|
||||||
true));
|
glslangMember.type->isReference());
|
||||||
} else {
|
spvMembers.push_back(spvMember);
|
||||||
spvMembers.push_back(
|
|
||||||
convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
|
// Update the builder with the type's location so that we can create debug types for the structure members.
|
||||||
false));
|
// There doesn't exist a "clean" entry point for this information to be passed along to the builder so, for now,
|
||||||
|
// it is stored in the builder and consumed during the construction of composite debug types.
|
||||||
|
// TODO: This probably warrants further investigation. This approach was decided to be the least ugly of the
|
||||||
|
// quick and dirty approaches that were tried.
|
||||||
|
// Advantages of this approach:
|
||||||
|
// + Relatively clean. No direct calls into debug type system.
|
||||||
|
// + Handles nested recursive structures.
|
||||||
|
// Disadvantages of this approach:
|
||||||
|
// + Not as clean as desired. Traverser queries/sets persistent state. This is fragile.
|
||||||
|
// + Table lookup during creation of composite debug types. This really shouldn't be necessary.
|
||||||
|
if(options.emitNonSemanticShaderDebugInfo) {
|
||||||
|
builder.debugTypeLocs[spvMember].name = glslangMember.type->getFieldName().c_str();
|
||||||
|
builder.debugTypeLocs[spvMember].line = glslangMember.loc.line;
|
||||||
|
builder.debugTypeLocs[spvMember].column = glslangMember.loc.column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make the SPIR-V type
|
// Make the SPIR-V type
|
||||||
spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str());
|
spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str(), false);
|
||||||
if (! HasNonLayoutQualifiers(type, qualifier))
|
if (! HasNonLayoutQualifiers(type, qualifier))
|
||||||
structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType;
|
structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType;
|
||||||
|
|
||||||
@ -5060,6 +5092,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
|
|||||||
// GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
|
// GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
|
||||||
|
|
||||||
std::vector<spv::Id> paramTypes;
|
std::vector<spv::Id> paramTypes;
|
||||||
|
std::vector<char const*> paramNames;
|
||||||
std::vector<std::vector<spv::Decoration>> paramDecorations; // list of decorations per parameter
|
std::vector<std::vector<spv::Decoration>> paramDecorations; // list of decorations per parameter
|
||||||
glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence();
|
glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence();
|
||||||
|
|
||||||
@ -5084,10 +5117,14 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
|
|||||||
paramTypes.push_back(typeId);
|
paramTypes.push_back(typeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (auto const parameter:parameters) {
|
||||||
|
paramNames.push_back(parameter->getAsSymbolNode()->getName().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
spv::Block* functionBlock;
|
spv::Block* functionBlock;
|
||||||
spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()),
|
spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()),
|
||||||
convertGlslangToSpvType(glslFunction->getType()),
|
convertGlslangToSpvType(glslFunction->getType()),
|
||||||
glslFunction->getName().c_str(), paramTypes,
|
glslFunction->getName().c_str(), paramTypes, paramNames,
|
||||||
paramDecorations, &functionBlock);
|
paramDecorations, &functionBlock);
|
||||||
if (implicitThis)
|
if (implicitThis)
|
||||||
function->setImplicitThis();
|
function->setImplicitThis();
|
||||||
@ -5177,6 +5214,7 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate
|
|||||||
currentFunction = functionMap[node->getName().c_str()];
|
currentFunction = functionMap[node->getName().c_str()];
|
||||||
spv::Block* functionBlock = currentFunction->getEntryBlock();
|
spv::Block* functionBlock = currentFunction->getEntryBlock();
|
||||||
builder.setBuildPoint(functionBlock);
|
builder.setBuildPoint(functionBlock);
|
||||||
|
builder.enterFunction(currentFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
|
void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
|
||||||
|
171
SPIRV/NonSemanticShaderDebugInfo100.h
Normal file
171
SPIRV/NonSemanticShaderDebugInfo100.h
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
// Copyright (c) 2018 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
|
// to deal in the Materials without restriction, including without limitation
|
||||||
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE MATERIALS.
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_
|
||||||
|
#define SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NonSemanticShaderDebugInfo100Version = 100,
|
||||||
|
NonSemanticShaderDebugInfo100Version_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
NonSemanticShaderDebugInfo100Revision = 6,
|
||||||
|
NonSemanticShaderDebugInfo100Revision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100Instructions {
|
||||||
|
NonSemanticShaderDebugInfo100DebugInfoNone = 0,
|
||||||
|
NonSemanticShaderDebugInfo100DebugCompilationUnit = 1,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeBasic = 2,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypePointer = 3,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeQualifier = 4,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeArray = 5,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeVector = 6,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypedef = 7,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeFunction = 8,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeEnum = 9,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeComposite = 10,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeMember = 11,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeInheritance = 12,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypePtrToMember = 13,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeTemplate = 14,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeTemplateParameter = 15,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter = 16,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack = 17,
|
||||||
|
NonSemanticShaderDebugInfo100DebugGlobalVariable = 18,
|
||||||
|
NonSemanticShaderDebugInfo100DebugFunctionDeclaration = 19,
|
||||||
|
NonSemanticShaderDebugInfo100DebugFunction = 20,
|
||||||
|
NonSemanticShaderDebugInfo100DebugLexicalBlock = 21,
|
||||||
|
NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator = 22,
|
||||||
|
NonSemanticShaderDebugInfo100DebugScope = 23,
|
||||||
|
NonSemanticShaderDebugInfo100DebugNoScope = 24,
|
||||||
|
NonSemanticShaderDebugInfo100DebugInlinedAt = 25,
|
||||||
|
NonSemanticShaderDebugInfo100DebugLocalVariable = 26,
|
||||||
|
NonSemanticShaderDebugInfo100DebugInlinedVariable = 27,
|
||||||
|
NonSemanticShaderDebugInfo100DebugDeclare = 28,
|
||||||
|
NonSemanticShaderDebugInfo100DebugValue = 29,
|
||||||
|
NonSemanticShaderDebugInfo100DebugOperation = 30,
|
||||||
|
NonSemanticShaderDebugInfo100DebugExpression = 31,
|
||||||
|
NonSemanticShaderDebugInfo100DebugMacroDef = 32,
|
||||||
|
NonSemanticShaderDebugInfo100DebugMacroUndef = 33,
|
||||||
|
NonSemanticShaderDebugInfo100DebugImportedEntity = 34,
|
||||||
|
NonSemanticShaderDebugInfo100DebugSource = 35,
|
||||||
|
NonSemanticShaderDebugInfo100DebugFunctionDefinition = 101,
|
||||||
|
NonSemanticShaderDebugInfo100DebugSourceContinued = 102,
|
||||||
|
NonSemanticShaderDebugInfo100DebugLine = 103,
|
||||||
|
NonSemanticShaderDebugInfo100DebugNoLine = 104,
|
||||||
|
NonSemanticShaderDebugInfo100DebugBuildIdentifier = 105,
|
||||||
|
NonSemanticShaderDebugInfo100DebugStoragePath = 106,
|
||||||
|
NonSemanticShaderDebugInfo100DebugEntryPoint = 107,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeMatrix = 108,
|
||||||
|
NonSemanticShaderDebugInfo100InstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugInfoFlags {
|
||||||
|
NonSemanticShaderDebugInfo100None = 0x0000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsProtected = 0x01,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsPrivate = 0x02,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsPublic = 0x03,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsLocal = 0x04,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsDefinition = 0x08,
|
||||||
|
NonSemanticShaderDebugInfo100FlagFwdDecl = 0x10,
|
||||||
|
NonSemanticShaderDebugInfo100FlagArtificial = 0x20,
|
||||||
|
NonSemanticShaderDebugInfo100FlagExplicit = 0x40,
|
||||||
|
NonSemanticShaderDebugInfo100FlagPrototyped = 0x80,
|
||||||
|
NonSemanticShaderDebugInfo100FlagObjectPointer = 0x100,
|
||||||
|
NonSemanticShaderDebugInfo100FlagStaticMember = 0x200,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIndirectVariable = 0x400,
|
||||||
|
NonSemanticShaderDebugInfo100FlagLValueReference = 0x800,
|
||||||
|
NonSemanticShaderDebugInfo100FlagRValueReference = 0x1000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsOptimized = 0x2000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagIsEnumClass = 0x4000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagTypePassByValue = 0x8000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagTypePassByReference = 0x10000,
|
||||||
|
NonSemanticShaderDebugInfo100FlagUnknownPhysicalLayout = 0x20000,
|
||||||
|
NonSemanticShaderDebugInfo100DebugInfoFlagsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100BuildIdentifierFlags {
|
||||||
|
NonSemanticShaderDebugInfo100IdentifierPossibleDuplicates = 0x01,
|
||||||
|
NonSemanticShaderDebugInfo100BuildIdentifierFlagsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncoding {
|
||||||
|
NonSemanticShaderDebugInfo100Unspecified = 0,
|
||||||
|
NonSemanticShaderDebugInfo100Address = 1,
|
||||||
|
NonSemanticShaderDebugInfo100Boolean = 2,
|
||||||
|
NonSemanticShaderDebugInfo100Float = 3,
|
||||||
|
NonSemanticShaderDebugInfo100Signed = 4,
|
||||||
|
NonSemanticShaderDebugInfo100SignedChar = 5,
|
||||||
|
NonSemanticShaderDebugInfo100Unsigned = 6,
|
||||||
|
NonSemanticShaderDebugInfo100UnsignedChar = 7,
|
||||||
|
NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugCompositeType {
|
||||||
|
NonSemanticShaderDebugInfo100Class = 0,
|
||||||
|
NonSemanticShaderDebugInfo100Structure = 1,
|
||||||
|
NonSemanticShaderDebugInfo100Union = 2,
|
||||||
|
NonSemanticShaderDebugInfo100DebugCompositeTypeMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugTypeQualifier {
|
||||||
|
NonSemanticShaderDebugInfo100ConstType = 0,
|
||||||
|
NonSemanticShaderDebugInfo100VolatileType = 1,
|
||||||
|
NonSemanticShaderDebugInfo100RestrictType = 2,
|
||||||
|
NonSemanticShaderDebugInfo100AtomicType = 3,
|
||||||
|
NonSemanticShaderDebugInfo100DebugTypeQualifierMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugOperation {
|
||||||
|
NonSemanticShaderDebugInfo100Deref = 0,
|
||||||
|
NonSemanticShaderDebugInfo100Plus = 1,
|
||||||
|
NonSemanticShaderDebugInfo100Minus = 2,
|
||||||
|
NonSemanticShaderDebugInfo100PlusUconst = 3,
|
||||||
|
NonSemanticShaderDebugInfo100BitPiece = 4,
|
||||||
|
NonSemanticShaderDebugInfo100Swap = 5,
|
||||||
|
NonSemanticShaderDebugInfo100Xderef = 6,
|
||||||
|
NonSemanticShaderDebugInfo100StackValue = 7,
|
||||||
|
NonSemanticShaderDebugInfo100Constu = 8,
|
||||||
|
NonSemanticShaderDebugInfo100Fragment = 9,
|
||||||
|
NonSemanticShaderDebugInfo100DebugOperationMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticShaderDebugInfo100DebugImportedEntity {
|
||||||
|
NonSemanticShaderDebugInfo100ImportedModule = 0,
|
||||||
|
NonSemanticShaderDebugInfo100ImportedDeclaration = 1,
|
||||||
|
NonSemanticShaderDebugInfo100DebugImportedEntityMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_
|
@ -59,12 +59,15 @@ namespace spv {
|
|||||||
|
|
||||||
Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogger* buildLogger) :
|
Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogger* buildLogger) :
|
||||||
spvVersion(spvVersion),
|
spvVersion(spvVersion),
|
||||||
source(SourceLanguageUnknown),
|
sourceLang(SourceLanguageUnknown),
|
||||||
sourceVersion(0),
|
sourceVersion(0),
|
||||||
sourceFileStringId(NoResult),
|
sourceFileStringId(NoResult),
|
||||||
currentLine(0),
|
currentLine(0),
|
||||||
currentFile(nullptr),
|
currentFile(nullptr),
|
||||||
|
currentFileId(NoResult),
|
||||||
|
lastDebugScopeId(NoResult),
|
||||||
emitOpLines(false),
|
emitOpLines(false),
|
||||||
|
emitNonSemanticShaderDebugInfo(false),
|
||||||
addressModel(AddressingModelLogical),
|
addressModel(AddressingModelLogical),
|
||||||
memoryModel(MemoryModelGLSL450),
|
memoryModel(MemoryModelGLSL450),
|
||||||
builderNumber(magicNumber),
|
builderNumber(magicNumber),
|
||||||
@ -98,8 +101,12 @@ void Builder::setLine(int lineNum)
|
|||||||
{
|
{
|
||||||
if (lineNum != 0 && lineNum != currentLine) {
|
if (lineNum != 0 && lineNum != currentLine) {
|
||||||
currentLine = lineNum;
|
currentLine = lineNum;
|
||||||
if (emitOpLines)
|
if (emitOpLines) {
|
||||||
addLine(sourceFileStringId, currentLine, 0);
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
addDebugScopeAndLine(currentFileId, currentLine, 0);
|
||||||
|
else
|
||||||
|
addLine(sourceFileStringId, currentLine, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +125,10 @@ void Builder::setLine(int lineNum, const char* filename)
|
|||||||
currentFile = filename;
|
currentFile = filename;
|
||||||
if (emitOpLines) {
|
if (emitOpLines) {
|
||||||
spv::Id strId = getStringId(filename);
|
spv::Id strId = getStringId(filename);
|
||||||
addLine(strId, currentLine, 0);
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
addDebugScopeAndLine(strId, currentLine, 0);
|
||||||
|
else
|
||||||
|
addLine(strId, currentLine, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,22 +142,49 @@ void Builder::addLine(Id fileName, int lineNum, int column)
|
|||||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(line));
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(line));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
||||||
|
{
|
||||||
|
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
||||||
|
spv::Id resultId = getUniqueId();
|
||||||
|
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
|
scopeInst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope);
|
||||||
|
scopeInst->addIdOperand(currentDebugScopeId.top());
|
||||||
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(scopeInst));
|
||||||
|
lastDebugScopeId = currentDebugScopeId.top();
|
||||||
|
}
|
||||||
|
spv::Id resultId = getUniqueId();
|
||||||
|
Instruction* lineInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
|
lineInst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine);
|
||||||
|
lineInst->addIdOperand(makeDebugSource(fileName));
|
||||||
|
lineInst->addIdOperand(makeUintConstant(lineNum));
|
||||||
|
lineInst->addIdOperand(makeUintConstant(lineNum));
|
||||||
|
lineInst->addIdOperand(makeUintConstant(column));
|
||||||
|
lineInst->addIdOperand(makeUintConstant(column));
|
||||||
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(lineInst));
|
||||||
|
}
|
||||||
|
|
||||||
// For creating new groupedTypes (will return old type if the requested one was already made).
|
// For creating new groupedTypes (will return old type if the requested one was already made).
|
||||||
Id Builder::makeVoidType()
|
Id Builder::makeVoidType()
|
||||||
{
|
{
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
if (groupedTypes[OpTypeVoid].size() == 0) {
|
if (groupedTypes[OpTypeVoid].size() == 0) {
|
||||||
type = new Instruction(getUniqueId(), NoType, OpTypeVoid);
|
Id typeId = getUniqueId();
|
||||||
|
type = new Instruction(typeId, NoType, OpTypeVoid);
|
||||||
groupedTypes[OpTypeVoid].push_back(type);
|
groupedTypes[OpTypeVoid].push_back(type);
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
// Core OpTypeVoid used for debug void type
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
debugId[typeId] = typeId;
|
||||||
} else
|
} else
|
||||||
type = groupedTypes[OpTypeVoid].back();
|
type = groupedTypes[OpTypeVoid].back();
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeBoolType()
|
Id Builder::makeBoolType(bool const compilerGenerated)
|
||||||
{
|
{
|
||||||
Instruction* type;
|
Instruction* type;
|
||||||
if (groupedTypes[OpTypeBool].size() == 0) {
|
if (groupedTypes[OpTypeBool].size() == 0) {
|
||||||
@ -158,6 +195,12 @@ Id Builder::makeBoolType()
|
|||||||
} else
|
} else
|
||||||
type = groupedTypes[OpTypeBool].back();
|
type = groupedTypes[OpTypeBool].back();
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeBoolDebugType(32);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,6 +215,12 @@ Id Builder::makeSamplerType()
|
|||||||
} else
|
} else
|
||||||
type = groupedTypes[OpTypeSampler].back();
|
type = groupedTypes[OpTypeSampler].back();
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeCompositeDebugType({}, "type.sampler", NonSemanticShaderDebugInfo100Structure, true);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,6 +317,12 @@ Id Builder::makeIntegerType(int width, bool hasSign)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeIntegerDebugType(width, hasSign);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,6 +360,12 @@ Id Builder::makeFloatType(int width)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeFloatDebugType(width);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +373,7 @@ Id Builder::makeFloatType(int width)
|
|||||||
// See makeStructResultType() for non-decorated structs
|
// See makeStructResultType() for non-decorated structs
|
||||||
// needed as the result of some instructions, which does
|
// needed as the result of some instructions, which does
|
||||||
// check for duplicates.
|
// check for duplicates.
|
||||||
Id Builder::makeStructType(const std::vector<Id>& members, const char* name)
|
Id Builder::makeStructType(const std::vector<Id>& members, const char* name, bool const compilerGenerated)
|
||||||
{
|
{
|
||||||
// Don't look for previous one, because in the general case,
|
// Don't look for previous one, because in the general case,
|
||||||
// structs can be duplicated except for decorations.
|
// structs can be duplicated except for decorations.
|
||||||
@ -326,6 +387,12 @@ Id Builder::makeStructType(const std::vector<Id>& members, const char* name)
|
|||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
addName(type->getResultId(), name);
|
addName(type->getResultId(), name);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeCompositeDebugType(members, name, NonSemanticShaderDebugInfo100Structure);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,6 +439,12 @@ Id Builder::makeVectorType(Id component, int size)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeVectorDebugType(component, size);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,6 +471,12 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeMatrixDebugType(column, cols);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,6 +563,12 @@ Id Builder::makeArrayType(Id element, Id sizeId, int stride)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeArrayDebugType(element, sizeId);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,6 +579,12 @@ Id Builder::makeRuntimeArray(Id element)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeArrayDebugType(element, makeUintConstant(0));
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,11 +604,25 @@ Id Builder::makeFunctionType(Id returnType, const std::vector<Id>& paramTypes)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! mismatch)
|
if (! mismatch)
|
||||||
|
{
|
||||||
|
// If compiling HLSL, glslang will create a wrapper function around the entrypoint. Accordingly, a void(void)
|
||||||
|
// function type is created for the wrapper function. However, nonsemantic shader debug information is disabled
|
||||||
|
// while creating the HLSL wrapper. Consequently, if we encounter another void(void) function, we need to create
|
||||||
|
// the associated debug function type if it hasn't been created yet.
|
||||||
|
if(emitNonSemanticShaderDebugInfo && debugId[type->getResultId()] == 0) {
|
||||||
|
assert(sourceLang == spv::SourceLanguageHLSL);
|
||||||
|
assert(getTypeClass(returnType) == OpTypeVoid && paramTypes.size() == 0);
|
||||||
|
|
||||||
|
Id debugTypeId = makeDebugFunctionType(returnType, {});
|
||||||
|
debugId[type->getResultId()] = debugTypeId;
|
||||||
|
}
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not found, make it
|
// not found, make it
|
||||||
type = new Instruction(getUniqueId(), NoType, OpTypeFunction);
|
Id typeId = getUniqueId();
|
||||||
|
type = new Instruction(typeId, NoType, OpTypeFunction);
|
||||||
type->addIdOperand(returnType);
|
type->addIdOperand(returnType);
|
||||||
for (int p = 0; p < (int)paramTypes.size(); ++p)
|
for (int p = 0; p < (int)paramTypes.size(); ++p)
|
||||||
type->addIdOperand(paramTypes[p]);
|
type->addIdOperand(paramTypes[p]);
|
||||||
@ -525,9 +630,34 @@ Id Builder::makeFunctionType(Id returnType, const std::vector<Id>& paramTypes)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
// make debug type and map it
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
Id debugTypeId = makeDebugFunctionType(returnType, paramTypes);
|
||||||
|
debugId[typeId] = debugTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTypes)
|
||||||
|
{
|
||||||
|
assert(debugId[returnType] != 0);
|
||||||
|
|
||||||
|
Id typeId = getUniqueId();
|
||||||
|
auto type = new Instruction(typeId, makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeFunction);
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||||
|
type->addIdOperand(debugId[returnType]);
|
||||||
|
for (auto const paramType : paramTypes) {
|
||||||
|
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||||
|
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||||
|
}
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
return typeId;
|
||||||
|
}
|
||||||
|
|
||||||
Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled,
|
Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled,
|
||||||
ImageFormat format)
|
ImageFormat format)
|
||||||
{
|
{
|
||||||
@ -609,6 +739,22 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto TypeName = [&dim]() -> char const* {
|
||||||
|
switch (dim) {
|
||||||
|
case Dim1D: return "type.1d.image";
|
||||||
|
case Dim2D: return "type.2d.image";
|
||||||
|
case Dim3D: return "type.3d.image";
|
||||||
|
case DimCube: return "type.cube.image";
|
||||||
|
default: return "type.image";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
auto const debugResultId = makeCompositeDebugType({}, TypeName(), NonSemanticShaderDebugInfo100Class, true);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,9 +776,389 @@ Id Builder::makeSampledImageType(Id imageType)
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
{
|
||||||
|
auto const debugResultId = makeCompositeDebugType({}, "type.sampled.image", NonSemanticShaderDebugInfo100Class, true);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugInfoNone()
|
||||||
|
{
|
||||||
|
if (debugInfoNone != 0)
|
||||||
|
return debugInfoNone;
|
||||||
|
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugInfoNone);
|
||||||
|
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||||
|
module.mapInstruction(inst);
|
||||||
|
|
||||||
|
debugInfoNone = inst->getResultId();
|
||||||
|
|
||||||
|
return debugInfoNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeBoolDebugType(int const size)
|
||||||
|
{
|
||||||
|
// try to find it
|
||||||
|
Instruction* type;
|
||||||
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||||
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||||
|
if (type->getIdOperand(0) == getStringId("bool") &&
|
||||||
|
type->getIdOperand(1) == static_cast<unsigned int>(size) &&
|
||||||
|
type->getIdOperand(2) == NonSemanticShaderDebugInfo100Boolean)
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||||
|
|
||||||
|
type->addIdOperand(getStringId("bool")); // name id
|
||||||
|
type->addIdOperand(makeUintConstant(size)); // size id
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Boolean)); // encoding id
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
|
||||||
|
{
|
||||||
|
// try to find it
|
||||||
|
Instruction* type;
|
||||||
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||||
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||||
|
if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) &&
|
||||||
|
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||||
|
type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned))
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not found, make it
|
||||||
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||||
|
if(hasSign == true) {
|
||||||
|
type->addIdOperand(getStringId("int")); // name id
|
||||||
|
} else {
|
||||||
|
type->addIdOperand(getStringId("uint")); // name id
|
||||||
|
}
|
||||||
|
type->addIdOperand(makeUintConstant(width)); // size id
|
||||||
|
if(hasSign == true) {
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id
|
||||||
|
} else {
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Unsigned)); // encoding id
|
||||||
|
}
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeFloatDebugType(int const width)
|
||||||
|
{
|
||||||
|
// try to find it
|
||||||
|
Instruction* type;
|
||||||
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
|
||||||
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
|
||||||
|
if (type->getIdOperand(0) == getStringId("float") &&
|
||||||
|
type->getIdOperand(1) == static_cast<unsigned int>(width) &&
|
||||||
|
type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float)
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not found, make it
|
||||||
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
|
||||||
|
type->addIdOperand(getStringId("float")); // name id
|
||||||
|
type->addIdOperand(makeUintConstant(width)); // size id
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType)
|
||||||
|
{
|
||||||
|
assert(sequenceType == NonSemanticShaderDebugInfo100DebugTypeArray ||
|
||||||
|
sequenceType == NonSemanticShaderDebugInfo100DebugTypeVector);
|
||||||
|
|
||||||
|
// try to find it
|
||||||
|
Instruction* type;
|
||||||
|
for (int t = 0; t < (int)groupedDebugTypes[sequenceType].size(); ++t) {
|
||||||
|
type = groupedDebugTypes[sequenceType][t];
|
||||||
|
if (type->getIdOperand(0) == baseType &&
|
||||||
|
type->getIdOperand(1) == makeUintConstant(componentCount))
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not found, make it
|
||||||
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(sequenceType);
|
||||||
|
type->addIdOperand(debugId[baseType]); // base type
|
||||||
|
type->addIdOperand(componentCount); // component count
|
||||||
|
|
||||||
|
groupedDebugTypes[sequenceType].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount)
|
||||||
|
{
|
||||||
|
return makeSequentialDebugType(baseType, componentCount, NonSemanticShaderDebugInfo100DebugTypeArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeVectorDebugType(Id const baseType, int const componentCount)
|
||||||
|
{
|
||||||
|
return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor)
|
||||||
|
{
|
||||||
|
// try to find it
|
||||||
|
Instruction* type;
|
||||||
|
for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].size(); ++t) {
|
||||||
|
type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix][t];
|
||||||
|
if (type->getIdOperand(0) == vectorType &&
|
||||||
|
type->getIdOperand(1) == makeUintConstant(vectorCount))
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
// not found, make it
|
||||||
|
type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMatrix);
|
||||||
|
type->addIdOperand(debugId[vectorType]); // vector type id
|
||||||
|
type->addIdOperand(makeUintConstant(vectorCount)); // component count id
|
||||||
|
type->addIdOperand(makeBoolConstant(columnMajor)); // column-major id
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc)
|
||||||
|
{
|
||||||
|
assert(debugId[memberType] != 0);
|
||||||
|
|
||||||
|
Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember);
|
||||||
|
type->addIdOperand(getStringId(debugTypeLoc.name)); // name id
|
||||||
|
type->addIdOperand(debugId[memberType]); // type id
|
||||||
|
type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives
|
||||||
|
type->addIdOperand(makeUintConstant(debugTypeLoc.line)); // line id TODO: currentLine is always zero
|
||||||
|
type->addIdOperand(makeUintConstant(debugTypeLoc.column)); // TODO: column id
|
||||||
|
type->addIdOperand(makeUintConstant(0)); // TODO: offset id
|
||||||
|
type->addIdOperand(makeUintConstant(0)); // TODO: size id
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMember].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: To represent a source language opaque type, this instruction must have no Members operands, Size operand must be
|
||||||
|
// DebugInfoNone, and Name must start with @ to avoid clashes with user defined names.
|
||||||
|
Id Builder::makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
|
||||||
|
NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType)
|
||||||
|
{
|
||||||
|
// Create the debug member types.
|
||||||
|
std::vector<Id> memberDebugTypes;
|
||||||
|
for(auto const memberType : memberTypes) {
|
||||||
|
assert(debugTypeLocs.find(memberType) != debugTypeLocs.end());
|
||||||
|
|
||||||
|
memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType]));
|
||||||
|
|
||||||
|
// TODO: Need to rethink this method of passing location information.
|
||||||
|
// debugTypeLocs.erase(memberType);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create The structure debug type.
|
||||||
|
Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite);
|
||||||
|
type->addIdOperand(getStringId(name)); // name id
|
||||||
|
type->addIdOperand(makeUintConstant(tag)); // tag id
|
||||||
|
type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives
|
||||||
|
type->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero?
|
||||||
|
type->addIdOperand(makeUintConstant(0)); // TODO: column id
|
||||||
|
type->addIdOperand(makeDebugCompilationUnit()); // scope id
|
||||||
|
if(isOpaqueType == true) {
|
||||||
|
// Prepend '@' to opaque types.
|
||||||
|
type->addIdOperand(getStringId('@' + std::string(name))); // linkage name id
|
||||||
|
type->addIdOperand(makeDebugInfoNone()); // size id
|
||||||
|
} else {
|
||||||
|
type->addIdOperand(getStringId(name)); // linkage name id
|
||||||
|
type->addIdOperand(makeUintConstant(0)); // TODO: size id
|
||||||
|
}
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id
|
||||||
|
assert(isOpaqueType == false || (isOpaqueType == true && memberDebugTypes.empty()));
|
||||||
|
for(auto const memberDebugType : memberDebugTypes) {
|
||||||
|
type->addIdOperand(memberDebugType);
|
||||||
|
}
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeComposite].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugSource(const Id fileName) {
|
||||||
|
if (debugSourceId.find(fileName) != debugSourceId.end())
|
||||||
|
return debugSourceId[fileName];
|
||||||
|
spv::Id resultId = getUniqueId();
|
||||||
|
Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
|
sourceInst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSource);
|
||||||
|
sourceInst->addIdOperand(fileName);
|
||||||
|
if (emitNonSemanticShaderDebugSource) {
|
||||||
|
spv::Id sourceId = 0;
|
||||||
|
if (fileName == sourceFileStringId) {
|
||||||
|
sourceId = getStringId(sourceText);
|
||||||
|
} else {
|
||||||
|
auto incItr = includeFiles.find(fileName);
|
||||||
|
assert(incItr != includeFiles.end());
|
||||||
|
sourceId = getStringId(*incItr->second);
|
||||||
|
}
|
||||||
|
sourceInst->addIdOperand(sourceId);
|
||||||
|
}
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
||||||
|
module.mapInstruction(sourceInst);
|
||||||
|
debugSourceId[fileName] = resultId;
|
||||||
|
return resultId;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugCompilationUnit() {
|
||||||
|
if (nonSemanticShaderCompilationUnitId != 0)
|
||||||
|
return nonSemanticShaderCompilationUnitId;
|
||||||
|
spv::Id resultId = getUniqueId();
|
||||||
|
Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
|
sourceInst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugCompilationUnit);
|
||||||
|
sourceInst->addIdOperand(makeUintConstant(1)); // TODO(greg-lunarg): Get rid of magic number
|
||||||
|
sourceInst->addIdOperand(makeUintConstant(4)); // TODO(greg-lunarg): Get rid of magic number
|
||||||
|
sourceInst->addIdOperand(makeDebugSource(sourceFileStringId));
|
||||||
|
sourceInst->addIdOperand(makeUintConstant(sourceLang));
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
||||||
|
module.mapInstruction(sourceInst);
|
||||||
|
nonSemanticShaderCompilationUnitId = resultId;
|
||||||
|
return resultId;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id const variable)
|
||||||
|
{
|
||||||
|
assert(type != 0);
|
||||||
|
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable);
|
||||||
|
inst->addIdOperand(getStringId(name)); // name id
|
||||||
|
inst->addIdOperand(type); // type id
|
||||||
|
inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id
|
||||||
|
inst->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero?
|
||||||
|
inst->addIdOperand(makeUintConstant(0)); // TODO: column id
|
||||||
|
inst->addIdOperand(makeDebugCompilationUnit()); // scope id
|
||||||
|
inst->addIdOperand(getStringId(name)); // linkage name id
|
||||||
|
inst->addIdOperand(variable); // variable id
|
||||||
|
inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsDefinition)); // flags id
|
||||||
|
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||||
|
module.mapInstruction(inst);
|
||||||
|
|
||||||
|
return inst->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
|
||||||
|
{
|
||||||
|
assert(name != nullptr);
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
||||||
|
inst->addIdOperand(getStringId(name)); // name id
|
||||||
|
inst->addIdOperand(type); // type id
|
||||||
|
inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id
|
||||||
|
inst->addIdOperand(makeUintConstant(currentLine)); // line id
|
||||||
|
inst->addIdOperand(makeUintConstant(0)); // TODO: column id
|
||||||
|
inst->addIdOperand(currentDebugScopeId.top()); // scope id
|
||||||
|
inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsLocal)); // flags id
|
||||||
|
if(argNumber != 0) {
|
||||||
|
inst->addIdOperand(makeUintConstant(argNumber));
|
||||||
|
}
|
||||||
|
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||||
|
module.mapInstruction(inst);
|
||||||
|
|
||||||
|
return inst->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugExpression()
|
||||||
|
{
|
||||||
|
if (debugExpression != 0)
|
||||||
|
return debugExpression;
|
||||||
|
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugExpression);
|
||||||
|
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||||
|
module.mapInstruction(inst);
|
||||||
|
|
||||||
|
debugExpression = inst->getResultId();
|
||||||
|
|
||||||
|
return debugExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable)
|
||||||
|
{
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare);
|
||||||
|
inst->addIdOperand(debugLocalVariable); // debug local variable id
|
||||||
|
inst->addIdOperand(localVariable); // local variable id
|
||||||
|
inst->addIdOperand(makeDebugExpression()); // expression id
|
||||||
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(inst));
|
||||||
|
|
||||||
|
return inst->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value)
|
||||||
|
{
|
||||||
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue);
|
||||||
|
inst->addIdOperand(debugLocalVariable); // debug local variable id
|
||||||
|
inst->addIdOperand(value); // value id
|
||||||
|
inst->addIdOperand(makeDebugExpression()); // expression id
|
||||||
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(inst));
|
||||||
|
|
||||||
|
return inst->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef GLSLANG_WEB
|
#ifndef GLSLANG_WEB
|
||||||
Id Builder::makeAccelerationStructureType()
|
Id Builder::makeAccelerationStructureType()
|
||||||
{
|
{
|
||||||
@ -920,6 +1446,17 @@ bool Builder::isSpecConstantOpCode(Op opcode) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Builder::isRayTracingOpCode(Op opcode) const
|
||||||
|
{
|
||||||
|
switch (opcode) {
|
||||||
|
case OpTypeAccelerationStructureKHR:
|
||||||
|
case OpTypeRayQueryKHR:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Id Builder::makeNullConstant(Id typeId)
|
Id Builder::makeNullConstant(Id typeId)
|
||||||
{
|
{
|
||||||
Instruction* constant;
|
Instruction* constant;
|
||||||
@ -1136,6 +1673,19 @@ Id Builder::makeFpConstant(Id type, double d, bool specConstant)
|
|||||||
return NoResult;
|
return NoResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Id Builder::importNonSemanticShaderDebugInfoInstructions()
|
||||||
|
{
|
||||||
|
assert(emitNonSemanticShaderDebugInfo == true);
|
||||||
|
|
||||||
|
if(nonSemanticShaderDebugInfo == 0)
|
||||||
|
{
|
||||||
|
this->addExtension(spv::E_SPV_KHR_non_semantic_info);
|
||||||
|
nonSemanticShaderDebugInfo = this->import("NonSemantic.Shader.DebugInfo.100");
|
||||||
|
}
|
||||||
|
|
||||||
|
return nonSemanticShaderDebugInfo;
|
||||||
|
}
|
||||||
|
|
||||||
Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector<Id>& comps)
|
Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector<Id>& comps)
|
||||||
{
|
{
|
||||||
Instruction* constant = 0;
|
Instruction* constant = 0;
|
||||||
@ -1447,23 +1997,34 @@ Function* Builder::makeEntryPoint(const char* entryPoint)
|
|||||||
assert(! entryPointFunction);
|
assert(! entryPointFunction);
|
||||||
|
|
||||||
Block* entry;
|
Block* entry;
|
||||||
std::vector<Id> params;
|
std::vector<Id> paramsTypes;
|
||||||
|
std::vector<char const*> paramNames;
|
||||||
std::vector<std::vector<Decoration>> decorations;
|
std::vector<std::vector<Decoration>> decorations;
|
||||||
|
|
||||||
entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, decorations, &entry);
|
auto const returnType = makeVoidType();
|
||||||
|
|
||||||
|
restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo;
|
||||||
|
if(sourceLang == spv::SourceLanguageHLSL) {
|
||||||
|
emitNonSemanticShaderDebugInfo = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry);
|
||||||
|
|
||||||
|
emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
|
||||||
|
|
||||||
return entryPointFunction;
|
return entryPointFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||||
const std::vector<Id>& paramTypes,
|
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
||||||
const std::vector<std::vector<Decoration>>& decorations, Block **entry)
|
const std::vector<std::vector<Decoration>>& decorations, Block **entry)
|
||||||
{
|
{
|
||||||
// Make the function and initial instructions in it
|
// Make the function and initial instructions in it
|
||||||
Id typeId = makeFunctionType(returnType, paramTypes);
|
Id typeId = makeFunctionType(returnType, paramTypes);
|
||||||
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
|
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
|
||||||
Function* function = new Function(getUniqueId(), returnType, typeId, firstParamId, module);
|
Id funcId = getUniqueId();
|
||||||
|
Function* function = new Function(funcId, returnType, typeId, firstParamId, module);
|
||||||
|
|
||||||
// Set up the precisions
|
// Set up the precisions
|
||||||
setPrecision(function->getId(), precision);
|
setPrecision(function->getId(), precision);
|
||||||
@ -1475,11 +2036,39 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make the debug function instruction
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
Id nameId = getStringId(unmangleFunctionName(name));
|
||||||
|
Id debugFuncId = makeDebugFunction(function, nameId, typeId);
|
||||||
|
debugId[funcId] = debugFuncId;
|
||||||
|
currentDebugScopeId.push(debugFuncId);
|
||||||
|
lastDebugScopeId = NoResult;
|
||||||
|
}
|
||||||
|
|
||||||
// CFG
|
// CFG
|
||||||
if (entry) {
|
assert(entry != nullptr);
|
||||||
*entry = new Block(getUniqueId(), *function);
|
*entry = new Block(getUniqueId(), *function);
|
||||||
function->addBlock(*entry);
|
function->addBlock(*entry);
|
||||||
setBuildPoint(*entry);
|
setBuildPoint(*entry);
|
||||||
|
|
||||||
|
// DebugScope and DebugLine for parameter DebugDeclares
|
||||||
|
if (emitNonSemanticShaderDebugInfo && (int)paramTypes.size() > 0) {
|
||||||
|
addDebugScopeAndLine(currentFileId, currentLine, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
assert(paramTypes.size() == paramNames.size());
|
||||||
|
for(size_t p = 0; p < paramTypes.size(); ++p)
|
||||||
|
{
|
||||||
|
auto const& paramType = paramTypes[p];
|
||||||
|
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||||
|
assert(debugId[getContainedTypeId(paramType)] != 0);
|
||||||
|
auto const& paramName = paramNames[p];
|
||||||
|
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1);
|
||||||
|
debugId[firstParamId + p] = debugLocalVariableId;
|
||||||
|
|
||||||
|
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name)
|
if (name)
|
||||||
@ -1487,9 +2076,62 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
|
|
||||||
functions.push_back(std::unique_ptr<Function>(function));
|
functions.push_back(std::unique_ptr<Function>(function));
|
||||||
|
|
||||||
|
// Clear debug scope stack
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
currentDebugScopeId.pop();
|
||||||
|
|
||||||
return function;
|
return function;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
|
||||||
|
assert(function != nullptr);
|
||||||
|
assert(nameId != 0);
|
||||||
|
assert(funcTypeId != 0);
|
||||||
|
assert(debugId[funcTypeId] != 0);
|
||||||
|
|
||||||
|
Id funcId = getUniqueId();
|
||||||
|
auto type = new Instruction(funcId, makeVoidType(), OpExtInst);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction);
|
||||||
|
type->addIdOperand(nameId);
|
||||||
|
type->addIdOperand(debugId[funcTypeId]);
|
||||||
|
type->addIdOperand(makeDebugSource(currentFileId)); // Will be fixed later when true filename available
|
||||||
|
type->addIdOperand(makeUintConstant(currentLine)); // Will be fixed later when true line available
|
||||||
|
type->addIdOperand(makeUintConstant(0)); // column
|
||||||
|
type->addIdOperand(makeDebugCompilationUnit()); // scope
|
||||||
|
type->addIdOperand(nameId); // linkage name
|
||||||
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||||
|
type->addIdOperand(makeUintConstant(currentLine)); // TODO(greg-lunarg): correct scope line
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
return funcId;
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
||||||
|
Id lexId = getUniqueId();
|
||||||
|
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
||||||
|
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
lex->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLexicalBlock);
|
||||||
|
lex->addIdOperand(makeDebugSource(currentFileId));
|
||||||
|
lex->addIdOperand(makeUintConstant(line));
|
||||||
|
lex->addIdOperand(makeUintConstant(0)); // column
|
||||||
|
lex->addIdOperand(currentDebugScopeId.top()); // scope
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(lex));
|
||||||
|
module.mapInstruction(lex);
|
||||||
|
return lexId;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Builder::unmangleFunctionName(std::string const& name) const
|
||||||
|
{
|
||||||
|
assert(name.length() > 0);
|
||||||
|
|
||||||
|
if(name.rfind('(') != std::string::npos) {
|
||||||
|
return name.substr(0, name.rfind('('));
|
||||||
|
} else {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
void Builder::makeReturn(bool implicit, Id retVal)
|
void Builder::makeReturn(bool implicit, Id retVal)
|
||||||
{
|
{
|
||||||
@ -1504,6 +2146,48 @@ void Builder::makeReturn(bool implicit, Id retVal)
|
|||||||
createAndSetNoPredecessorBlock("post-return");
|
createAndSetNoPredecessorBlock("post-return");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Comments in header
|
||||||
|
void Builder::enterScope(uint32_t line)
|
||||||
|
{
|
||||||
|
// Generate new lexical scope debug instruction
|
||||||
|
Id lexId = makeDebugLexicalBlock(line);
|
||||||
|
currentDebugScopeId.push(lexId);
|
||||||
|
lastDebugScopeId = NoResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Comments in header
|
||||||
|
void Builder::leaveScope()
|
||||||
|
{
|
||||||
|
// Pop current scope from stack and clear current scope
|
||||||
|
currentDebugScopeId.pop();
|
||||||
|
lastDebugScopeId = NoResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Comments in header
|
||||||
|
void Builder::enterFunction(Function const* function)
|
||||||
|
{
|
||||||
|
// Save and disable debugInfo for HLSL entry point function. It is a wrapper
|
||||||
|
// function with no user code in it.
|
||||||
|
restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo;
|
||||||
|
if (sourceLang == spv::SourceLanguageHLSL && function == entryPointFunction) {
|
||||||
|
emitNonSemanticShaderDebugInfo = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
// Initialize scope state
|
||||||
|
Id funcId = function->getFuncId();
|
||||||
|
currentDebugScopeId.push(debugId[funcId]);
|
||||||
|
// Create DebugFunctionDefinition
|
||||||
|
spv::Id resultId = getUniqueId();
|
||||||
|
Instruction* defInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
|
defInst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition);
|
||||||
|
defInst->addIdOperand(debugId[funcId]);
|
||||||
|
defInst->addIdOperand(funcId);
|
||||||
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(defInst));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
void Builder::leaveFunction()
|
void Builder::leaveFunction()
|
||||||
{
|
{
|
||||||
@ -1519,6 +2203,12 @@ void Builder::leaveFunction()
|
|||||||
makeReturn(true, createUndefined(function.getReturnType()));
|
makeReturn(true, createUndefined(function.getReturnType()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear function scope from debug scope stack
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
currentDebugScopeId.pop();
|
||||||
|
|
||||||
|
emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
@ -1529,7 +2219,8 @@ void Builder::makeStatementTerminator(spv::Op opcode, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer)
|
Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer,
|
||||||
|
bool const compilerGenerated)
|
||||||
{
|
{
|
||||||
Id pointerType = makePointer(storageClass, type);
|
Id pointerType = makePointer(storageClass, type);
|
||||||
Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable);
|
Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable);
|
||||||
@ -1541,11 +2232,27 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t
|
|||||||
case StorageClassFunction:
|
case StorageClassFunction:
|
||||||
// Validation rules require the declaration in the entry block
|
// Validation rules require the declaration in the entry block
|
||||||
buildPoint->getParent().addLocalVariable(std::unique_ptr<Instruction>(inst));
|
buildPoint->getParent().addLocalVariable(std::unique_ptr<Instruction>(inst));
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
|
||||||
|
{
|
||||||
|
auto const debugLocalVariableId = createDebugLocalVariable(debugId[type], name);
|
||||||
|
debugId[inst->getResultId()] = debugLocalVariableId;
|
||||||
|
|
||||||
|
// TODO: Remove?
|
||||||
|
// makeDebugDeclare(debugLocalVariableId, inst->getResultId());
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
|
||||||
module.mapInstruction(inst);
|
module.mapInstruction(inst);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo && !isRayTracingOpCode(getOpCode(type)))
|
||||||
|
{
|
||||||
|
auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId());
|
||||||
|
debugId[inst->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1605,6 +2312,15 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce
|
|||||||
}
|
}
|
||||||
|
|
||||||
buildPoint->addInstruction(std::unique_ptr<Instruction>(store));
|
buildPoint->addInstruction(std::unique_ptr<Instruction>(store));
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo && !isGlobalVariable(lValue))
|
||||||
|
{
|
||||||
|
if(debugId.find(lValue) != debugId.end())
|
||||||
|
{
|
||||||
|
auto const debugLocalVariableId = debugId[lValue];
|
||||||
|
makeDebugValue(debugLocalVariableId, rValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comments in header
|
// Comments in header
|
||||||
@ -3271,10 +3987,10 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te
|
|||||||
const int opSourceWordCount = 4;
|
const int opSourceWordCount = 4;
|
||||||
const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1;
|
const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1;
|
||||||
|
|
||||||
if (source != SourceLanguageUnknown) {
|
if (sourceLang != SourceLanguageUnknown) {
|
||||||
// OpSource Language Version File Source
|
// OpSource Language Version File Source
|
||||||
Instruction sourceInst(NoResult, NoType, OpSource);
|
Instruction sourceInst(NoResult, NoType, OpSource);
|
||||||
sourceInst.addImmediateOperand(source);
|
sourceInst.addImmediateOperand(sourceLang);
|
||||||
sourceInst.addImmediateOperand(sourceVersion);
|
sourceInst.addImmediateOperand(sourceVersion);
|
||||||
// File operand
|
// File operand
|
||||||
if (fileId != NoResult) {
|
if (fileId != NoResult) {
|
||||||
@ -3307,6 +4023,7 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te
|
|||||||
// Dump an OpSource[Continued] sequence for the source and every include file
|
// Dump an OpSource[Continued] sequence for the source and every include file
|
||||||
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
||||||
{
|
{
|
||||||
|
if (emitNonSemanticShaderDebugInfo) return;
|
||||||
dumpSourceInstructions(sourceFileStringId, sourceText, out);
|
dumpSourceInstructions(sourceFileStringId, sourceText, out);
|
||||||
for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr)
|
for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr)
|
||||||
dumpSourceInstructions(iItr->first, *iItr->second, out);
|
dumpSourceInstructions(iItr->first, *iItr->second, out);
|
||||||
|
@ -50,6 +50,10 @@
|
|||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
#include "spirv.hpp"
|
#include "spirv.hpp"
|
||||||
#include "spvIR.h"
|
#include "spvIR.h"
|
||||||
|
namespace spv {
|
||||||
|
#include "GLSL.ext.KHR.h"
|
||||||
|
#include "NonSemanticShaderDebugInfo100.h"
|
||||||
|
}
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <map>
|
#include <map>
|
||||||
@ -82,7 +86,7 @@ public:
|
|||||||
|
|
||||||
void setSource(spv::SourceLanguage lang, int version)
|
void setSource(spv::SourceLanguage lang, int version)
|
||||||
{
|
{
|
||||||
source = lang;
|
sourceLang = lang;
|
||||||
sourceVersion = version;
|
sourceVersion = version;
|
||||||
}
|
}
|
||||||
spv::Id getStringId(const std::string& str)
|
spv::Id getStringId(const std::string& str)
|
||||||
@ -106,11 +110,25 @@ public:
|
|||||||
void setSourceFile(const std::string& file)
|
void setSourceFile(const std::string& file)
|
||||||
{
|
{
|
||||||
sourceFileStringId = getStringId(file);
|
sourceFileStringId = getStringId(file);
|
||||||
|
currentFileId = sourceFileStringId;
|
||||||
}
|
}
|
||||||
void setSourceText(const std::string& text) { sourceText = text; }
|
void setSourceText(const std::string& text) { sourceText = text; }
|
||||||
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
|
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
|
||||||
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
|
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
|
||||||
void setEmitOpLines() { emitOpLines = true; }
|
void setEmitOpLines() { emitOpLines = true; }
|
||||||
|
void setEmitNonSemanticShaderDebugInfo(bool const emit)
|
||||||
|
{
|
||||||
|
emitNonSemanticShaderDebugInfo = emit;
|
||||||
|
|
||||||
|
if(emit)
|
||||||
|
{
|
||||||
|
importNonSemanticShaderDebugInfoInstructions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void setEmitNonSemanticShaderDebugSource(bool const src)
|
||||||
|
{
|
||||||
|
emitNonSemanticShaderDebugSource = src;
|
||||||
|
}
|
||||||
void addExtension(const char* ext) { extensions.insert(ext); }
|
void addExtension(const char* ext) { extensions.insert(ext); }
|
||||||
void removeExtension(const char* ext)
|
void removeExtension(const char* ext)
|
||||||
{
|
{
|
||||||
@ -163,10 +181,11 @@ public:
|
|||||||
void setLine(int line, const char* filename);
|
void setLine(int line, const char* filename);
|
||||||
// Low-level OpLine. See setLine() for a layered helper.
|
// Low-level OpLine. See setLine() for a layered helper.
|
||||||
void addLine(Id fileName, int line, int column);
|
void addLine(Id fileName, int line, int column);
|
||||||
|
void addDebugScopeAndLine(Id fileName, int line, int column);
|
||||||
|
|
||||||
// For creating new types (will return old type if the requested one was already made).
|
// For creating new types (will return old type if the requested one was already made).
|
||||||
Id makeVoidType();
|
Id makeVoidType();
|
||||||
Id makeBoolType();
|
Id makeBoolType(bool const compilerGenerated = true);
|
||||||
Id makePointer(StorageClass, Id pointee);
|
Id makePointer(StorageClass, Id pointee);
|
||||||
Id makeForwardPointer(StorageClass);
|
Id makeForwardPointer(StorageClass);
|
||||||
Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee);
|
Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee);
|
||||||
@ -174,7 +193,7 @@ public:
|
|||||||
Id makeIntType(int width) { return makeIntegerType(width, true); }
|
Id makeIntType(int width) { return makeIntegerType(width, true); }
|
||||||
Id makeUintType(int width) { return makeIntegerType(width, false); }
|
Id makeUintType(int width) { return makeIntegerType(width, false); }
|
||||||
Id makeFloatType(int width);
|
Id makeFloatType(int width);
|
||||||
Id makeStructType(const std::vector<Id>& members, const char*);
|
Id makeStructType(const std::vector<Id>& members, const char* name, bool const compilerGenerated = true);
|
||||||
Id makeStructResultType(Id type0, Id type1);
|
Id makeStructResultType(Id type0, Id type1);
|
||||||
Id makeVectorType(Id component, int size);
|
Id makeVectorType(Id component, int size);
|
||||||
Id makeMatrixType(Id component, int cols, int rows);
|
Id makeMatrixType(Id component, int cols, int rows);
|
||||||
@ -187,6 +206,36 @@ public:
|
|||||||
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
|
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
|
||||||
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
|
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
|
||||||
|
|
||||||
|
// SPIR-V NonSemantic Shader DebugInfo Instructions
|
||||||
|
struct DebugTypeLoc {
|
||||||
|
std::string name {};
|
||||||
|
int line {0};
|
||||||
|
int column {0};
|
||||||
|
};
|
||||||
|
std::unordered_map<Id, DebugTypeLoc> debugTypeLocs;
|
||||||
|
Id makeDebugInfoNone();
|
||||||
|
Id makeBoolDebugType(int const size);
|
||||||
|
Id makeIntegerDebugType(int const width, bool const hasSign);
|
||||||
|
Id makeFloatDebugType(int const width);
|
||||||
|
Id makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType);
|
||||||
|
Id makeArrayDebugType(Id const baseType, Id const componentCount);
|
||||||
|
Id makeVectorDebugType(Id const baseType, int const componentCount);
|
||||||
|
Id makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor = true);
|
||||||
|
Id makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc);
|
||||||
|
Id makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
|
||||||
|
NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false);
|
||||||
|
Id makeDebugSource(const Id fileName);
|
||||||
|
Id makeDebugCompilationUnit();
|
||||||
|
Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable);
|
||||||
|
Id createDebugLocalVariable(Id type, char const*const name, size_t const argNumber = 0);
|
||||||
|
Id makeDebugExpression();
|
||||||
|
Id makeDebugDeclare(Id const debugLocalVariable, Id const localVariable);
|
||||||
|
Id makeDebugValue(Id const debugLocalVariable, Id const value);
|
||||||
|
Id makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTypes);
|
||||||
|
Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId);
|
||||||
|
Id makeDebugLexicalBlock(uint32_t line);
|
||||||
|
std::string unmangleFunctionName(std::string const& name) const;
|
||||||
|
|
||||||
// accelerationStructureNV type
|
// accelerationStructureNV type
|
||||||
Id makeAccelerationStructureType();
|
Id makeAccelerationStructureType();
|
||||||
// rayQueryEXT type
|
// rayQueryEXT type
|
||||||
@ -261,6 +310,8 @@ public:
|
|||||||
// See if a resultId is valid for use as an initializer.
|
// See if a resultId is valid for use as an initializer.
|
||||||
bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); }
|
bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); }
|
||||||
|
|
||||||
|
bool isRayTracingOpCode(Op opcode) const;
|
||||||
|
|
||||||
int getScalarTypeWidth(Id typeId) const
|
int getScalarTypeWidth(Id typeId) const
|
||||||
{
|
{
|
||||||
Id scalarTypeId = getScalarTypeId(typeId);
|
Id scalarTypeId = getScalarTypeId(typeId);
|
||||||
@ -322,6 +373,8 @@ public:
|
|||||||
Id makeFloat16Constant(float f16, bool specConstant = false);
|
Id makeFloat16Constant(float f16, bool specConstant = false);
|
||||||
Id makeFpConstant(Id type, double d, bool specConstant = false);
|
Id makeFpConstant(Id type, double d, bool specConstant = false);
|
||||||
|
|
||||||
|
Id importNonSemanticShaderDebugInfoInstructions();
|
||||||
|
|
||||||
// Turn the array of constants into a proper spv constant of the requested type.
|
// Turn the array of constants into a proper spv constant of the requested type.
|
||||||
Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false);
|
Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false);
|
||||||
|
|
||||||
@ -344,7 +397,12 @@ public:
|
|||||||
void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings);
|
void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings);
|
||||||
|
|
||||||
// At the end of what block do the next create*() instructions go?
|
// At the end of what block do the next create*() instructions go?
|
||||||
void setBuildPoint(Block* bp) { buildPoint = bp; }
|
// Also reset current last DebugScope and current source line to unknown
|
||||||
|
void setBuildPoint(Block* bp) {
|
||||||
|
buildPoint = bp;
|
||||||
|
lastDebugScopeId = NoResult;
|
||||||
|
currentLine = 0;
|
||||||
|
}
|
||||||
Block* getBuildPoint() const { return buildPoint; }
|
Block* getBuildPoint() const { return buildPoint; }
|
||||||
|
|
||||||
// Make the entry-point function. The returned pointer is only valid
|
// Make the entry-point function. The returned pointer is only valid
|
||||||
@ -355,12 +413,22 @@ public:
|
|||||||
// Return the function, pass back the entry.
|
// Return the function, pass back the entry.
|
||||||
// The returned pointer is only valid for the lifetime of this builder.
|
// The returned pointer is only valid for the lifetime of this builder.
|
||||||
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
|
||||||
const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
|
const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
|
||||||
|
const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
|
||||||
|
|
||||||
// Create a return. An 'implicit' return is one not appearing in the source
|
// Create a return. An 'implicit' return is one not appearing in the source
|
||||||
// code. In the case of an implicit return, no post-return block is inserted.
|
// code. In the case of an implicit return, no post-return block is inserted.
|
||||||
void makeReturn(bool implicit, Id retVal = 0);
|
void makeReturn(bool implicit, Id retVal = 0);
|
||||||
|
|
||||||
|
// Initialize state and generate instructions for new lexical scope
|
||||||
|
void enterScope(uint32_t line);
|
||||||
|
|
||||||
|
// Set state and generate instructions to exit current lexical scope
|
||||||
|
void leaveScope();
|
||||||
|
|
||||||
|
// Prepare builder for generation of instructions for a function.
|
||||||
|
void enterFunction(Function const* function);
|
||||||
|
|
||||||
// Generate all the code needed to finish up a function.
|
// Generate all the code needed to finish up a function.
|
||||||
void leaveFunction();
|
void leaveFunction();
|
||||||
|
|
||||||
@ -369,8 +437,8 @@ public:
|
|||||||
void makeStatementTerminator(spv::Op opcode, const char *name);
|
void makeStatementTerminator(spv::Op opcode, const char *name);
|
||||||
|
|
||||||
// Create a global or function local or IO variable.
|
// Create a global or function local or IO variable.
|
||||||
Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr,
|
Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr,
|
||||||
Id initializer = NoResult);
|
Id initializer = NoResult, bool const compilerGenerated = true);
|
||||||
|
|
||||||
// Create an intermediate with an undefined value.
|
// Create an intermediate with an undefined value.
|
||||||
Id createUndefined(Id type);
|
Id createUndefined(Id type);
|
||||||
@ -805,13 +873,23 @@ public:
|
|||||||
const;
|
const;
|
||||||
|
|
||||||
unsigned int spvVersion; // the version of SPIR-V to emit in the header
|
unsigned int spvVersion; // the version of SPIR-V to emit in the header
|
||||||
SourceLanguage source;
|
SourceLanguage sourceLang;
|
||||||
int sourceVersion;
|
int sourceVersion;
|
||||||
spv::Id sourceFileStringId;
|
spv::Id sourceFileStringId;
|
||||||
|
spv::Id nonSemanticShaderCompilationUnitId {0};
|
||||||
|
spv::Id nonSemanticShaderDebugInfo {0};
|
||||||
|
spv::Id debugInfoNone {0};
|
||||||
|
spv::Id debugExpression {0}; // Debug expression with zero operations.
|
||||||
std::string sourceText;
|
std::string sourceText;
|
||||||
int currentLine;
|
int currentLine;
|
||||||
const char* currentFile;
|
const char* currentFile;
|
||||||
|
spv::Id currentFileId;
|
||||||
|
std::stack<spv::Id> currentDebugScopeId;
|
||||||
|
spv::Id lastDebugScopeId;
|
||||||
bool emitOpLines;
|
bool emitOpLines;
|
||||||
|
bool emitNonSemanticShaderDebugInfo;
|
||||||
|
bool restoreNonSemanticShaderDebugInfo;
|
||||||
|
bool emitNonSemanticShaderDebugSource;
|
||||||
std::set<std::string> extensions;
|
std::set<std::string> extensions;
|
||||||
std::vector<const char*> sourceExtensions;
|
std::vector<const char*> sourceExtensions;
|
||||||
std::vector<const char*> moduleProcesses;
|
std::vector<const char*> moduleProcesses;
|
||||||
@ -845,6 +923,8 @@ public:
|
|||||||
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants;
|
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants;
|
||||||
// map type opcodes to type instructions
|
// map type opcodes to type instructions
|
||||||
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes;
|
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes;
|
||||||
|
// map type opcodes to debug type instructions
|
||||||
|
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedDebugTypes;
|
||||||
// list of OpConstantNull instructions
|
// list of OpConstantNull instructions
|
||||||
std::vector<Instruction*> nullConstants;
|
std::vector<Instruction*> nullConstants;
|
||||||
|
|
||||||
@ -860,6 +940,12 @@ public:
|
|||||||
// map from include file name ids to their contents
|
// map from include file name ids to their contents
|
||||||
std::map<spv::Id, const std::string*> includeFiles;
|
std::map<spv::Id, const std::string*> includeFiles;
|
||||||
|
|
||||||
|
// map from core id to debug id
|
||||||
|
std::map <spv::Id, spv::Id> debugId;
|
||||||
|
|
||||||
|
// map from file name string id to DebugSource id
|
||||||
|
std::unordered_map<spv::Id, spv::Id> debugSourceId;
|
||||||
|
|
||||||
// The stream for outputting warnings and errors.
|
// The stream for outputting warnings and errors.
|
||||||
SpvBuildLogger* logger;
|
SpvBuildLogger* logger;
|
||||||
}; // end Builder class
|
}; // end Builder class
|
||||||
|
@ -53,14 +53,14 @@
|
|||||||
namespace glslang {
|
namespace glslang {
|
||||||
|
|
||||||
struct SpvOptions {
|
struct SpvOptions {
|
||||||
SpvOptions() : generateDebugInfo(false), stripDebugInfo(false), disableOptimizer(true),
|
bool generateDebugInfo {false};
|
||||||
optimizeSize(false), disassemble(false), validate(false) { }
|
bool stripDebugInfo {false};
|
||||||
bool generateDebugInfo;
|
bool disableOptimizer {true};
|
||||||
bool stripDebugInfo;
|
bool optimizeSize {false};
|
||||||
bool disableOptimizer;
|
bool disassemble {false};
|
||||||
bool optimizeSize;
|
bool validate {false};
|
||||||
bool disassemble;
|
bool emitNonSemanticShaderDebugInfo {false};
|
||||||
bool validate;
|
bool emitNonSemanticShaderDebugSource{ false };
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ENABLE_OPT
|
#if ENABLE_OPT
|
||||||
|
@ -349,6 +349,7 @@ public:
|
|||||||
const std::vector<Block*>& getBlocks() const { return blocks; }
|
const std::vector<Block*>& getBlocks() const { return blocks; }
|
||||||
void addLocalVariable(std::unique_ptr<Instruction> inst);
|
void addLocalVariable(std::unique_ptr<Instruction> inst);
|
||||||
Id getReturnType() const { return functionInstruction.getTypeId(); }
|
Id getReturnType() const { return functionInstruction.getTypeId(); }
|
||||||
|
Id getFuncId() const { return functionInstruction.getResultId(); }
|
||||||
void setReturnPrecision(Decoration precision)
|
void setReturnPrecision(Decoration precision)
|
||||||
{
|
{
|
||||||
if (precision == DecorationRelaxedPrecision)
|
if (precision == DecorationRelaxedPrecision)
|
||||||
|
@ -113,6 +113,8 @@ bool SpvToolsDisassembler = false;
|
|||||||
bool SpvToolsValidate = false;
|
bool SpvToolsValidate = false;
|
||||||
bool NaNClamp = false;
|
bool NaNClamp = false;
|
||||||
bool stripDebugInfo = false;
|
bool stripDebugInfo = false;
|
||||||
|
bool emitNonSemanticShaderDebugInfo = false;
|
||||||
|
bool emitNonSemanticShaderDebugSource = false;
|
||||||
bool beQuiet = false;
|
bool beQuiet = false;
|
||||||
bool VulkanRulesRelaxed = false;
|
bool VulkanRulesRelaxed = false;
|
||||||
bool autoSampledTextures = false;
|
bool autoSampledTextures = false;
|
||||||
@ -969,11 +971,21 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
|
|||||||
case 'g':
|
case 'g':
|
||||||
// Override previous -g or -g0 argument
|
// Override previous -g or -g0 argument
|
||||||
stripDebugInfo = false;
|
stripDebugInfo = false;
|
||||||
|
emitNonSemanticShaderDebugInfo = false;
|
||||||
Options &= ~EOptionDebug;
|
Options &= ~EOptionDebug;
|
||||||
if (argv[0][2] == '0')
|
if (argv[0][2] == '0')
|
||||||
stripDebugInfo = true;
|
stripDebugInfo = true;
|
||||||
else
|
else {
|
||||||
Options |= EOptionDebug;
|
Options |= EOptionDebug;
|
||||||
|
if (argv[0][2] == 'V') {
|
||||||
|
emitNonSemanticShaderDebugInfo = true;
|
||||||
|
if (argv[0][3] == 'S') {
|
||||||
|
emitNonSemanticShaderDebugSource = true;
|
||||||
|
} else {
|
||||||
|
emitNonSemanticShaderDebugSource = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
@ -1379,6 +1391,9 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
if (EnhancedMsgs)
|
if (EnhancedMsgs)
|
||||||
shader->setEnhancedMsgs();
|
shader->setEnhancedMsgs();
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo)
|
||||||
|
shader->setDebugInfo(true);
|
||||||
|
|
||||||
// Set up the environment, some subsettings take precedence over earlier
|
// Set up the environment, some subsettings take precedence over earlier
|
||||||
// ways of setting things.
|
// ways of setting things.
|
||||||
if (Options & EOptionSpv) {
|
if (Options & EOptionSpv) {
|
||||||
@ -1470,9 +1485,15 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
|
|||||||
std::vector<unsigned int> spirv;
|
std::vector<unsigned int> spirv;
|
||||||
spv::SpvBuildLogger logger;
|
spv::SpvBuildLogger logger;
|
||||||
glslang::SpvOptions spvOptions;
|
glslang::SpvOptions spvOptions;
|
||||||
if (Options & EOptionDebug)
|
if (Options & EOptionDebug) {
|
||||||
spvOptions.generateDebugInfo = true;
|
spvOptions.generateDebugInfo = true;
|
||||||
else if (stripDebugInfo)
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
spvOptions.emitNonSemanticShaderDebugInfo = true;
|
||||||
|
if (emitNonSemanticShaderDebugSource) {
|
||||||
|
spvOptions.emitNonSemanticShaderDebugSource = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (stripDebugInfo)
|
||||||
spvOptions.stripDebugInfo = true;
|
spvOptions.stripDebugInfo = true;
|
||||||
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
|
||||||
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
|
||||||
@ -1906,6 +1927,8 @@ void usage()
|
|||||||
" SPV_GOOGLE_hlsl_functionality1 extension\n"
|
" SPV_GOOGLE_hlsl_functionality1 extension\n"
|
||||||
" -g generate debug information\n"
|
" -g generate debug information\n"
|
||||||
" -g0 strip debug information\n"
|
" -g0 strip debug information\n"
|
||||||
|
" -gV generate nonsemantic shader debug information\n"
|
||||||
|
" -gVS generate nonsemantic shader debug information with source\n"
|
||||||
" -h print this usage message\n"
|
" -h print this usage message\n"
|
||||||
" -i intermediate tree (glslang AST) is printed out\n"
|
" -i intermediate tree (glslang AST) is printed out\n"
|
||||||
" -l link all input files together to form a single module\n"
|
" -l link all input files together to form a single module\n"
|
||||||
|
@ -196,9 +196,11 @@ void main()
|
|||||||
Store 97(i) 18
|
Store 97(i) 18
|
||||||
Branch 98
|
Branch 98
|
||||||
98: Label
|
98: Label
|
||||||
|
Line 1 46 0
|
||||||
LoopMerge 100 101 None
|
LoopMerge 100 101 None
|
||||||
Branch 102
|
Branch 102
|
||||||
102: Label
|
102: Label
|
||||||
|
Line 1 46 0
|
||||||
103: 7(int) Load 97(i)
|
103: 7(int) Load 97(i)
|
||||||
105: 37(bool) SLessThan 103 104
|
105: 37(bool) SLessThan 103 104
|
||||||
BranchConditional 105 99 100
|
BranchConditional 105 99 100
|
||||||
|
@ -197,9 +197,11 @@ void main()
|
|||||||
Store 97(i) 18
|
Store 97(i) 18
|
||||||
Branch 98
|
Branch 98
|
||||||
98: Label
|
98: Label
|
||||||
|
Line 1 46 0
|
||||||
LoopMerge 100 101 None
|
LoopMerge 100 101 None
|
||||||
Branch 102
|
Branch 102
|
||||||
102: Label
|
102: Label
|
||||||
|
Line 1 46 0
|
||||||
103: 7(int) Load 97(i)
|
103: 7(int) Load 97(i)
|
||||||
105: 37(bool) SLessThan 103 104
|
105: 37(bool) SLessThan 103 104
|
||||||
BranchConditional 105 99 100
|
BranchConditional 105 99 100
|
||||||
|
1085
Test/baseResults/spv.debuginfo.glsl.comp.out
Normal file
1085
Test/baseResults/spv.debuginfo.glsl.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
949
Test/baseResults/spv.debuginfo.glsl.frag.out
Normal file
949
Test/baseResults/spv.debuginfo.glsl.frag.out
Normal file
@ -0,0 +1,949 @@
|
|||||||
|
spv.debuginfo.glsl.frag
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 716
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability ImageQuery
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Fragment 13 "main" 406 452
|
||||||
|
ExecutionMode 13 OriginUpperLeft
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
24: String "float"
|
||||||
|
39: String "textureProj"
|
||||||
|
45: String "P"
|
||||||
|
49: String "layer"
|
||||||
|
52: String "offset"
|
||||||
|
59: String "filterPCF"
|
||||||
|
65: String "sc"
|
||||||
|
77: String "shadow"
|
||||||
|
83: String "fragcolor"
|
||||||
|
86: String "fragpos"
|
||||||
|
96: String "shadowCoord"
|
||||||
|
118: String "bool"
|
||||||
|
132: String "dist"
|
||||||
|
136: String "type.2d.image"
|
||||||
|
137: String "@type.2d.image"
|
||||||
|
141: String "type.sampled.image"
|
||||||
|
142: String "@type.sampled.image"
|
||||||
|
146: String "samplerShadowMap"
|
||||||
|
182: String "int"
|
||||||
|
189: String "texDim"
|
||||||
|
201: String "scale"
|
||||||
|
207: String "dx"
|
||||||
|
219: String "dy"
|
||||||
|
230: String "shadowFactor"
|
||||||
|
235: String "count"
|
||||||
|
240: String "range"
|
||||||
|
246: String "x"
|
||||||
|
262: String "y"
|
||||||
|
312: String "i"
|
||||||
|
326: String "shadowClip"
|
||||||
|
333: String "color"
|
||||||
|
339: String "viewMatrix"
|
||||||
|
342: String "Light"
|
||||||
|
348: String "lights"
|
||||||
|
351: String "debugDisplayTarget"
|
||||||
|
355: String "UBO"
|
||||||
|
359: String "ubo"
|
||||||
|
394: String "fragPos"
|
||||||
|
403: String "samplerposition"
|
||||||
|
408: String "inUV"
|
||||||
|
415: String "normal"
|
||||||
|
419: String "samplerNormal"
|
||||||
|
427: String "albedo"
|
||||||
|
431: String "samplerAlbedo"
|
||||||
|
454: String "outFragColor"
|
||||||
|
516: String "N"
|
||||||
|
535: String "L"
|
||||||
|
556: String "V"
|
||||||
|
569: String "lightCosInnerAngle"
|
||||||
|
575: String "lightCosOuterAngle"
|
||||||
|
581: String "lightRange"
|
||||||
|
587: String "dir"
|
||||||
|
602: String "cosDir"
|
||||||
|
610: String "spotEffect"
|
||||||
|
619: String "heightAttenuation"
|
||||||
|
627: String "NdotL"
|
||||||
|
636: String "diff"
|
||||||
|
643: String "R"
|
||||||
|
652: String "NdotR"
|
||||||
|
661: String "spec"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 38 "textureProj(vf4;f1;vf2;"
|
||||||
|
Name 35 "P"
|
||||||
|
Name 36 "layer"
|
||||||
|
Name 37 "offset"
|
||||||
|
Name 58 "filterPCF(vf4;f1;"
|
||||||
|
Name 56 "sc"
|
||||||
|
Name 57 "layer"
|
||||||
|
Name 76 "shadow(vf3;vf3;"
|
||||||
|
Name 74 "fragcolor"
|
||||||
|
Name 75 "fragpos"
|
||||||
|
Name 89 "shadow"
|
||||||
|
Name 94 "shadowCoord"
|
||||||
|
Name 130 "dist"
|
||||||
|
Name 144 "samplerShadowMap"
|
||||||
|
Name 187 "texDim"
|
||||||
|
Name 199 "scale"
|
||||||
|
Name 205 "dx"
|
||||||
|
Name 217 "dy"
|
||||||
|
Name 228 "shadowFactor"
|
||||||
|
Name 233 "count"
|
||||||
|
Name 238 "range"
|
||||||
|
Name 244 "x"
|
||||||
|
Name 260 "y"
|
||||||
|
Name 285 "param"
|
||||||
|
Name 287 "param"
|
||||||
|
Name 289 "param"
|
||||||
|
Name 310 "i"
|
||||||
|
Name 324 "shadowClip"
|
||||||
|
Name 331 "Light"
|
||||||
|
MemberName 331(Light) 0 "position"
|
||||||
|
MemberName 331(Light) 1 "target"
|
||||||
|
MemberName 331(Light) 2 "color"
|
||||||
|
MemberName 331(Light) 3 "viewMatrix"
|
||||||
|
Name 345 "UBO"
|
||||||
|
MemberName 345(UBO) 0 "viewPos"
|
||||||
|
MemberName 345(UBO) 1 "lights"
|
||||||
|
MemberName 345(UBO) 2 "useShadows"
|
||||||
|
MemberName 345(UBO) 3 "debugDisplayTarget"
|
||||||
|
Name 357 "ubo"
|
||||||
|
Name 371 "shadowFactor"
|
||||||
|
Name 376 "param"
|
||||||
|
Name 378 "param"
|
||||||
|
Name 392 "fragPos"
|
||||||
|
Name 401 "samplerposition"
|
||||||
|
Name 406 "inUV"
|
||||||
|
Name 413 "normal"
|
||||||
|
Name 417 "samplerNormal"
|
||||||
|
Name 425 "albedo"
|
||||||
|
Name 429 "samplerAlbedo"
|
||||||
|
Name 452 "outFragColor"
|
||||||
|
Name 457 "param"
|
||||||
|
Name 458 "param"
|
||||||
|
Name 506 "fragcolor"
|
||||||
|
Name 514 "N"
|
||||||
|
Name 521 "i"
|
||||||
|
Name 533 "L"
|
||||||
|
Name 545 "dist"
|
||||||
|
Name 554 "V"
|
||||||
|
Name 567 "lightCosInnerAngle"
|
||||||
|
Name 573 "lightCosOuterAngle"
|
||||||
|
Name 579 "lightRange"
|
||||||
|
Name 585 "dir"
|
||||||
|
Name 600 "cosDir"
|
||||||
|
Name 608 "spotEffect"
|
||||||
|
Name 617 "heightAttenuation"
|
||||||
|
Name 625 "NdotL"
|
||||||
|
Name 634 "diff"
|
||||||
|
Name 641 "R"
|
||||||
|
Name 650 "NdotR"
|
||||||
|
Name 659 "spec"
|
||||||
|
Name 705 "param"
|
||||||
|
Name 707 "param"
|
||||||
|
Decorate 144(samplerShadowMap) DescriptorSet 0
|
||||||
|
Decorate 144(samplerShadowMap) Binding 5
|
||||||
|
MemberDecorate 331(Light) 0 Offset 0
|
||||||
|
MemberDecorate 331(Light) 1 Offset 16
|
||||||
|
MemberDecorate 331(Light) 2 Offset 32
|
||||||
|
MemberDecorate 331(Light) 3 ColMajor
|
||||||
|
MemberDecorate 331(Light) 3 Offset 48
|
||||||
|
MemberDecorate 331(Light) 3 MatrixStride 16
|
||||||
|
Decorate 343 ArrayStride 112
|
||||||
|
MemberDecorate 345(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 345(UBO) 1 Offset 16
|
||||||
|
MemberDecorate 345(UBO) 2 Offset 352
|
||||||
|
MemberDecorate 345(UBO) 3 Offset 356
|
||||||
|
Decorate 345(UBO) Block
|
||||||
|
Decorate 357(ubo) DescriptorSet 0
|
||||||
|
Decorate 357(ubo) Binding 4
|
||||||
|
Decorate 401(samplerposition) DescriptorSet 0
|
||||||
|
Decorate 401(samplerposition) Binding 1
|
||||||
|
Decorate 406(inUV) Location 0
|
||||||
|
Decorate 417(samplerNormal) DescriptorSet 0
|
||||||
|
Decorate 417(samplerNormal) Binding 2
|
||||||
|
Decorate 429(samplerAlbedo) DescriptorSet 0
|
||||||
|
Decorate 429(samplerAlbedo) Binding 3
|
||||||
|
Decorate 452(outFragColor) Location 0
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
23: TypeFloat 32
|
||||||
|
25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
|
||||||
|
26: TypeVector 23(float) 4
|
||||||
|
27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
|
||||||
|
28: TypePointer Function 26(fvec4)
|
||||||
|
29: TypePointer Function 23(float)
|
||||||
|
30: TypeVector 23(float) 2
|
||||||
|
31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21
|
||||||
|
32: TypePointer Function 30(fvec2)
|
||||||
|
33: TypeFunction 23(float) 28(ptr) 29(ptr) 32(ptr)
|
||||||
|
34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 31
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 34 16 11 11 18 39 12 11
|
||||||
|
44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 27 16 11 11 40 20 19
|
||||||
|
47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 40 20 21
|
||||||
|
51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 31 16 11 11 40 20 12
|
||||||
|
54: TypeFunction 23(float) 28(ptr) 29(ptr)
|
||||||
|
55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25
|
||||||
|
60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 59 55 16 11 11 18 59 12 11
|
||||||
|
64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 65 27 16 11 11 60 20 19
|
||||||
|
67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 60 20 21
|
||||||
|
69: TypeVector 23(float) 3
|
||||||
|
70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
|
||||||
|
71: TypePointer Function 69(fvec3)
|
||||||
|
72: TypeFunction 69(fvec3) 71(ptr) 71(ptr)
|
||||||
|
73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 70 70 70
|
||||||
|
78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 77 73 16 11 11 18 77 12 11
|
||||||
|
82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 11 11 78 20 19
|
||||||
|
85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 86 70 16 11 11 78 20 21
|
||||||
|
91: 6(int) Constant 59
|
||||||
|
90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 25 16 91 11 40 20
|
||||||
|
92: 23(float) Constant 1065353216
|
||||||
|
97: 6(int) Constant 60
|
||||||
|
95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 27 16 97 11 40 20
|
||||||
|
106: 23(float) Constant 1056964608
|
||||||
|
114: TypeBool
|
||||||
|
117: 23(float) Constant 3212836864
|
||||||
|
119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
133: 6(int) Constant 65
|
||||||
|
131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 133 11 40 20
|
||||||
|
134: TypeImage 23(float) 2D array sampled format:Unknown
|
||||||
|
138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
|
||||||
|
135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 133 11 18 137 138 12
|
||||||
|
139: TypeSampledImage 134
|
||||||
|
140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 133 11 18 142 138 12
|
||||||
|
143: TypePointer UniformConstant 139
|
||||||
|
144(samplerShadowMap): 143(ptr) Variable UniformConstant
|
||||||
|
147: 6(int) Constant 8
|
||||||
|
145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 146 140 16 133 11 18 146 144(samplerShadowMap) 147
|
||||||
|
162: 23(float) Constant 0
|
||||||
|
163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
175: 23(float) Constant 1048576000
|
||||||
|
181: TypeInt 32 1
|
||||||
|
183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 182 9 20 11
|
||||||
|
184: TypeVector 181(int) 2
|
||||||
|
185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 21
|
||||||
|
186: TypePointer Function 184(ivec2)
|
||||||
|
190: 6(int) Constant 76
|
||||||
|
188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 189 185 16 190 11 60 20
|
||||||
|
192: 181(int) Constant 0
|
||||||
|
194: TypeVector 181(int) 3
|
||||||
|
195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 12
|
||||||
|
202: 6(int) Constant 77
|
||||||
|
200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 25 16 202 11 60 20
|
||||||
|
203: 23(float) Constant 1069547520
|
||||||
|
208: 6(int) Constant 78
|
||||||
|
206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 207 25 16 208 11 60 20
|
||||||
|
211: TypePointer Function 181(int)
|
||||||
|
220: 6(int) Constant 79
|
||||||
|
218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 219 25 16 220 11 60 20
|
||||||
|
231: 6(int) Constant 81
|
||||||
|
229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 231 11 60 20
|
||||||
|
236: 6(int) Constant 82
|
||||||
|
234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 235 183 16 236 11 60 20
|
||||||
|
241: 6(int) Constant 83
|
||||||
|
239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 183 16 241 11 60 20
|
||||||
|
242: 181(int) Constant 1
|
||||||
|
247: 6(int) Constant 85
|
||||||
|
245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 183 16 247 11 60 20
|
||||||
|
258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
263: 6(int) Constant 87
|
||||||
|
261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 262 183 16 263 11 60 20
|
||||||
|
274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
313: 6(int) Constant 98
|
||||||
|
311: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 313 11 78 20
|
||||||
|
321: 181(int) Constant 3
|
||||||
|
322: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
327: 6(int) Constant 100
|
||||||
|
325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 326 27 16 327 11 78 20
|
||||||
|
328: TypeMatrix 26(fvec4) 4
|
||||||
|
330: 114(bool) ConstantTrue
|
||||||
|
329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 330
|
||||||
|
331(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 328
|
||||||
|
334: 6(int) Constant 45
|
||||||
|
335: 6(int) Constant 7
|
||||||
|
332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12
|
||||||
|
336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12
|
||||||
|
337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12
|
||||||
|
340: 6(int) Constant 46
|
||||||
|
338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 339 329 16 340 335 11 11 12
|
||||||
|
341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 342 19 16 327 11 18 342 11 12 332 336 337 338
|
||||||
|
343: TypeArray 331(Light) 12
|
||||||
|
344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 341 12
|
||||||
|
345(UBO): TypeStruct 26(fvec4) 343 181(int) 181(int)
|
||||||
|
346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12
|
||||||
|
349: 6(int) Constant 52
|
||||||
|
347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 348 344 16 349 147 11 11 12
|
||||||
|
352: 6(int) Constant 54
|
||||||
|
350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12
|
||||||
|
353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12
|
||||||
|
354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 355 19 16 327 11 18 355 11 12 346 347 350 353
|
||||||
|
356: TypePointer Uniform 345(UBO)
|
||||||
|
357(ubo): 356(ptr) Variable Uniform
|
||||||
|
358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 359 354 16 327 11 18 359 357(ubo) 147
|
||||||
|
361: TypePointer Uniform 328
|
||||||
|
373: 6(int) Constant 104
|
||||||
|
372: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 373 11 78 20
|
||||||
|
395: 6(int) Constant 117
|
||||||
|
393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 394 70 16 395 11 15 20
|
||||||
|
396: TypeImage 23(float) 2D sampled format:Unknown
|
||||||
|
397: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 395 11 18 137 138 12
|
||||||
|
398: TypeSampledImage 396
|
||||||
|
399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 395 11 18 142 138 12
|
||||||
|
400: TypePointer UniformConstant 398
|
||||||
|
401(samplerposition): 400(ptr) Variable UniformConstant
|
||||||
|
402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 403 399 16 395 11 18 403 401(samplerposition) 147
|
||||||
|
405: TypePointer Input 30(fvec2)
|
||||||
|
406(inUV): 405(ptr) Variable Input
|
||||||
|
407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 408 31 16 395 11 18 408 406(inUV) 147
|
||||||
|
416: 6(int) Constant 118
|
||||||
|
414: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 415 70 16 416 11 15 20
|
||||||
|
417(samplerNormal): 400(ptr) Variable UniformConstant
|
||||||
|
418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 419 399 16 416 11 18 419 417(samplerNormal) 147
|
||||||
|
428: 6(int) Constant 119
|
||||||
|
426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 427 27 16 428 11 15 20
|
||||||
|
429(samplerAlbedo): 400(ptr) Variable UniformConstant
|
||||||
|
430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 431 399 16 428 11 18 431 429(samplerAlbedo) 147
|
||||||
|
436: TypePointer Uniform 181(int)
|
||||||
|
439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
451: TypePointer Output 26(fvec4)
|
||||||
|
452(outFragColor): 451(ptr) Variable Output
|
||||||
|
455: 6(int) Constant 125
|
||||||
|
453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 454 27 16 455 11 18 454 452(outFragColor) 147
|
||||||
|
456: 69(fvec3) ConstantComposite 92 92 92
|
||||||
|
461: TypePointer Output 23(float)
|
||||||
|
508: 6(int) Constant 145
|
||||||
|
507: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 508 11 15 20
|
||||||
|
511: 23(float) Constant 1036831949
|
||||||
|
517: 6(int) Constant 147
|
||||||
|
515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 516 70 16 517 11 15 20
|
||||||
|
523: 6(int) Constant 149
|
||||||
|
522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 523 11 15 20
|
||||||
|
531: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
536: 6(int) Constant 152
|
||||||
|
534: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 535 70 16 536 11 15 20
|
||||||
|
538: TypePointer Uniform 26(fvec4)
|
||||||
|
547: 6(int) Constant 154
|
||||||
|
546: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 547 11 15 20
|
||||||
|
557: 6(int) Constant 158
|
||||||
|
555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 556 70 16 557 11 15 20
|
||||||
|
570: 6(int) Constant 161
|
||||||
|
568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 569 25 16 570 11 15 20
|
||||||
|
571: 23(float) Constant 1064781546
|
||||||
|
576: 6(int) Constant 162
|
||||||
|
574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 575 25 16 576 11 15 20
|
||||||
|
577: 23(float) Constant 1063781322
|
||||||
|
582: 6(int) Constant 163
|
||||||
|
580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 581 25 16 582 11 15 20
|
||||||
|
583: 23(float) Constant 1120403456
|
||||||
|
588: 6(int) Constant 166
|
||||||
|
586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 587 70 16 588 11 15 20
|
||||||
|
603: 6(int) Constant 169
|
||||||
|
601: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 602 25 16 603 11 15 20
|
||||||
|
611: 6(int) Constant 170
|
||||||
|
609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 25 16 611 11 15 20
|
||||||
|
620: 6(int) Constant 171
|
||||||
|
618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 619 25 16 620 11 15 20
|
||||||
|
628: 6(int) Constant 174
|
||||||
|
626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 25 16 628 11 15 20
|
||||||
|
637: 6(int) Constant 175
|
||||||
|
635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 636 70 16 637 11 15 20
|
||||||
|
644: 6(int) Constant 178
|
||||||
|
642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 70 16 644 11 15 20
|
||||||
|
653: 6(int) Constant 179
|
||||||
|
651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 25 16 653 11 15 20
|
||||||
|
662: 6(int) Constant 180
|
||||||
|
660: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 661 70 16 662 11 15 20
|
||||||
|
664: 23(float) Constant 1098907648
|
||||||
|
669: 23(float) Constant 1075838976
|
||||||
|
685: 181(int) Constant 2
|
||||||
|
701: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
392(fragPos): 71(ptr) Variable Function
|
||||||
|
413(normal): 71(ptr) Variable Function
|
||||||
|
425(albedo): 28(ptr) Variable Function
|
||||||
|
457(param): 71(ptr) Variable Function
|
||||||
|
458(param): 71(ptr) Variable Function
|
||||||
|
506(fragcolor): 71(ptr) Variable Function
|
||||||
|
514(N): 71(ptr) Variable Function
|
||||||
|
521(i): 211(ptr) Variable Function
|
||||||
|
533(L): 71(ptr) Variable Function
|
||||||
|
545(dist): 29(ptr) Variable Function
|
||||||
|
554(V): 71(ptr) Variable Function
|
||||||
|
567(lightCosInnerAngle): 29(ptr) Variable Function
|
||||||
|
573(lightCosOuterAngle): 29(ptr) Variable Function
|
||||||
|
579(lightRange): 29(ptr) Variable Function
|
||||||
|
585(dir): 71(ptr) Variable Function
|
||||||
|
600(cosDir): 29(ptr) Variable Function
|
||||||
|
608(spotEffect): 29(ptr) Variable Function
|
||||||
|
617(heightAttenuation): 29(ptr) Variable Function
|
||||||
|
625(NdotL): 29(ptr) Variable Function
|
||||||
|
634(diff): 71(ptr) Variable Function
|
||||||
|
641(R): 71(ptr) Variable Function
|
||||||
|
650(NdotR): 29(ptr) Variable Function
|
||||||
|
659(spec): 71(ptr) Variable Function
|
||||||
|
705(param): 71(ptr) Variable Function
|
||||||
|
707(param): 71(ptr) Variable Function
|
||||||
|
391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
404: 398 Load 401(samplerposition)
|
||||||
|
409: 30(fvec2) Load 406(inUV)
|
||||||
|
410: 26(fvec4) ImageSampleImplicitLod 404 409
|
||||||
|
411: 69(fvec3) VectorShuffle 410 410 0 1 2
|
||||||
|
Store 392(fragPos) 411
|
||||||
|
412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 393 411 47
|
||||||
|
420: 398 Load 417(samplerNormal)
|
||||||
|
421: 30(fvec2) Load 406(inUV)
|
||||||
|
422: 26(fvec4) ImageSampleImplicitLod 420 421
|
||||||
|
423: 69(fvec3) VectorShuffle 422 422 0 1 2
|
||||||
|
Store 413(normal) 423
|
||||||
|
424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 414 423 47
|
||||||
|
432: 398 Load 429(samplerAlbedo)
|
||||||
|
433: 30(fvec2) Load 406(inUV)
|
||||||
|
434: 26(fvec4) ImageSampleImplicitLod 432 433
|
||||||
|
Store 425(albedo) 434
|
||||||
|
435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 426 434 47
|
||||||
|
437: 436(ptr) AccessChain 357(ubo) 321
|
||||||
|
438: 181(int) Load 437
|
||||||
|
440: 114(bool) SGreaterThan 438 192
|
||||||
|
SelectionMerge 442 None
|
||||||
|
BranchConditional 440 441 442
|
||||||
|
441: Label
|
||||||
|
443: 436(ptr) AccessChain 357(ubo) 321
|
||||||
|
444: 181(int) Load 443
|
||||||
|
SelectionMerge 450 None
|
||||||
|
Switch 444 450
|
||||||
|
case 1: 445
|
||||||
|
case 2: 446
|
||||||
|
case 3: 447
|
||||||
|
case 4: 448
|
||||||
|
case 5: 449
|
||||||
|
445: Label
|
||||||
|
Store 457(param) 456
|
||||||
|
459: 69(fvec3) Load 392(fragPos)
|
||||||
|
Store 458(param) 459
|
||||||
|
460: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 457(param) 458(param)
|
||||||
|
462: 461(ptr) AccessChain 452(outFragColor) 11
|
||||||
|
463: 23(float) CompositeExtract 460 0
|
||||||
|
Store 462 463
|
||||||
|
464: 461(ptr) AccessChain 452(outFragColor) 19
|
||||||
|
465: 23(float) CompositeExtract 460 1
|
||||||
|
Store 464 465
|
||||||
|
466: 461(ptr) AccessChain 452(outFragColor) 21
|
||||||
|
467: 23(float) CompositeExtract 460 2
|
||||||
|
Store 466 467
|
||||||
|
Branch 450
|
||||||
|
446: Label
|
||||||
|
469: 69(fvec3) Load 392(fragPos)
|
||||||
|
470: 461(ptr) AccessChain 452(outFragColor) 11
|
||||||
|
471: 23(float) CompositeExtract 469 0
|
||||||
|
Store 470 471
|
||||||
|
472: 461(ptr) AccessChain 452(outFragColor) 19
|
||||||
|
473: 23(float) CompositeExtract 469 1
|
||||||
|
Store 472 473
|
||||||
|
474: 461(ptr) AccessChain 452(outFragColor) 21
|
||||||
|
475: 23(float) CompositeExtract 469 2
|
||||||
|
Store 474 475
|
||||||
|
Branch 450
|
||||||
|
447: Label
|
||||||
|
477: 69(fvec3) Load 413(normal)
|
||||||
|
478: 461(ptr) AccessChain 452(outFragColor) 11
|
||||||
|
479: 23(float) CompositeExtract 477 0
|
||||||
|
Store 478 479
|
||||||
|
480: 461(ptr) AccessChain 452(outFragColor) 19
|
||||||
|
481: 23(float) CompositeExtract 477 1
|
||||||
|
Store 480 481
|
||||||
|
482: 461(ptr) AccessChain 452(outFragColor) 21
|
||||||
|
483: 23(float) CompositeExtract 477 2
|
||||||
|
Store 482 483
|
||||||
|
Branch 450
|
||||||
|
448: Label
|
||||||
|
485: 26(fvec4) Load 425(albedo)
|
||||||
|
486: 69(fvec3) VectorShuffle 485 485 0 1 2
|
||||||
|
487: 461(ptr) AccessChain 452(outFragColor) 11
|
||||||
|
488: 23(float) CompositeExtract 486 0
|
||||||
|
Store 487 488
|
||||||
|
489: 461(ptr) AccessChain 452(outFragColor) 19
|
||||||
|
490: 23(float) CompositeExtract 486 1
|
||||||
|
Store 489 490
|
||||||
|
491: 461(ptr) AccessChain 452(outFragColor) 21
|
||||||
|
492: 23(float) CompositeExtract 486 2
|
||||||
|
Store 491 492
|
||||||
|
Branch 450
|
||||||
|
449: Label
|
||||||
|
494: 26(fvec4) Load 425(albedo)
|
||||||
|
495: 69(fvec3) VectorShuffle 494 494 3 3 3
|
||||||
|
496: 461(ptr) AccessChain 452(outFragColor) 11
|
||||||
|
497: 23(float) CompositeExtract 495 0
|
||||||
|
Store 496 497
|
||||||
|
498: 461(ptr) AccessChain 452(outFragColor) 19
|
||||||
|
499: 23(float) CompositeExtract 495 1
|
||||||
|
Store 498 499
|
||||||
|
500: 461(ptr) AccessChain 452(outFragColor) 21
|
||||||
|
501: 23(float) CompositeExtract 495 2
|
||||||
|
Store 500 501
|
||||||
|
Branch 450
|
||||||
|
450: Label
|
||||||
|
504: 461(ptr) AccessChain 452(outFragColor) 12
|
||||||
|
Store 504 92
|
||||||
|
Return
|
||||||
|
442: Label
|
||||||
|
509: 26(fvec4) Load 425(albedo)
|
||||||
|
510: 69(fvec3) VectorShuffle 509 509 0 1 2
|
||||||
|
512: 69(fvec3) VectorTimesScalar 510 511
|
||||||
|
Store 506(fragcolor) 512
|
||||||
|
513: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 512 47
|
||||||
|
518: 69(fvec3) Load 413(normal)
|
||||||
|
519: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 518
|
||||||
|
Store 514(N) 519
|
||||||
|
520: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 519 47
|
||||||
|
Store 521(i) 192
|
||||||
|
524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 192 47
|
||||||
|
Branch 525
|
||||||
|
525: Label
|
||||||
|
LoopMerge 527 528 None
|
||||||
|
Branch 529
|
||||||
|
529: Label
|
||||||
|
530: 181(int) Load 521(i)
|
||||||
|
532: 114(bool) SLessThan 530 321
|
||||||
|
BranchConditional 532 526 527
|
||||||
|
526: Label
|
||||||
|
537: 181(int) Load 521(i)
|
||||||
|
539: 538(ptr) AccessChain 357(ubo) 242 537 192
|
||||||
|
540: 26(fvec4) Load 539
|
||||||
|
541: 69(fvec3) VectorShuffle 540 540 0 1 2
|
||||||
|
542: 69(fvec3) Load 392(fragPos)
|
||||||
|
543: 69(fvec3) FSub 541 542
|
||||||
|
Store 533(L) 543
|
||||||
|
544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 543 47
|
||||||
|
548: 69(fvec3) Load 533(L)
|
||||||
|
549: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 548
|
||||||
|
Store 545(dist) 549
|
||||||
|
550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 546 549 47
|
||||||
|
551: 69(fvec3) Load 533(L)
|
||||||
|
552: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 551
|
||||||
|
Store 533(L) 552
|
||||||
|
553: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 552 47
|
||||||
|
558: 538(ptr) AccessChain 357(ubo) 192
|
||||||
|
559: 26(fvec4) Load 558
|
||||||
|
560: 69(fvec3) VectorShuffle 559 559 0 1 2
|
||||||
|
561: 69(fvec3) Load 392(fragPos)
|
||||||
|
562: 69(fvec3) FSub 560 561
|
||||||
|
Store 554(V) 562
|
||||||
|
563: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 562 47
|
||||||
|
564: 69(fvec3) Load 554(V)
|
||||||
|
565: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 564
|
||||||
|
Store 554(V) 565
|
||||||
|
566: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 565 47
|
||||||
|
Store 567(lightCosInnerAngle) 571
|
||||||
|
572: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 568 571 47
|
||||||
|
Store 573(lightCosOuterAngle) 577
|
||||||
|
578: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 574 577 47
|
||||||
|
Store 579(lightRange) 583
|
||||||
|
584: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 580 583 47
|
||||||
|
589: 181(int) Load 521(i)
|
||||||
|
590: 538(ptr) AccessChain 357(ubo) 242 589 192
|
||||||
|
591: 26(fvec4) Load 590
|
||||||
|
592: 69(fvec3) VectorShuffle 591 591 0 1 2
|
||||||
|
593: 181(int) Load 521(i)
|
||||||
|
594: 538(ptr) AccessChain 357(ubo) 242 593 242
|
||||||
|
595: 26(fvec4) Load 594
|
||||||
|
596: 69(fvec3) VectorShuffle 595 595 0 1 2
|
||||||
|
597: 69(fvec3) FSub 592 596
|
||||||
|
598: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 597
|
||||||
|
Store 585(dir) 598
|
||||||
|
599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 586 598 47
|
||||||
|
604: 69(fvec3) Load 533(L)
|
||||||
|
605: 69(fvec3) Load 585(dir)
|
||||||
|
606: 23(float) Dot 604 605
|
||||||
|
Store 600(cosDir) 606
|
||||||
|
607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 606 47
|
||||||
|
612: 23(float) Load 573(lightCosOuterAngle)
|
||||||
|
613: 23(float) Load 567(lightCosInnerAngle)
|
||||||
|
614: 23(float) Load 600(cosDir)
|
||||||
|
615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 612 613 614
|
||||||
|
Store 608(spotEffect) 615
|
||||||
|
616: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 609 615 47
|
||||||
|
621: 23(float) Load 579(lightRange)
|
||||||
|
622: 23(float) Load 545(dist)
|
||||||
|
623: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 621 162 622
|
||||||
|
Store 617(heightAttenuation) 623
|
||||||
|
624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 623 47
|
||||||
|
629: 69(fvec3) Load 514(N)
|
||||||
|
630: 69(fvec3) Load 533(L)
|
||||||
|
631: 23(float) Dot 629 630
|
||||||
|
632: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 631
|
||||||
|
Store 625(NdotL) 632
|
||||||
|
633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 626 632 47
|
||||||
|
638: 23(float) Load 625(NdotL)
|
||||||
|
639: 69(fvec3) CompositeConstruct 638 638 638
|
||||||
|
Store 634(diff) 639
|
||||||
|
640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 635 639 47
|
||||||
|
645: 69(fvec3) Load 533(L)
|
||||||
|
646: 69(fvec3) FNegate 645
|
||||||
|
647: 69(fvec3) Load 514(N)
|
||||||
|
648: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 646 647
|
||||||
|
Store 641(R) 648
|
||||||
|
649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 642 648 47
|
||||||
|
654: 69(fvec3) Load 641(R)
|
||||||
|
655: 69(fvec3) Load 554(V)
|
||||||
|
656: 23(float) Dot 654 655
|
||||||
|
657: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 656
|
||||||
|
Store 650(NdotR) 657
|
||||||
|
658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 651 657 47
|
||||||
|
663: 23(float) Load 650(NdotR)
|
||||||
|
665: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 663 664
|
||||||
|
666: 29(ptr) AccessChain 425(albedo) 12
|
||||||
|
667: 23(float) Load 666
|
||||||
|
668: 23(float) FMul 665 667
|
||||||
|
670: 23(float) FMul 668 669
|
||||||
|
671: 69(fvec3) CompositeConstruct 670 670 670
|
||||||
|
Store 659(spec) 671
|
||||||
|
672: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 660 671 47
|
||||||
|
673: 69(fvec3) Load 634(diff)
|
||||||
|
674: 69(fvec3) Load 659(spec)
|
||||||
|
675: 69(fvec3) FAdd 673 674
|
||||||
|
676: 23(float) Load 608(spotEffect)
|
||||||
|
677: 69(fvec3) VectorTimesScalar 675 676
|
||||||
|
678: 23(float) Load 617(heightAttenuation)
|
||||||
|
679: 69(fvec3) VectorTimesScalar 677 678
|
||||||
|
680: 23(float) CompositeExtract 679 0
|
||||||
|
681: 23(float) CompositeExtract 679 1
|
||||||
|
682: 23(float) CompositeExtract 679 2
|
||||||
|
683: 69(fvec3) CompositeConstruct 680 681 682
|
||||||
|
684: 181(int) Load 521(i)
|
||||||
|
686: 538(ptr) AccessChain 357(ubo) 242 684 685
|
||||||
|
687: 26(fvec4) Load 686
|
||||||
|
688: 69(fvec3) VectorShuffle 687 687 0 1 2
|
||||||
|
689: 69(fvec3) FMul 683 688
|
||||||
|
690: 26(fvec4) Load 425(albedo)
|
||||||
|
691: 69(fvec3) VectorShuffle 690 690 0 1 2
|
||||||
|
692: 69(fvec3) FMul 689 691
|
||||||
|
693: 69(fvec3) Load 506(fragcolor)
|
||||||
|
694: 69(fvec3) FAdd 693 692
|
||||||
|
Store 506(fragcolor) 694
|
||||||
|
695: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 694 47
|
||||||
|
Branch 528
|
||||||
|
528: Label
|
||||||
|
696: 181(int) Load 521(i)
|
||||||
|
697: 181(int) IAdd 696 242
|
||||||
|
Store 521(i) 697
|
||||||
|
698: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 697 47
|
||||||
|
Branch 525
|
||||||
|
527: Label
|
||||||
|
699: 436(ptr) AccessChain 357(ubo) 685
|
||||||
|
700: 181(int) Load 699
|
||||||
|
702: 114(bool) SGreaterThan 700 192
|
||||||
|
SelectionMerge 704 None
|
||||||
|
BranchConditional 702 703 704
|
||||||
|
703: Label
|
||||||
|
706: 69(fvec3) Load 506(fragcolor)
|
||||||
|
Store 705(param) 706
|
||||||
|
708: 69(fvec3) Load 392(fragPos)
|
||||||
|
Store 707(param) 708
|
||||||
|
709: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 705(param) 707(param)
|
||||||
|
Store 506(fragcolor) 709
|
||||||
|
710: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 709 47
|
||||||
|
Branch 704
|
||||||
|
704: Label
|
||||||
|
711: 69(fvec3) Load 506(fragcolor)
|
||||||
|
712: 23(float) CompositeExtract 711 0
|
||||||
|
713: 23(float) CompositeExtract 711 1
|
||||||
|
714: 23(float) CompositeExtract 711 2
|
||||||
|
715: 26(fvec4) CompositeConstruct 712 713 714 92
|
||||||
|
Store 452(outFragColor) 715
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
38(textureProj(vf4;f1;vf2;): 23(float) Function None 33
|
||||||
|
35(P): 28(ptr) FunctionParameter
|
||||||
|
36(layer): 29(ptr) FunctionParameter
|
||||||
|
37(offset): 32(ptr) FunctionParameter
|
||||||
|
41: Label
|
||||||
|
89(shadow): 29(ptr) Variable Function
|
||||||
|
94(shadowCoord): 28(ptr) Variable Function
|
||||||
|
130(dist): 29(ptr) Variable Function
|
||||||
|
42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
|
||||||
|
46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 35(P) 47
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 36(layer) 47
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 37(offset) 47
|
||||||
|
88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(textureProj(vf4;f1;vf2;)
|
||||||
|
Store 89(shadow) 92
|
||||||
|
93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 92 47
|
||||||
|
98: 26(fvec4) Load 35(P)
|
||||||
|
99: 29(ptr) AccessChain 35(P) 12
|
||||||
|
100: 23(float) Load 99
|
||||||
|
101: 26(fvec4) CompositeConstruct 100 100 100 100
|
||||||
|
102: 26(fvec4) FDiv 98 101
|
||||||
|
Store 94(shadowCoord) 102
|
||||||
|
103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 95 102 47
|
||||||
|
104: 26(fvec4) Load 94(shadowCoord)
|
||||||
|
105: 30(fvec2) VectorShuffle 104 104 0 1
|
||||||
|
107: 30(fvec2) VectorTimesScalar 105 106
|
||||||
|
108: 30(fvec2) CompositeConstruct 106 106
|
||||||
|
109: 30(fvec2) FAdd 107 108
|
||||||
|
110: 29(ptr) AccessChain 94(shadowCoord) 11
|
||||||
|
111: 23(float) CompositeExtract 109 0
|
||||||
|
Store 110 111
|
||||||
|
112: 29(ptr) AccessChain 94(shadowCoord) 19
|
||||||
|
113: 23(float) CompositeExtract 109 1
|
||||||
|
Store 112 113
|
||||||
|
115: 29(ptr) AccessChain 94(shadowCoord) 21
|
||||||
|
116: 23(float) Load 115
|
||||||
|
120: 114(bool) FOrdGreaterThan 116 117
|
||||||
|
SelectionMerge 122 None
|
||||||
|
BranchConditional 120 121 122
|
||||||
|
121: Label
|
||||||
|
123: 29(ptr) AccessChain 94(shadowCoord) 21
|
||||||
|
124: 23(float) Load 123
|
||||||
|
126: 114(bool) FOrdLessThan 124 92
|
||||||
|
Branch 122
|
||||||
|
122: Label
|
||||||
|
127: 114(bool) Phi 120 41 126 121
|
||||||
|
SelectionMerge 129 None
|
||||||
|
BranchConditional 127 128 129
|
||||||
|
128: Label
|
||||||
|
148: 139 Load 144(samplerShadowMap)
|
||||||
|
149: 26(fvec4) Load 94(shadowCoord)
|
||||||
|
150: 30(fvec2) VectorShuffle 149 149 0 1
|
||||||
|
151: 30(fvec2) Load 37(offset)
|
||||||
|
152: 30(fvec2) FAdd 150 151
|
||||||
|
153: 23(float) Load 36(layer)
|
||||||
|
154: 23(float) CompositeExtract 152 0
|
||||||
|
155: 23(float) CompositeExtract 152 1
|
||||||
|
156: 69(fvec3) CompositeConstruct 154 155 153
|
||||||
|
157: 26(fvec4) ImageSampleImplicitLod 148 156
|
||||||
|
158: 23(float) CompositeExtract 157 0
|
||||||
|
Store 130(dist) 158
|
||||||
|
159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 131 158 47
|
||||||
|
160: 29(ptr) AccessChain 94(shadowCoord) 12
|
||||||
|
161: 23(float) Load 160
|
||||||
|
164: 114(bool) FOrdGreaterThan 161 162
|
||||||
|
SelectionMerge 166 None
|
||||||
|
BranchConditional 164 165 166
|
||||||
|
165: Label
|
||||||
|
167: 23(float) Load 130(dist)
|
||||||
|
168: 29(ptr) AccessChain 94(shadowCoord) 21
|
||||||
|
169: 23(float) Load 168
|
||||||
|
171: 114(bool) FOrdLessThan 167 169
|
||||||
|
Branch 166
|
||||||
|
166: Label
|
||||||
|
172: 114(bool) Phi 164 128 171 165
|
||||||
|
SelectionMerge 174 None
|
||||||
|
BranchConditional 172 173 174
|
||||||
|
173: Label
|
||||||
|
Store 89(shadow) 175
|
||||||
|
176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 175 47
|
||||||
|
Branch 174
|
||||||
|
174: Label
|
||||||
|
Branch 129
|
||||||
|
129: Label
|
||||||
|
177: 23(float) Load 89(shadow)
|
||||||
|
ReturnValue 177
|
||||||
|
FunctionEnd
|
||||||
|
58(filterPCF(vf4;f1;): 23(float) Function None 54
|
||||||
|
56(sc): 28(ptr) FunctionParameter
|
||||||
|
57(layer): 29(ptr) FunctionParameter
|
||||||
|
61: Label
|
||||||
|
187(texDim): 186(ptr) Variable Function
|
||||||
|
199(scale): 29(ptr) Variable Function
|
||||||
|
205(dx): 29(ptr) Variable Function
|
||||||
|
217(dy): 29(ptr) Variable Function
|
||||||
|
228(shadowFactor): 29(ptr) Variable Function
|
||||||
|
233(count): 211(ptr) Variable Function
|
||||||
|
238(range): 211(ptr) Variable Function
|
||||||
|
244(x): 211(ptr) Variable Function
|
||||||
|
260(y): 211(ptr) Variable Function
|
||||||
|
285(param): 28(ptr) Variable Function
|
||||||
|
287(param): 29(ptr) Variable Function
|
||||||
|
289(param): 32(ptr) Variable Function
|
||||||
|
62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 60
|
||||||
|
63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
|
||||||
|
66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 64 56(sc) 47
|
||||||
|
68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 67 57(layer) 47
|
||||||
|
180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;)
|
||||||
|
191: 139 Load 144(samplerShadowMap)
|
||||||
|
193: 134 Image 191
|
||||||
|
196: 194(ivec3) ImageQuerySizeLod 193 192
|
||||||
|
197: 184(ivec2) VectorShuffle 196 196 0 1
|
||||||
|
Store 187(texDim) 197
|
||||||
|
198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 188 197 47
|
||||||
|
Store 199(scale) 203
|
||||||
|
204: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 200 203 47
|
||||||
|
209: 23(float) Load 199(scale)
|
||||||
|
210: 23(float) FMul 209 92
|
||||||
|
212: 211(ptr) AccessChain 187(texDim) 11
|
||||||
|
213: 181(int) Load 212
|
||||||
|
214: 23(float) ConvertSToF 213
|
||||||
|
215: 23(float) FDiv 210 214
|
||||||
|
Store 205(dx) 215
|
||||||
|
216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 206 215 47
|
||||||
|
221: 23(float) Load 199(scale)
|
||||||
|
222: 23(float) FMul 221 92
|
||||||
|
223: 211(ptr) AccessChain 187(texDim) 19
|
||||||
|
224: 181(int) Load 223
|
||||||
|
225: 23(float) ConvertSToF 224
|
||||||
|
226: 23(float) FDiv 222 225
|
||||||
|
Store 217(dy) 226
|
||||||
|
227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 218 226 47
|
||||||
|
Store 228(shadowFactor) 162
|
||||||
|
232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 162 47
|
||||||
|
Store 233(count) 192
|
||||||
|
237: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 192 47
|
||||||
|
Store 238(range) 242
|
||||||
|
243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 239 242 47
|
||||||
|
248: 181(int) Load 238(range)
|
||||||
|
249: 181(int) SNegate 248
|
||||||
|
Store 244(x) 249
|
||||||
|
250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 249 47
|
||||||
|
Branch 251
|
||||||
|
251: Label
|
||||||
|
LoopMerge 253 254 None
|
||||||
|
Branch 255
|
||||||
|
255: Label
|
||||||
|
256: 181(int) Load 244(x)
|
||||||
|
257: 181(int) Load 238(range)
|
||||||
|
259: 114(bool) SLessThanEqual 256 257
|
||||||
|
BranchConditional 259 252 253
|
||||||
|
252: Label
|
||||||
|
264: 181(int) Load 238(range)
|
||||||
|
265: 181(int) SNegate 264
|
||||||
|
Store 260(y) 265
|
||||||
|
266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 265 47
|
||||||
|
Branch 267
|
||||||
|
267: Label
|
||||||
|
LoopMerge 269 270 None
|
||||||
|
Branch 271
|
||||||
|
271: Label
|
||||||
|
272: 181(int) Load 260(y)
|
||||||
|
273: 181(int) Load 238(range)
|
||||||
|
275: 114(bool) SLessThanEqual 272 273
|
||||||
|
BranchConditional 275 268 269
|
||||||
|
268: Label
|
||||||
|
276: 23(float) Load 205(dx)
|
||||||
|
277: 181(int) Load 244(x)
|
||||||
|
278: 23(float) ConvertSToF 277
|
||||||
|
279: 23(float) FMul 276 278
|
||||||
|
280: 23(float) Load 217(dy)
|
||||||
|
281: 181(int) Load 260(y)
|
||||||
|
282: 23(float) ConvertSToF 281
|
||||||
|
283: 23(float) FMul 280 282
|
||||||
|
284: 30(fvec2) CompositeConstruct 279 283
|
||||||
|
286: 26(fvec4) Load 56(sc)
|
||||||
|
Store 285(param) 286
|
||||||
|
288: 23(float) Load 57(layer)
|
||||||
|
Store 287(param) 288
|
||||||
|
Store 289(param) 284
|
||||||
|
290: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 285(param) 287(param) 289(param)
|
||||||
|
291: 23(float) Load 228(shadowFactor)
|
||||||
|
292: 23(float) FAdd 291 290
|
||||||
|
Store 228(shadowFactor) 292
|
||||||
|
293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 292 47
|
||||||
|
294: 181(int) Load 233(count)
|
||||||
|
295: 181(int) IAdd 294 242
|
||||||
|
Store 233(count) 295
|
||||||
|
296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 295 47
|
||||||
|
Branch 270
|
||||||
|
270: Label
|
||||||
|
297: 181(int) Load 260(y)
|
||||||
|
298: 181(int) IAdd 297 242
|
||||||
|
Store 260(y) 298
|
||||||
|
299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 298 47
|
||||||
|
Branch 267
|
||||||
|
269: Label
|
||||||
|
Branch 254
|
||||||
|
254: Label
|
||||||
|
300: 181(int) Load 244(x)
|
||||||
|
301: 181(int) IAdd 300 242
|
||||||
|
Store 244(x) 301
|
||||||
|
302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 301 47
|
||||||
|
Branch 251
|
||||||
|
253: Label
|
||||||
|
303: 23(float) Load 228(shadowFactor)
|
||||||
|
304: 181(int) Load 233(count)
|
||||||
|
305: 23(float) ConvertSToF 304
|
||||||
|
306: 23(float) FDiv 303 305
|
||||||
|
ReturnValue 306
|
||||||
|
FunctionEnd
|
||||||
|
76(shadow(vf3;vf3;): 69(fvec3) Function None 72
|
||||||
|
74(fragcolor): 71(ptr) FunctionParameter
|
||||||
|
75(fragpos): 71(ptr) FunctionParameter
|
||||||
|
79: Label
|
||||||
|
310(i): 211(ptr) Variable Function
|
||||||
|
324(shadowClip): 28(ptr) Variable Function
|
||||||
|
371(shadowFactor): 29(ptr) Variable Function
|
||||||
|
376(param): 28(ptr) Variable Function
|
||||||
|
378(param): 29(ptr) Variable Function
|
||||||
|
80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 78
|
||||||
|
81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
|
||||||
|
84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 82 74(fragcolor) 47
|
||||||
|
87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 85 75(fragpos) 47
|
||||||
|
309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;)
|
||||||
|
Store 310(i) 192
|
||||||
|
314: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 192 47
|
||||||
|
Branch 315
|
||||||
|
315: Label
|
||||||
|
LoopMerge 317 318 None
|
||||||
|
Branch 319
|
||||||
|
319: Label
|
||||||
|
320: 181(int) Load 310(i)
|
||||||
|
323: 114(bool) SLessThan 320 321
|
||||||
|
BranchConditional 323 316 317
|
||||||
|
316: Label
|
||||||
|
360: 181(int) Load 310(i)
|
||||||
|
362: 361(ptr) AccessChain 357(ubo) 242 360 321
|
||||||
|
363: 328 Load 362
|
||||||
|
364: 69(fvec3) Load 75(fragpos)
|
||||||
|
365: 23(float) CompositeExtract 364 0
|
||||||
|
366: 23(float) CompositeExtract 364 1
|
||||||
|
367: 23(float) CompositeExtract 364 2
|
||||||
|
368: 26(fvec4) CompositeConstruct 365 366 367 92
|
||||||
|
369: 26(fvec4) MatrixTimesVector 363 368
|
||||||
|
Store 324(shadowClip) 369
|
||||||
|
370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 325 369 47
|
||||||
|
374: 181(int) Load 310(i)
|
||||||
|
375: 23(float) ConvertSToF 374
|
||||||
|
377: 26(fvec4) Load 324(shadowClip)
|
||||||
|
Store 376(param) 377
|
||||||
|
Store 378(param) 375
|
||||||
|
379: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 376(param) 378(param)
|
||||||
|
Store 371(shadowFactor) 379
|
||||||
|
380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 372 379 47
|
||||||
|
381: 23(float) Load 371(shadowFactor)
|
||||||
|
382: 69(fvec3) Load 74(fragcolor)
|
||||||
|
383: 69(fvec3) VectorTimesScalar 382 381
|
||||||
|
Store 74(fragcolor) 383
|
||||||
|
384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 82 383 47
|
||||||
|
Branch 318
|
||||||
|
318: Label
|
||||||
|
385: 181(int) Load 310(i)
|
||||||
|
386: 181(int) IAdd 385 242
|
||||||
|
Store 310(i) 386
|
||||||
|
387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 386 47
|
||||||
|
Branch 315
|
||||||
|
317: Label
|
||||||
|
388: 69(fvec3) Load 74(fragcolor)
|
||||||
|
ReturnValue 388
|
||||||
|
FunctionEnd
|
333
Test/baseResults/spv.debuginfo.glsl.geom.out
Normal file
333
Test/baseResults/spv.debuginfo.glsl.geom.out
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
spv.debuginfo.glsl.geom
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 232
|
||||||
|
|
||||||
|
Capability Geometry
|
||||||
|
Capability MultiViewport
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Geometry 13 "main" 52 85 104 112 116 145 181 189 206 216 221 225
|
||||||
|
ExecutionMode 13 Triangles
|
||||||
|
ExecutionMode 13 Invocations 2
|
||||||
|
ExecutionMode 13 OutputTriangleStrip
|
||||||
|
ExecutionMode 13 OutputVertices 3
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
25: String "int"
|
||||||
|
30: String "i"
|
||||||
|
43: String "bool"
|
||||||
|
47: String "float"
|
||||||
|
54: String "outNormal"
|
||||||
|
68: String "projection"
|
||||||
|
72: String "modelview"
|
||||||
|
75: String "lightPos"
|
||||||
|
78: String "UBO"
|
||||||
|
82: String "ubo"
|
||||||
|
87: String "gl_InvocationID"
|
||||||
|
106: String "inNormal"
|
||||||
|
114: String "outColor"
|
||||||
|
118: String "inColor"
|
||||||
|
125: String "pos"
|
||||||
|
131: String "gl_Position"
|
||||||
|
134: String "gl_PointSize"
|
||||||
|
137: String "gl_CullDistance"
|
||||||
|
141: String "gl_PerVertex"
|
||||||
|
147: String "gl_in"
|
||||||
|
155: String "worldPos"
|
||||||
|
166: String "lPos"
|
||||||
|
183: String "outLightVec"
|
||||||
|
191: String "outViewVec"
|
||||||
|
218: String "gl_ViewportIndex"
|
||||||
|
223: String "gl_PrimitiveID"
|
||||||
|
227: String "gl_PrimitiveIDIn"
|
||||||
|
SourceExtension "GL_ARB_viewport_array"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 28 "i"
|
||||||
|
Name 52 "outNormal"
|
||||||
|
Name 66 "UBO"
|
||||||
|
MemberName 66(UBO) 0 "projection"
|
||||||
|
MemberName 66(UBO) 1 "modelview"
|
||||||
|
MemberName 66(UBO) 2 "lightPos"
|
||||||
|
Name 80 "ubo"
|
||||||
|
Name 85 "gl_InvocationID"
|
||||||
|
Name 104 "inNormal"
|
||||||
|
Name 112 "outColor"
|
||||||
|
Name 116 "inColor"
|
||||||
|
Name 123 "pos"
|
||||||
|
Name 129 "gl_PerVertex"
|
||||||
|
MemberName 129(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 129(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 129(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 129(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 145 "gl_in"
|
||||||
|
Name 153 "worldPos"
|
||||||
|
Name 164 "lPos"
|
||||||
|
Name 181 "outLightVec"
|
||||||
|
Name 189 "outViewVec"
|
||||||
|
Name 196 "gl_PerVertex"
|
||||||
|
MemberName 196(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 196(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 196(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 196(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 206 ""
|
||||||
|
Name 216 "gl_ViewportIndex"
|
||||||
|
Name 221 "gl_PrimitiveID"
|
||||||
|
Name 225 "gl_PrimitiveIDIn"
|
||||||
|
Decorate 52(outNormal) Location 0
|
||||||
|
Decorate 62 ArrayStride 64
|
||||||
|
Decorate 64 ArrayStride 64
|
||||||
|
MemberDecorate 66(UBO) 0 ColMajor
|
||||||
|
MemberDecorate 66(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 66(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 66(UBO) 1 ColMajor
|
||||||
|
MemberDecorate 66(UBO) 1 Offset 128
|
||||||
|
MemberDecorate 66(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 66(UBO) 2 Offset 256
|
||||||
|
Decorate 66(UBO) Block
|
||||||
|
Decorate 80(ubo) DescriptorSet 0
|
||||||
|
Decorate 80(ubo) Binding 0
|
||||||
|
Decorate 85(gl_InvocationID) BuiltIn InvocationId
|
||||||
|
Decorate 104(inNormal) Location 0
|
||||||
|
Decorate 112(outColor) Location 1
|
||||||
|
Decorate 116(inColor) Location 1
|
||||||
|
MemberDecorate 129(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 129(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 129(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 129(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 129(gl_PerVertex) Block
|
||||||
|
Decorate 181(outLightVec) Location 3
|
||||||
|
Decorate 189(outViewVec) Location 2
|
||||||
|
MemberDecorate 196(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 196(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 196(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 196(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 196(gl_PerVertex) Block
|
||||||
|
Decorate 216(gl_ViewportIndex) BuiltIn ViewportIndex
|
||||||
|
Decorate 221(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||||
|
Decorate 225(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
24: TypeInt 32 1
|
||||||
|
26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 20 11
|
||||||
|
27: TypePointer Function 24(int)
|
||||||
|
31: 6(int) Constant 49
|
||||||
|
29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 30 26 16 31 11 15 20
|
||||||
|
32: 24(int) Constant 0
|
||||||
|
34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
41: 24(int) Constant 3
|
||||||
|
42: TypeBool
|
||||||
|
44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 43 9 21 11
|
||||||
|
46: TypeFloat 32
|
||||||
|
48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 12 11
|
||||||
|
49: TypeVector 46(float) 3
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 12
|
||||||
|
51: TypePointer Output 49(fvec3)
|
||||||
|
52(outNormal): 51(ptr) Variable Output
|
||||||
|
55: 6(int) Constant 51
|
||||||
|
56: 6(int) Constant 8
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 54 50 16 55 11 18 54 52(outNormal) 56
|
||||||
|
57: TypeVector 46(float) 4
|
||||||
|
58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 20
|
||||||
|
59: TypeMatrix 57(fvec4) 4
|
||||||
|
61: 42(bool) ConstantTrue
|
||||||
|
60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 58 20 61
|
||||||
|
62: TypeArray 59 21
|
||||||
|
63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21
|
||||||
|
64: TypeArray 59 21
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21
|
||||||
|
66(UBO): TypeStruct 62 64 57(fvec4)
|
||||||
|
69: 6(int) Constant 34
|
||||||
|
70: 6(int) Constant 7
|
||||||
|
67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 68 63 16 69 70 11 11 12
|
||||||
|
73: 6(int) Constant 35
|
||||||
|
71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 72 65 16 73 70 11 11 12
|
||||||
|
76: 6(int) Constant 36
|
||||||
|
74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 75 58 16 76 70 11 11 12
|
||||||
|
77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 78 19 16 55 11 18 78 11 12 67 71 74
|
||||||
|
79: TypePointer Uniform 66(UBO)
|
||||||
|
80(ubo): 79(ptr) Variable Uniform
|
||||||
|
81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 77 16 55 11 18 82 80(ubo) 56
|
||||||
|
83: 24(int) Constant 1
|
||||||
|
84: TypePointer Input 24(int)
|
||||||
|
85(gl_InvocationID): 84(ptr) Variable Input
|
||||||
|
86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 87 26 16 55 11 18 87 85(gl_InvocationID) 56
|
||||||
|
89: TypePointer Uniform 59
|
||||||
|
92: TypeMatrix 49(fvec3) 3
|
||||||
|
93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 50 12 61
|
||||||
|
101: TypeArray 49(fvec3) 12
|
||||||
|
102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 50 12
|
||||||
|
103: TypePointer Input 101
|
||||||
|
104(inNormal): 103(ptr) Variable Input
|
||||||
|
105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 106 102 16 55 11 18 106 104(inNormal) 56
|
||||||
|
108: TypePointer Input 49(fvec3)
|
||||||
|
112(outColor): 51(ptr) Variable Output
|
||||||
|
115: 6(int) Constant 52
|
||||||
|
113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 50 16 115 11 18 114 112(outColor) 56
|
||||||
|
116(inColor): 103(ptr) Variable Input
|
||||||
|
117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 118 102 16 115 11 18 118 116(inColor) 56
|
||||||
|
122: TypePointer Function 57(fvec4)
|
||||||
|
126: 6(int) Constant 54
|
||||||
|
124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 58 16 126 11 15 20
|
||||||
|
127: TypeArray 46(float) 19
|
||||||
|
128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19
|
||||||
|
129(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127
|
||||||
|
132: 6(int) Constant 23
|
||||||
|
130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 132 11 11 12
|
||||||
|
135: 6(int) Constant 41
|
||||||
|
133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 135 11 11 12
|
||||||
|
138: 6(int) Constant 84
|
||||||
|
136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12
|
||||||
|
139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12
|
||||||
|
140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 126 11 18 141 11 12 130 133 136 139
|
||||||
|
142: TypeArray 129(gl_PerVertex) 12
|
||||||
|
143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 140 12
|
||||||
|
144: TypePointer Input 142
|
||||||
|
145(gl_in): 144(ptr) Variable Input
|
||||||
|
146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 143 16 126 11 18 147 145(gl_in) 56
|
||||||
|
149: TypePointer Input 57(fvec4)
|
||||||
|
156: 6(int) Constant 55
|
||||||
|
154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 58 16 156 11 15 20
|
||||||
|
163: TypePointer Function 49(fvec3)
|
||||||
|
167: 6(int) Constant 57
|
||||||
|
165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 166 50 16 167 11 15 20
|
||||||
|
171: 24(int) Constant 2
|
||||||
|
172: TypePointer Uniform 57(fvec4)
|
||||||
|
181(outLightVec): 51(ptr) Variable Output
|
||||||
|
184: 6(int) Constant 58
|
||||||
|
182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 183 50 16 184 11 18 183 181(outLightVec) 56
|
||||||
|
189(outViewVec): 51(ptr) Variable Output
|
||||||
|
192: 6(int) Constant 59
|
||||||
|
190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 191 50 16 192 11 18 191 189(outViewVec) 56
|
||||||
|
196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127
|
||||||
|
198: 6(int) Constant 215
|
||||||
|
197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 198 11 11 12
|
||||||
|
200: 6(int) Constant 233
|
||||||
|
199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 200 11 11 12
|
||||||
|
201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12
|
||||||
|
202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12
|
||||||
|
204: 6(int) Constant 61
|
||||||
|
203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 204 11 18 141 11 12 197 199 201 202
|
||||||
|
205: TypePointer Output 196(gl_PerVertex)
|
||||||
|
206: 205(ptr) Variable Output
|
||||||
|
207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 203 16 204 11 18 17 206 56
|
||||||
|
213: TypePointer Output 57(fvec4)
|
||||||
|
215: TypePointer Output 24(int)
|
||||||
|
216(gl_ViewportIndex): 215(ptr) Variable Output
|
||||||
|
219: 6(int) Constant 64
|
||||||
|
217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56
|
||||||
|
221(gl_PrimitiveID): 215(ptr) Variable Output
|
||||||
|
224: 6(int) Constant 65
|
||||||
|
222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56
|
||||||
|
225(gl_PrimitiveIDIn): 84(ptr) Variable Input
|
||||||
|
226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
28(i): 27(ptr) Variable Function
|
||||||
|
123(pos): 122(ptr) Variable Function
|
||||||
|
153(worldPos): 122(ptr) Variable Function
|
||||||
|
164(lPos): 163(ptr) Variable Function
|
||||||
|
23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
Store 28(i) 32
|
||||||
|
33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 32 34
|
||||||
|
Branch 35
|
||||||
|
35: Label
|
||||||
|
LoopMerge 37 38 None
|
||||||
|
Branch 39
|
||||||
|
39: Label
|
||||||
|
40: 24(int) Load 28(i)
|
||||||
|
45: 42(bool) SLessThan 40 41
|
||||||
|
BranchConditional 45 36 37
|
||||||
|
36: Label
|
||||||
|
88: 24(int) Load 85(gl_InvocationID)
|
||||||
|
90: 89(ptr) AccessChain 80(ubo) 83 88
|
||||||
|
91: 59 Load 90
|
||||||
|
94: 57(fvec4) CompositeExtract 91 0
|
||||||
|
95: 49(fvec3) VectorShuffle 94 94 0 1 2
|
||||||
|
96: 57(fvec4) CompositeExtract 91 1
|
||||||
|
97: 49(fvec3) VectorShuffle 96 96 0 1 2
|
||||||
|
98: 57(fvec4) CompositeExtract 91 2
|
||||||
|
99: 49(fvec3) VectorShuffle 98 98 0 1 2
|
||||||
|
100: 92 CompositeConstruct 95 97 99
|
||||||
|
107: 24(int) Load 28(i)
|
||||||
|
109: 108(ptr) AccessChain 104(inNormal) 107
|
||||||
|
110: 49(fvec3) Load 109
|
||||||
|
111: 49(fvec3) MatrixTimesVector 100 110
|
||||||
|
Store 52(outNormal) 111
|
||||||
|
119: 24(int) Load 28(i)
|
||||||
|
120: 108(ptr) AccessChain 116(inColor) 119
|
||||||
|
121: 49(fvec3) Load 120
|
||||||
|
Store 112(outColor) 121
|
||||||
|
148: 24(int) Load 28(i)
|
||||||
|
150: 149(ptr) AccessChain 145(gl_in) 148 32
|
||||||
|
151: 57(fvec4) Load 150
|
||||||
|
Store 123(pos) 151
|
||||||
|
152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 124 151 34
|
||||||
|
157: 24(int) Load 85(gl_InvocationID)
|
||||||
|
158: 89(ptr) AccessChain 80(ubo) 83 157
|
||||||
|
159: 59 Load 158
|
||||||
|
160: 57(fvec4) Load 123(pos)
|
||||||
|
161: 57(fvec4) MatrixTimesVector 159 160
|
||||||
|
Store 153(worldPos) 161
|
||||||
|
162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 154 161 34
|
||||||
|
168: 24(int) Load 85(gl_InvocationID)
|
||||||
|
169: 89(ptr) AccessChain 80(ubo) 83 168
|
||||||
|
170: 59 Load 169
|
||||||
|
173: 172(ptr) AccessChain 80(ubo) 171
|
||||||
|
174: 57(fvec4) Load 173
|
||||||
|
175: 57(fvec4) MatrixTimesVector 170 174
|
||||||
|
176: 46(float) CompositeExtract 175 0
|
||||||
|
177: 46(float) CompositeExtract 175 1
|
||||||
|
178: 46(float) CompositeExtract 175 2
|
||||||
|
179: 49(fvec3) CompositeConstruct 176 177 178
|
||||||
|
Store 164(lPos) 179
|
||||||
|
180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 165 179 34
|
||||||
|
185: 49(fvec3) Load 164(lPos)
|
||||||
|
186: 57(fvec4) Load 153(worldPos)
|
||||||
|
187: 49(fvec3) VectorShuffle 186 186 0 1 2
|
||||||
|
188: 49(fvec3) FSub 185 187
|
||||||
|
Store 181(outLightVec) 188
|
||||||
|
193: 57(fvec4) Load 153(worldPos)
|
||||||
|
194: 49(fvec3) VectorShuffle 193 193 0 1 2
|
||||||
|
195: 49(fvec3) FNegate 194
|
||||||
|
Store 189(outViewVec) 195
|
||||||
|
208: 24(int) Load 85(gl_InvocationID)
|
||||||
|
209: 89(ptr) AccessChain 80(ubo) 32 208
|
||||||
|
210: 59 Load 209
|
||||||
|
211: 57(fvec4) Load 153(worldPos)
|
||||||
|
212: 57(fvec4) MatrixTimesVector 210 211
|
||||||
|
214: 213(ptr) AccessChain 206 32
|
||||||
|
Store 214 212
|
||||||
|
220: 24(int) Load 85(gl_InvocationID)
|
||||||
|
Store 216(gl_ViewportIndex) 220
|
||||||
|
228: 24(int) Load 225(gl_PrimitiveIDIn)
|
||||||
|
Store 221(gl_PrimitiveID) 228
|
||||||
|
EmitVertex
|
||||||
|
Branch 38
|
||||||
|
38: Label
|
||||||
|
229: 24(int) Load 28(i)
|
||||||
|
230: 24(int) IAdd 229 83
|
||||||
|
Store 28(i) 230
|
||||||
|
231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 230 34
|
||||||
|
Branch 35
|
||||||
|
37: Label
|
||||||
|
EndPrimitive
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
622
Test/baseResults/spv.debuginfo.glsl.tesc.out
Normal file
622
Test/baseResults/spv.debuginfo.glsl.tesc.out
Normal file
@ -0,0 +1,622 @@
|
|||||||
|
spv.debuginfo.glsl.tesc
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 460
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationControl 13 "main" 231 235 261 328 338 418 430 438 450
|
||||||
|
ExecutionMode 13 OutputVertices 4
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
24: String "float"
|
||||||
|
34: String "screenSpaceTessFactor"
|
||||||
|
40: String "p0"
|
||||||
|
44: String "p1"
|
||||||
|
47: String "bool"
|
||||||
|
52: String "frustumCheck"
|
||||||
|
58: String "midPoint"
|
||||||
|
69: String "radius"
|
||||||
|
79: String "v0"
|
||||||
|
90: String "modelview"
|
||||||
|
95: String "lightPos"
|
||||||
|
98: String "frustumPlanes"
|
||||||
|
100: String "tessellatedEdgeSize"
|
||||||
|
105: String "viewportDim"
|
||||||
|
109: String "UBO"
|
||||||
|
113: String "ubo"
|
||||||
|
115: String "int"
|
||||||
|
126: String "clip0"
|
||||||
|
146: String "clip1"
|
||||||
|
211: String "pos"
|
||||||
|
217: String "gl_Position"
|
||||||
|
220: String "gl_PointSize"
|
||||||
|
223: String "gl_CullDistance"
|
||||||
|
227: String "gl_PerVertex"
|
||||||
|
233: String "gl_in"
|
||||||
|
237: String "gl_InvocationID"
|
||||||
|
245: String "type.2d.image"
|
||||||
|
247: String "@type.2d.image"
|
||||||
|
251: String "type.sampled.image"
|
||||||
|
252: String "@type.sampled.image"
|
||||||
|
256: String "samplerHeight"
|
||||||
|
263: String "inUV"
|
||||||
|
280: String "i"
|
||||||
|
330: String "gl_TessLevelInner"
|
||||||
|
340: String "gl_TessLevelOuter"
|
||||||
|
420: String "gl_out"
|
||||||
|
432: String "outNormal"
|
||||||
|
440: String "inNormal"
|
||||||
|
452: String "outUV"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 33 "screenSpaceTessFactor(vf4;vf4;"
|
||||||
|
Name 31 "p0"
|
||||||
|
Name 32 "p1"
|
||||||
|
Name 51 "frustumCheck("
|
||||||
|
Name 56 "midPoint"
|
||||||
|
Name 67 "radius"
|
||||||
|
Name 77 "v0"
|
||||||
|
Name 88 "UBO"
|
||||||
|
MemberName 88(UBO) 0 "projection"
|
||||||
|
MemberName 88(UBO) 1 "modelview"
|
||||||
|
MemberName 88(UBO) 2 "lightPos"
|
||||||
|
MemberName 88(UBO) 3 "frustumPlanes"
|
||||||
|
MemberName 88(UBO) 4 "displacementFactor"
|
||||||
|
MemberName 88(UBO) 5 "tessellationFactor"
|
||||||
|
MemberName 88(UBO) 6 "viewportDim"
|
||||||
|
MemberName 88(UBO) 7 "tessellatedEdgeSize"
|
||||||
|
Name 111 "ubo"
|
||||||
|
Name 124 "clip0"
|
||||||
|
Name 144 "clip1"
|
||||||
|
Name 209 "pos"
|
||||||
|
Name 215 "gl_PerVertex"
|
||||||
|
MemberName 215(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 215(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 215(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 215(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 231 "gl_in"
|
||||||
|
Name 235 "gl_InvocationID"
|
||||||
|
Name 254 "samplerHeight"
|
||||||
|
Name 261 "inUV"
|
||||||
|
Name 278 "i"
|
||||||
|
Name 328 "gl_TessLevelInner"
|
||||||
|
Name 338 "gl_TessLevelOuter"
|
||||||
|
Name 354 "param"
|
||||||
|
Name 357 "param"
|
||||||
|
Name 362 "param"
|
||||||
|
Name 365 "param"
|
||||||
|
Name 370 "param"
|
||||||
|
Name 373 "param"
|
||||||
|
Name 378 "param"
|
||||||
|
Name 381 "param"
|
||||||
|
Name 405 "gl_PerVertex"
|
||||||
|
MemberName 405(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 405(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 405(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 405(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 418 "gl_out"
|
||||||
|
Name 430 "outNormal"
|
||||||
|
Name 438 "inNormal"
|
||||||
|
Name 450 "outUV"
|
||||||
|
Decorate 84 ArrayStride 16
|
||||||
|
MemberDecorate 88(UBO) 0 ColMajor
|
||||||
|
MemberDecorate 88(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 88(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 88(UBO) 1 ColMajor
|
||||||
|
MemberDecorate 88(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 88(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 88(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 88(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 88(UBO) 4 Offset 240
|
||||||
|
MemberDecorate 88(UBO) 5 Offset 244
|
||||||
|
MemberDecorate 88(UBO) 6 Offset 248
|
||||||
|
MemberDecorate 88(UBO) 7 Offset 256
|
||||||
|
Decorate 88(UBO) Block
|
||||||
|
Decorate 111(ubo) DescriptorSet 0
|
||||||
|
Decorate 111(ubo) Binding 0
|
||||||
|
MemberDecorate 215(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 215(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 215(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 215(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 215(gl_PerVertex) Block
|
||||||
|
Decorate 235(gl_InvocationID) BuiltIn InvocationId
|
||||||
|
Decorate 254(samplerHeight) DescriptorSet 0
|
||||||
|
Decorate 254(samplerHeight) Binding 1
|
||||||
|
Decorate 261(inUV) Location 1
|
||||||
|
Decorate 328(gl_TessLevelInner) Patch
|
||||||
|
Decorate 328(gl_TessLevelInner) BuiltIn TessLevelInner
|
||||||
|
Decorate 338(gl_TessLevelOuter) Patch
|
||||||
|
Decorate 338(gl_TessLevelOuter) BuiltIn TessLevelOuter
|
||||||
|
MemberDecorate 405(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 405(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 405(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 405(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 405(gl_PerVertex) Block
|
||||||
|
Decorate 430(outNormal) Location 0
|
||||||
|
Decorate 438(inNormal) Location 0
|
||||||
|
Decorate 450(outUV) Location 1
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
23: TypeFloat 32
|
||||||
|
25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
|
||||||
|
26: TypeVector 23(float) 4
|
||||||
|
27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
|
||||||
|
28: TypePointer Function 26(fvec4)
|
||||||
|
29: TypeFunction 23(float) 28(ptr) 28(ptr)
|
||||||
|
30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 27
|
||||||
|
35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 34 30 16 11 11 18 34 12 11
|
||||||
|
39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 40 27 16 11 11 35 20 19
|
||||||
|
42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 44 27 16 11 11 35 20 21
|
||||||
|
46: TypeBool
|
||||||
|
48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
49: TypeFunction 46(bool)
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 48
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 52 50 16 11 11 18 52 12 11
|
||||||
|
59: 6(int) Constant 54
|
||||||
|
57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 58 27 16 59 11 35 20
|
||||||
|
60: 23(float) Constant 1056964608
|
||||||
|
66: TypePointer Function 23(float)
|
||||||
|
70: 6(int) Constant 56
|
||||||
|
68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 69 25 16 70 11 35 20
|
||||||
|
74: 23(float) Constant 1073741824
|
||||||
|
80: 6(int) Constant 59
|
||||||
|
78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 79 27 16 80 11 35 20
|
||||||
|
81: TypeMatrix 26(fvec4) 4
|
||||||
|
83: 46(bool) ConstantTrue
|
||||||
|
82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 83
|
||||||
|
84: TypeArray 26(fvec4) 10
|
||||||
|
85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10
|
||||||
|
86: TypeVector 23(float) 2
|
||||||
|
87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21
|
||||||
|
88(UBO): TypeStruct 81 81 26(fvec4) 84 23(float) 23(float) 86(fvec2) 23(float)
|
||||||
|
91: 6(int) Constant 30
|
||||||
|
92: 6(int) Constant 7
|
||||||
|
89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12
|
||||||
|
93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12
|
||||||
|
96: 6(int) Constant 31
|
||||||
|
94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 27 16 96 92 11 11 12
|
||||||
|
97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 98 85 16 9 92 11 11 12
|
||||||
|
101: 6(int) Constant 36
|
||||||
|
102: 6(int) Constant 8
|
||||||
|
99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12
|
||||||
|
103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12
|
||||||
|
106: 6(int) Constant 35
|
||||||
|
104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 105 87 16 106 92 11 11 12
|
||||||
|
107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12
|
||||||
|
108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 109 19 16 80 11 18 109 11 12 89 93 94 97 99 103 104 107
|
||||||
|
110: TypePointer Uniform 88(UBO)
|
||||||
|
111(ubo): 110(ptr) Variable Uniform
|
||||||
|
112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 113 108 16 80 11 18 113 111(ubo) 102
|
||||||
|
114: TypeInt 32 1
|
||||||
|
116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 115 9 20 11
|
||||||
|
117: 114(int) Constant 1
|
||||||
|
118: TypePointer Uniform 81
|
||||||
|
127: 6(int) Constant 62
|
||||||
|
125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 126 27 16 127 11 35 20
|
||||||
|
128: 114(int) Constant 0
|
||||||
|
133: TypeVector 23(float) 3
|
||||||
|
134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
|
||||||
|
135: 23(float) Constant 0
|
||||||
|
136: 133(fvec3) ConstantComposite 135 135 135
|
||||||
|
147: 6(int) Constant 63
|
||||||
|
145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 146 27 16 147 11 35 20
|
||||||
|
171: 114(int) Constant 6
|
||||||
|
172: TypePointer Uniform 86(fvec2)
|
||||||
|
194: 114(int) Constant 7
|
||||||
|
195: TypePointer Uniform 23(float)
|
||||||
|
199: 114(int) Constant 5
|
||||||
|
203: 23(float) Constant 1065353216
|
||||||
|
204: 23(float) Constant 1115684864
|
||||||
|
212: 6(int) Constant 85
|
||||||
|
210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 211 27 16 212 11 53 20
|
||||||
|
213: TypeArray 23(float) 19
|
||||||
|
214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19
|
||||||
|
215(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213
|
||||||
|
218: 6(int) Constant 1756
|
||||||
|
216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 218 11 11 12
|
||||||
|
221: 6(int) Constant 1774
|
||||||
|
219: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 221 11 11 12
|
||||||
|
224: 6(int) Constant 1817
|
||||||
|
222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12
|
||||||
|
225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12
|
||||||
|
226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 212 11 18 227 11 12 216 219 222 225
|
||||||
|
228: TypeArray 215(gl_PerVertex) 9
|
||||||
|
229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 226 9
|
||||||
|
230: TypePointer Input 228
|
||||||
|
231(gl_in): 230(ptr) Variable Input
|
||||||
|
232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 233 229 16 212 11 18 233 231(gl_in) 102
|
||||||
|
234: TypePointer Input 114(int)
|
||||||
|
235(gl_InvocationID): 234(ptr) Variable Input
|
||||||
|
236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 116 16 212 11 18 237 235(gl_InvocationID) 102
|
||||||
|
239: TypePointer Input 26(fvec4)
|
||||||
|
243: TypeImage 23(float) 2D sampled format:Unknown
|
||||||
|
246: 6(int) Constant 86
|
||||||
|
248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
|
||||||
|
244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 245 11 16 246 11 18 247 248 12
|
||||||
|
249: TypeSampledImage 243
|
||||||
|
250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 251 11 16 246 11 18 252 248 12
|
||||||
|
253: TypePointer UniformConstant 249
|
||||||
|
254(samplerHeight): 253(ptr) Variable UniformConstant
|
||||||
|
255: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 256 250 16 246 11 18 256 254(samplerHeight) 102
|
||||||
|
258: TypeArray 86(fvec2) 9
|
||||||
|
259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 9
|
||||||
|
260: TypePointer Input 258
|
||||||
|
261(inUV): 260(ptr) Variable Input
|
||||||
|
262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 259 16 246 11 18 263 261(inUV) 102
|
||||||
|
264: TypePointer Input 86(fvec2)
|
||||||
|
269: 114(int) Constant 4
|
||||||
|
277: TypePointer Function 114(int)
|
||||||
|
281: 6(int) Constant 89
|
||||||
|
279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 280 116 16 281 11 53 20
|
||||||
|
289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
292: 114(int) Constant 3
|
||||||
|
294: TypePointer Uniform 26(fvec4)
|
||||||
|
298: 23(float) Constant 1090519040
|
||||||
|
300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
305: 46(bool) ConstantFalse
|
||||||
|
310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
321: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
325: TypeArray 23(float) 21
|
||||||
|
326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21
|
||||||
|
327: TypePointer Output 325
|
||||||
|
328(gl_TessLevelInner): 327(ptr) Variable Output
|
||||||
|
331: 6(int) Constant 104
|
||||||
|
329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 330 326 16 331 11 18 330 328(gl_TessLevelInner) 102
|
||||||
|
332: TypePointer Output 23(float)
|
||||||
|
335: TypeArray 23(float) 20
|
||||||
|
336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20
|
||||||
|
337: TypePointer Output 335
|
||||||
|
338(gl_TessLevelOuter): 337(ptr) Variable Output
|
||||||
|
341: 6(int) Constant 106
|
||||||
|
339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 340 336 16 341 11 18 340 338(gl_TessLevelOuter) 102
|
||||||
|
344: 114(int) Constant 2
|
||||||
|
350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
|
||||||
|
405(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213
|
||||||
|
407: 6(int) Constant 110
|
||||||
|
406: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 407 11 11 12
|
||||||
|
409: 6(int) Constant 128
|
||||||
|
408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 409 11 11 12
|
||||||
|
411: 6(int) Constant 171
|
||||||
|
410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12
|
||||||
|
412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12
|
||||||
|
414: 6(int) Constant 137
|
||||||
|
413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 414 11 18 227 11 12 406 408 410 412
|
||||||
|
415: TypeArray 405(gl_PerVertex) 20
|
||||||
|
416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 413 20
|
||||||
|
417: TypePointer Output 415
|
||||||
|
418(gl_out): 417(ptr) Variable Output
|
||||||
|
419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 420 416 16 414 11 18 420 418(gl_out) 102
|
||||||
|
425: TypePointer Output 26(fvec4)
|
||||||
|
427: TypeArray 133(fvec3) 20
|
||||||
|
428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 20
|
||||||
|
429: TypePointer Output 427
|
||||||
|
430(outNormal): 429(ptr) Variable Output
|
||||||
|
433: 6(int) Constant 138
|
||||||
|
431: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 432 428 16 433 11 18 432 430(outNormal) 102
|
||||||
|
435: TypeArray 133(fvec3) 9
|
||||||
|
436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 9
|
||||||
|
437: TypePointer Input 435
|
||||||
|
438(inNormal): 437(ptr) Variable Input
|
||||||
|
439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 440 436 16 433 11 18 440 438(inNormal) 102
|
||||||
|
442: TypePointer Input 133(fvec3)
|
||||||
|
445: TypePointer Output 133(fvec3)
|
||||||
|
447: TypeArray 86(fvec2) 20
|
||||||
|
448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 20
|
||||||
|
449: TypePointer Output 447
|
||||||
|
450(outUV): 449(ptr) Variable Output
|
||||||
|
453: 6(int) Constant 139
|
||||||
|
451: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 452 448 16 453 11 18 452 450(outUV) 102
|
||||||
|
458: TypePointer Output 86(fvec2)
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
354(param): 28(ptr) Variable Function
|
||||||
|
357(param): 28(ptr) Variable Function
|
||||||
|
362(param): 28(ptr) Variable Function
|
||||||
|
365(param): 28(ptr) Variable Function
|
||||||
|
370(param): 28(ptr) Variable Function
|
||||||
|
373(param): 28(ptr) Variable Function
|
||||||
|
378(param): 28(ptr) Variable Function
|
||||||
|
381(param): 28(ptr) Variable Function
|
||||||
|
313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
314: 114(int) Load 235(gl_InvocationID)
|
||||||
|
316: 46(bool) IEqual 314 128
|
||||||
|
SelectionMerge 318 None
|
||||||
|
BranchConditional 316 317 318
|
||||||
|
317: Label
|
||||||
|
319: 46(bool) FunctionCall 51(frustumCheck()
|
||||||
|
322: 46(bool) LogicalNot 319
|
||||||
|
SelectionMerge 324 None
|
||||||
|
BranchConditional 322 323 347
|
||||||
|
323: Label
|
||||||
|
333: 332(ptr) AccessChain 328(gl_TessLevelInner) 128
|
||||||
|
Store 333 135
|
||||||
|
334: 332(ptr) AccessChain 328(gl_TessLevelInner) 117
|
||||||
|
Store 334 135
|
||||||
|
342: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128
|
||||||
|
Store 342 135
|
||||||
|
343: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117
|
||||||
|
Store 343 135
|
||||||
|
345: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344
|
||||||
|
Store 345 135
|
||||||
|
346: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292
|
||||||
|
Store 346 135
|
||||||
|
Branch 324
|
||||||
|
347: Label
|
||||||
|
348: 195(ptr) AccessChain 111(ubo) 199
|
||||||
|
349: 23(float) Load 348
|
||||||
|
351: 46(bool) FOrdGreaterThan 349 135
|
||||||
|
SelectionMerge 353 None
|
||||||
|
BranchConditional 351 352 398
|
||||||
|
352: Label
|
||||||
|
355: 239(ptr) AccessChain 231(gl_in) 292 128
|
||||||
|
356: 26(fvec4) Load 355
|
||||||
|
Store 354(param) 356
|
||||||
|
358: 239(ptr) AccessChain 231(gl_in) 128 128
|
||||||
|
359: 26(fvec4) Load 358
|
||||||
|
Store 357(param) 359
|
||||||
|
360: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 354(param) 357(param)
|
||||||
|
361: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128
|
||||||
|
Store 361 360
|
||||||
|
363: 239(ptr) AccessChain 231(gl_in) 128 128
|
||||||
|
364: 26(fvec4) Load 363
|
||||||
|
Store 362(param) 364
|
||||||
|
366: 239(ptr) AccessChain 231(gl_in) 117 128
|
||||||
|
367: 26(fvec4) Load 366
|
||||||
|
Store 365(param) 367
|
||||||
|
368: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 362(param) 365(param)
|
||||||
|
369: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117
|
||||||
|
Store 369 368
|
||||||
|
371: 239(ptr) AccessChain 231(gl_in) 117 128
|
||||||
|
372: 26(fvec4) Load 371
|
||||||
|
Store 370(param) 372
|
||||||
|
374: 239(ptr) AccessChain 231(gl_in) 344 128
|
||||||
|
375: 26(fvec4) Load 374
|
||||||
|
Store 373(param) 375
|
||||||
|
376: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 370(param) 373(param)
|
||||||
|
377: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344
|
||||||
|
Store 377 376
|
||||||
|
379: 239(ptr) AccessChain 231(gl_in) 344 128
|
||||||
|
380: 26(fvec4) Load 379
|
||||||
|
Store 378(param) 380
|
||||||
|
382: 239(ptr) AccessChain 231(gl_in) 292 128
|
||||||
|
383: 26(fvec4) Load 382
|
||||||
|
Store 381(param) 383
|
||||||
|
384: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 378(param) 381(param)
|
||||||
|
385: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292
|
||||||
|
Store 385 384
|
||||||
|
386: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128
|
||||||
|
387: 23(float) Load 386
|
||||||
|
388: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292
|
||||||
|
389: 23(float) Load 388
|
||||||
|
390: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 387 389 60
|
||||||
|
391: 332(ptr) AccessChain 328(gl_TessLevelInner) 128
|
||||||
|
Store 391 390
|
||||||
|
392: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344
|
||||||
|
393: 23(float) Load 392
|
||||||
|
394: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117
|
||||||
|
395: 23(float) Load 394
|
||||||
|
396: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 393 395 60
|
||||||
|
397: 332(ptr) AccessChain 328(gl_TessLevelInner) 117
|
||||||
|
Store 397 396
|
||||||
|
Branch 353
|
||||||
|
398: Label
|
||||||
|
399: 332(ptr) AccessChain 328(gl_TessLevelInner) 128
|
||||||
|
Store 399 203
|
||||||
|
400: 332(ptr) AccessChain 328(gl_TessLevelInner) 117
|
||||||
|
Store 400 203
|
||||||
|
401: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128
|
||||||
|
Store 401 203
|
||||||
|
402: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117
|
||||||
|
Store 402 203
|
||||||
|
403: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344
|
||||||
|
Store 403 203
|
||||||
|
404: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292
|
||||||
|
Store 404 203
|
||||||
|
Branch 353
|
||||||
|
353: Label
|
||||||
|
Branch 324
|
||||||
|
324: Label
|
||||||
|
Branch 318
|
||||||
|
318: Label
|
||||||
|
421: 114(int) Load 235(gl_InvocationID)
|
||||||
|
422: 114(int) Load 235(gl_InvocationID)
|
||||||
|
423: 239(ptr) AccessChain 231(gl_in) 422 128
|
||||||
|
424: 26(fvec4) Load 423
|
||||||
|
426: 425(ptr) AccessChain 418(gl_out) 421 128
|
||||||
|
Store 426 424
|
||||||
|
434: 114(int) Load 235(gl_InvocationID)
|
||||||
|
441: 114(int) Load 235(gl_InvocationID)
|
||||||
|
443: 442(ptr) AccessChain 438(inNormal) 441
|
||||||
|
444: 133(fvec3) Load 443
|
||||||
|
446: 445(ptr) AccessChain 430(outNormal) 434
|
||||||
|
Store 446 444
|
||||||
|
454: 114(int) Load 235(gl_InvocationID)
|
||||||
|
455: 114(int) Load 235(gl_InvocationID)
|
||||||
|
456: 264(ptr) AccessChain 261(inUV) 455
|
||||||
|
457: 86(fvec2) Load 456
|
||||||
|
459: 458(ptr) AccessChain 450(outUV) 454
|
||||||
|
Store 459 457
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
33(screenSpaceTessFactor(vf4;vf4;): 23(float) Function None 29
|
||||||
|
31(p0): 28(ptr) FunctionParameter
|
||||||
|
32(p1): 28(ptr) FunctionParameter
|
||||||
|
36: Label
|
||||||
|
56(midPoint): 28(ptr) Variable Function
|
||||||
|
67(radius): 66(ptr) Variable Function
|
||||||
|
77(v0): 28(ptr) Variable Function
|
||||||
|
124(clip0): 28(ptr) Variable Function
|
||||||
|
144(clip1): 28(ptr) Variable Function
|
||||||
|
37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 35
|
||||||
|
38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
|
||||||
|
41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 39 31(p0) 42
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 43 32(p1) 42
|
||||||
|
55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 35 33(screenSpaceTessFactor(vf4;vf4;)
|
||||||
|
61: 26(fvec4) Load 31(p0)
|
||||||
|
62: 26(fvec4) Load 32(p1)
|
||||||
|
63: 26(fvec4) FAdd 61 62
|
||||||
|
64: 26(fvec4) VectorTimesScalar 63 60
|
||||||
|
Store 56(midPoint) 64
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 57 64 42
|
||||||
|
71: 26(fvec4) Load 31(p0)
|
||||||
|
72: 26(fvec4) Load 32(p1)
|
||||||
|
73: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 71 72
|
||||||
|
75: 23(float) FDiv 73 74
|
||||||
|
Store 67(radius) 75
|
||||||
|
76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 68 75 42
|
||||||
|
119: 118(ptr) AccessChain 111(ubo) 117
|
||||||
|
120: 81 Load 119
|
||||||
|
121: 26(fvec4) Load 56(midPoint)
|
||||||
|
122: 26(fvec4) MatrixTimesVector 120 121
|
||||||
|
Store 77(v0) 122
|
||||||
|
123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 78 122 42
|
||||||
|
129: 118(ptr) AccessChain 111(ubo) 128
|
||||||
|
130: 81 Load 129
|
||||||
|
131: 26(fvec4) Load 77(v0)
|
||||||
|
132: 23(float) Load 67(radius)
|
||||||
|
137: 23(float) CompositeExtract 136 0
|
||||||
|
138: 23(float) CompositeExtract 136 1
|
||||||
|
139: 23(float) CompositeExtract 136 2
|
||||||
|
140: 26(fvec4) CompositeConstruct 132 137 138 139
|
||||||
|
141: 26(fvec4) FSub 131 140
|
||||||
|
142: 26(fvec4) MatrixTimesVector 130 141
|
||||||
|
Store 124(clip0) 142
|
||||||
|
143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 142 42
|
||||||
|
148: 118(ptr) AccessChain 111(ubo) 128
|
||||||
|
149: 81 Load 148
|
||||||
|
150: 26(fvec4) Load 77(v0)
|
||||||
|
151: 23(float) Load 67(radius)
|
||||||
|
152: 23(float) CompositeExtract 136 0
|
||||||
|
153: 23(float) CompositeExtract 136 1
|
||||||
|
154: 23(float) CompositeExtract 136 2
|
||||||
|
155: 26(fvec4) CompositeConstruct 151 152 153 154
|
||||||
|
156: 26(fvec4) FAdd 150 155
|
||||||
|
157: 26(fvec4) MatrixTimesVector 149 156
|
||||||
|
Store 144(clip1) 157
|
||||||
|
158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 157 42
|
||||||
|
159: 66(ptr) AccessChain 124(clip0) 12
|
||||||
|
160: 23(float) Load 159
|
||||||
|
161: 26(fvec4) Load 124(clip0)
|
||||||
|
162: 26(fvec4) CompositeConstruct 160 160 160 160
|
||||||
|
163: 26(fvec4) FDiv 161 162
|
||||||
|
Store 124(clip0) 163
|
||||||
|
164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 163 42
|
||||||
|
165: 66(ptr) AccessChain 144(clip1) 12
|
||||||
|
166: 23(float) Load 165
|
||||||
|
167: 26(fvec4) Load 144(clip1)
|
||||||
|
168: 26(fvec4) CompositeConstruct 166 166 166 166
|
||||||
|
169: 26(fvec4) FDiv 167 168
|
||||||
|
Store 144(clip1) 169
|
||||||
|
170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 169 42
|
||||||
|
173: 172(ptr) AccessChain 111(ubo) 171
|
||||||
|
174: 86(fvec2) Load 173
|
||||||
|
175: 26(fvec4) Load 124(clip0)
|
||||||
|
176: 86(fvec2) VectorShuffle 175 175 0 1
|
||||||
|
177: 86(fvec2) FMul 176 174
|
||||||
|
178: 66(ptr) AccessChain 124(clip0) 11
|
||||||
|
179: 23(float) CompositeExtract 177 0
|
||||||
|
Store 178 179
|
||||||
|
180: 66(ptr) AccessChain 124(clip0) 19
|
||||||
|
181: 23(float) CompositeExtract 177 1
|
||||||
|
Store 180 181
|
||||||
|
182: 172(ptr) AccessChain 111(ubo) 171
|
||||||
|
183: 86(fvec2) Load 182
|
||||||
|
184: 26(fvec4) Load 144(clip1)
|
||||||
|
185: 86(fvec2) VectorShuffle 184 184 0 1
|
||||||
|
186: 86(fvec2) FMul 185 183
|
||||||
|
187: 66(ptr) AccessChain 144(clip1) 11
|
||||||
|
188: 23(float) CompositeExtract 186 0
|
||||||
|
Store 187 188
|
||||||
|
189: 66(ptr) AccessChain 144(clip1) 19
|
||||||
|
190: 23(float) CompositeExtract 186 1
|
||||||
|
Store 189 190
|
||||||
|
191: 26(fvec4) Load 124(clip0)
|
||||||
|
192: 26(fvec4) Load 144(clip1)
|
||||||
|
193: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 191 192
|
||||||
|
196: 195(ptr) AccessChain 111(ubo) 194
|
||||||
|
197: 23(float) Load 196
|
||||||
|
198: 23(float) FDiv 193 197
|
||||||
|
200: 195(ptr) AccessChain 111(ubo) 199
|
||||||
|
201: 23(float) Load 200
|
||||||
|
202: 23(float) FMul 198 201
|
||||||
|
205: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 202 203 204
|
||||||
|
ReturnValue 205
|
||||||
|
FunctionEnd
|
||||||
|
51(frustumCheck(): 46(bool) Function None 49
|
||||||
|
54: Label
|
||||||
|
209(pos): 28(ptr) Variable Function
|
||||||
|
278(i): 277(ptr) Variable Function
|
||||||
|
208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck()
|
||||||
|
238: 114(int) Load 235(gl_InvocationID)
|
||||||
|
240: 239(ptr) AccessChain 231(gl_in) 238 128
|
||||||
|
241: 26(fvec4) Load 240
|
||||||
|
Store 209(pos) 241
|
||||||
|
242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 210 241 42
|
||||||
|
257: 249 Load 254(samplerHeight)
|
||||||
|
265: 264(ptr) AccessChain 261(inUV) 128
|
||||||
|
266: 86(fvec2) Load 265
|
||||||
|
267: 26(fvec4) ImageSampleExplicitLod 257 266 Lod 135
|
||||||
|
268: 23(float) CompositeExtract 267 0
|
||||||
|
270: 195(ptr) AccessChain 111(ubo) 269
|
||||||
|
271: 23(float) Load 270
|
||||||
|
272: 23(float) FMul 268 271
|
||||||
|
273: 66(ptr) AccessChain 209(pos) 19
|
||||||
|
274: 23(float) Load 273
|
||||||
|
275: 23(float) FSub 274 272
|
||||||
|
276: 66(ptr) AccessChain 209(pos) 19
|
||||||
|
Store 276 275
|
||||||
|
Store 278(i) 128
|
||||||
|
282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 128 42
|
||||||
|
Branch 283
|
||||||
|
283: Label
|
||||||
|
LoopMerge 285 286 None
|
||||||
|
Branch 287
|
||||||
|
287: Label
|
||||||
|
288: 114(int) Load 278(i)
|
||||||
|
290: 46(bool) SLessThan 288 171
|
||||||
|
BranchConditional 290 284 285
|
||||||
|
284: Label
|
||||||
|
291: 26(fvec4) Load 209(pos)
|
||||||
|
293: 114(int) Load 278(i)
|
||||||
|
295: 294(ptr) AccessChain 111(ubo) 292 293
|
||||||
|
296: 26(fvec4) Load 295
|
||||||
|
297: 23(float) Dot 291 296
|
||||||
|
299: 23(float) FAdd 297 298
|
||||||
|
301: 46(bool) FOrdLessThan 299 135
|
||||||
|
SelectionMerge 303 None
|
||||||
|
BranchConditional 301 302 303
|
||||||
|
302: Label
|
||||||
|
ReturnValue 305
|
||||||
|
303: Label
|
||||||
|
Branch 286
|
||||||
|
286: Label
|
||||||
|
307: 114(int) Load 278(i)
|
||||||
|
308: 114(int) IAdd 307 117
|
||||||
|
Store 278(i) 308
|
||||||
|
309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 308 42
|
||||||
|
Branch 283
|
||||||
|
285: Label
|
||||||
|
ReturnValue 83
|
||||||
|
FunctionEnd
|
421
Test/baseResults/spv.debuginfo.glsl.tese.out
Normal file
421
Test/baseResults/spv.debuginfo.glsl.tese.out
Normal file
@ -0,0 +1,421 @@
|
|||||||
|
spv.debuginfo.glsl.tese
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 315
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationEvaluation 13 "main" 37 54 80 98 124 159 267 279 286 297 303
|
||||||
|
ExecutionMode 13 Quads
|
||||||
|
ExecutionMode 13 SpacingEqual
|
||||||
|
ExecutionMode 13 VertexOrderCw
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
25: String "float"
|
||||||
|
32: String "uv1"
|
||||||
|
39: String "inUV"
|
||||||
|
42: String "int"
|
||||||
|
56: String "gl_TessCoord"
|
||||||
|
66: String "uv2"
|
||||||
|
82: String "outUV"
|
||||||
|
93: String "n1"
|
||||||
|
100: String "inNormal"
|
||||||
|
112: String "n2"
|
||||||
|
126: String "outNormal"
|
||||||
|
139: String "pos1"
|
||||||
|
145: String "gl_Position"
|
||||||
|
148: String "gl_PointSize"
|
||||||
|
151: String "gl_CullDistance"
|
||||||
|
155: String "gl_PerVertex"
|
||||||
|
161: String "gl_in"
|
||||||
|
174: String "pos2"
|
||||||
|
187: String "pos"
|
||||||
|
198: String "type.2d.image"
|
||||||
|
200: String "@type.2d.image"
|
||||||
|
204: String "type.sampled.image"
|
||||||
|
205: String "@type.sampled.image"
|
||||||
|
209: String "displacementMap"
|
||||||
|
223: String "modelview"
|
||||||
|
228: String "lightPos"
|
||||||
|
231: String "frustumPlanes"
|
||||||
|
233: String "tessellatedEdgeSize"
|
||||||
|
237: String "viewportDim"
|
||||||
|
241: String "UBO"
|
||||||
|
245: String "ubo"
|
||||||
|
281: String "outViewVec"
|
||||||
|
288: String "outLightVec"
|
||||||
|
299: String "outWorldPos"
|
||||||
|
305: String "outEyePos"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 30 "uv1"
|
||||||
|
Name 37 "inUV"
|
||||||
|
Name 54 "gl_TessCoord"
|
||||||
|
Name 64 "uv2"
|
||||||
|
Name 80 "outUV"
|
||||||
|
Name 91 "n1"
|
||||||
|
Name 98 "inNormal"
|
||||||
|
Name 110 "n2"
|
||||||
|
Name 124 "outNormal"
|
||||||
|
Name 137 "pos1"
|
||||||
|
Name 143 "gl_PerVertex"
|
||||||
|
MemberName 143(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 143(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 143(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 143(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 159 "gl_in"
|
||||||
|
Name 172 "pos2"
|
||||||
|
Name 185 "pos"
|
||||||
|
Name 207 "displacementMap"
|
||||||
|
Name 221 "UBO"
|
||||||
|
MemberName 221(UBO) 0 "projection"
|
||||||
|
MemberName 221(UBO) 1 "modelview"
|
||||||
|
MemberName 221(UBO) 2 "lightPos"
|
||||||
|
MemberName 221(UBO) 3 "frustumPlanes"
|
||||||
|
MemberName 221(UBO) 4 "displacementFactor"
|
||||||
|
MemberName 221(UBO) 5 "tessellationFactor"
|
||||||
|
MemberName 221(UBO) 6 "viewportDim"
|
||||||
|
MemberName 221(UBO) 7 "tessellatedEdgeSize"
|
||||||
|
Name 243 "ubo"
|
||||||
|
Name 256 "gl_PerVertex"
|
||||||
|
MemberName 256(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 256(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 256(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 256(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 267 ""
|
||||||
|
Name 279 "outViewVec"
|
||||||
|
Name 286 "outLightVec"
|
||||||
|
Name 297 "outWorldPos"
|
||||||
|
Name 303 "outEyePos"
|
||||||
|
Decorate 37(inUV) Location 1
|
||||||
|
Decorate 54(gl_TessCoord) BuiltIn TessCoord
|
||||||
|
Decorate 80(outUV) Location 1
|
||||||
|
Decorate 98(inNormal) Location 0
|
||||||
|
Decorate 124(outNormal) Location 0
|
||||||
|
MemberDecorate 143(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 143(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 143(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 143(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 143(gl_PerVertex) Block
|
||||||
|
Decorate 207(displacementMap) DescriptorSet 0
|
||||||
|
Decorate 207(displacementMap) Binding 1
|
||||||
|
Decorate 219 ArrayStride 16
|
||||||
|
MemberDecorate 221(UBO) 0 ColMajor
|
||||||
|
MemberDecorate 221(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 221(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 221(UBO) 1 ColMajor
|
||||||
|
MemberDecorate 221(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 221(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 221(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 221(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 221(UBO) 4 Offset 240
|
||||||
|
MemberDecorate 221(UBO) 5 Offset 244
|
||||||
|
MemberDecorate 221(UBO) 6 Offset 248
|
||||||
|
MemberDecorate 221(UBO) 7 Offset 256
|
||||||
|
Decorate 221(UBO) Block
|
||||||
|
Decorate 243(ubo) DescriptorSet 0
|
||||||
|
Decorate 243(ubo) Binding 0
|
||||||
|
MemberDecorate 256(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 256(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 256(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 256(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 256(gl_PerVertex) Block
|
||||||
|
Decorate 279(outViewVec) Location 2
|
||||||
|
Decorate 286(outLightVec) Location 3
|
||||||
|
Decorate 297(outWorldPos) Location 5
|
||||||
|
Decorate 303(outEyePos) Location 4
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
24: TypeFloat 32
|
||||||
|
26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11
|
||||||
|
27: TypeVector 24(float) 2
|
||||||
|
28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21
|
||||||
|
29: TypePointer Function 27(fvec2)
|
||||||
|
33: 6(int) Constant 56
|
||||||
|
31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 32 28 16 33 11 15 20
|
||||||
|
34: TypeArray 27(fvec2) 9
|
||||||
|
35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9
|
||||||
|
36: TypePointer Input 34
|
||||||
|
37(inUV): 36(ptr) Variable Input
|
||||||
|
40: 6(int) Constant 8
|
||||||
|
38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 39 35 16 33 11 18 39 37(inUV) 40
|
||||||
|
41: TypeInt 32 1
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 42 9 20 11
|
||||||
|
44: 41(int) Constant 0
|
||||||
|
45: TypePointer Input 27(fvec2)
|
||||||
|
48: 41(int) Constant 1
|
||||||
|
51: TypeVector 24(float) 3
|
||||||
|
52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12
|
||||||
|
53: TypePointer Input 51(fvec3)
|
||||||
|
54(gl_TessCoord): 53(ptr) Variable Input
|
||||||
|
55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 56 52 16 33 11 18 56 54(gl_TessCoord) 40
|
||||||
|
57: TypePointer Input 24(float)
|
||||||
|
63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
67: 6(int) Constant 57
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 28 16 67 11 15 20
|
||||||
|
68: 41(int) Constant 3
|
||||||
|
71: 41(int) Constant 2
|
||||||
|
79: TypePointer Output 27(fvec2)
|
||||||
|
80(outUV): 79(ptr) Variable Output
|
||||||
|
83: 6(int) Constant 58
|
||||||
|
81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 40
|
||||||
|
90: TypePointer Function 51(fvec3)
|
||||||
|
94: 6(int) Constant 60
|
||||||
|
92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 52 16 94 11 15 20
|
||||||
|
95: TypeArray 51(fvec3) 9
|
||||||
|
96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 52 9
|
||||||
|
97: TypePointer Input 95
|
||||||
|
98(inNormal): 97(ptr) Variable Input
|
||||||
|
99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 96 16 94 11 18 100 98(inNormal) 40
|
||||||
|
113: 6(int) Constant 61
|
||||||
|
111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 52 16 113 11 15 20
|
||||||
|
123: TypePointer Output 51(fvec3)
|
||||||
|
124(outNormal): 123(ptr) Variable Output
|
||||||
|
127: 6(int) Constant 62
|
||||||
|
125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 52 16 127 11 18 126 124(outNormal) 40
|
||||||
|
134: TypeVector 24(float) 4
|
||||||
|
135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20
|
||||||
|
136: TypePointer Function 134(fvec4)
|
||||||
|
140: 6(int) Constant 65
|
||||||
|
138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 135 16 140 11 15 20
|
||||||
|
141: TypeArray 24(float) 19
|
||||||
|
142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19
|
||||||
|
143(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141
|
||||||
|
146: 6(int) Constant 1756
|
||||||
|
144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 146 11 11 12
|
||||||
|
149: 6(int) Constant 1774
|
||||||
|
147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 149 11 11 12
|
||||||
|
152: 6(int) Constant 1817
|
||||||
|
150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12
|
||||||
|
153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12
|
||||||
|
154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 140 11 18 155 11 12 144 147 150 153
|
||||||
|
156: TypeArray 143(gl_PerVertex) 9
|
||||||
|
157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 154 9
|
||||||
|
158: TypePointer Input 156
|
||||||
|
159(gl_in): 158(ptr) Variable Input
|
||||||
|
160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 161 157 16 140 11 18 161 159(gl_in) 40
|
||||||
|
162: TypePointer Input 134(fvec4)
|
||||||
|
175: 6(int) Constant 66
|
||||||
|
173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 174 135 16 175 11 15 20
|
||||||
|
188: 6(int) Constant 67
|
||||||
|
186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 135 16 188 11 15 20
|
||||||
|
196: TypeImage 24(float) 2D sampled format:Unknown
|
||||||
|
199: 6(int) Constant 69
|
||||||
|
201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
|
||||||
|
197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 198 11 16 199 11 18 200 201 12
|
||||||
|
202: TypeSampledImage 196
|
||||||
|
203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 204 11 16 199 11 18 205 201 12
|
||||||
|
206: TypePointer UniformConstant 202
|
||||||
|
207(displacementMap): 206(ptr) Variable UniformConstant
|
||||||
|
208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 40
|
||||||
|
212: 24(float) Constant 0
|
||||||
|
215: TypeMatrix 134(fvec4) 4
|
||||||
|
217: TypeBool
|
||||||
|
218: 217(bool) ConstantTrue
|
||||||
|
216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 135 20 218
|
||||||
|
219: TypeArray 134(fvec4) 10
|
||||||
|
220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 10
|
||||||
|
221(UBO): TypeStruct 215 215 134(fvec4) 219 24(float) 24(float) 27(fvec2) 24(float)
|
||||||
|
224: 6(int) Constant 30
|
||||||
|
225: 6(int) Constant 7
|
||||||
|
222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12
|
||||||
|
226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12
|
||||||
|
229: 6(int) Constant 31
|
||||||
|
227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 228 135 16 229 225 11 11 12
|
||||||
|
230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 231 220 16 9 225 11 11 12
|
||||||
|
234: 6(int) Constant 36
|
||||||
|
232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12
|
||||||
|
235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12
|
||||||
|
238: 6(int) Constant 35
|
||||||
|
236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 237 28 16 238 225 11 11 12
|
||||||
|
239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12
|
||||||
|
240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239
|
||||||
|
242: TypePointer Uniform 221(UBO)
|
||||||
|
243(ubo): 242(ptr) Variable Uniform
|
||||||
|
244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 40
|
||||||
|
246: 41(int) Constant 4
|
||||||
|
247: TypePointer Uniform 24(float)
|
||||||
|
251: TypePointer Function 24(float)
|
||||||
|
256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141
|
||||||
|
258: 6(int) Constant 165
|
||||||
|
257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 258 11 11 12
|
||||||
|
260: 6(int) Constant 183
|
||||||
|
259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 260 11 11 12
|
||||||
|
262: 6(int) Constant 226
|
||||||
|
261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12
|
||||||
|
263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12
|
||||||
|
265: 6(int) Constant 71
|
||||||
|
264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 265 11 18 155 11 12 257 259 261 263
|
||||||
|
266: TypePointer Output 256(gl_PerVertex)
|
||||||
|
267: 266(ptr) Variable Output
|
||||||
|
268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 40
|
||||||
|
269: TypePointer Uniform 215
|
||||||
|
277: TypePointer Output 134(fvec4)
|
||||||
|
279(outViewVec): 123(ptr) Variable Output
|
||||||
|
282: 6(int) Constant 74
|
||||||
|
280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 52 16 282 11 18 281 279(outViewVec) 40
|
||||||
|
286(outLightVec): 123(ptr) Variable Output
|
||||||
|
289: 6(int) Constant 75
|
||||||
|
287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 52 16 289 11 18 288 286(outLightVec) 40
|
||||||
|
290: TypePointer Uniform 134(fvec4)
|
||||||
|
297(outWorldPos): 123(ptr) Variable Output
|
||||||
|
300: 6(int) Constant 76
|
||||||
|
298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 52 16 300 11 18 299 297(outWorldPos) 40
|
||||||
|
303(outEyePos): 123(ptr) Variable Output
|
||||||
|
306: 6(int) Constant 77
|
||||||
|
304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 52 16 306 11 18 305 303(outEyePos) 40
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
30(uv1): 29(ptr) Variable Function
|
||||||
|
64(uv2): 29(ptr) Variable Function
|
||||||
|
91(n1): 90(ptr) Variable Function
|
||||||
|
110(n2): 90(ptr) Variable Function
|
||||||
|
137(pos1): 136(ptr) Variable Function
|
||||||
|
172(pos2): 136(ptr) Variable Function
|
||||||
|
185(pos): 136(ptr) Variable Function
|
||||||
|
23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
46: 45(ptr) AccessChain 37(inUV) 44
|
||||||
|
47: 27(fvec2) Load 46
|
||||||
|
49: 45(ptr) AccessChain 37(inUV) 48
|
||||||
|
50: 27(fvec2) Load 49
|
||||||
|
58: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
59: 24(float) Load 58
|
||||||
|
60: 27(fvec2) CompositeConstruct 59 59
|
||||||
|
61: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 47 50 60
|
||||||
|
Store 30(uv1) 61
|
||||||
|
62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 31 61 63
|
||||||
|
69: 45(ptr) AccessChain 37(inUV) 68
|
||||||
|
70: 27(fvec2) Load 69
|
||||||
|
72: 45(ptr) AccessChain 37(inUV) 71
|
||||||
|
73: 27(fvec2) Load 72
|
||||||
|
74: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
75: 24(float) Load 74
|
||||||
|
76: 27(fvec2) CompositeConstruct 75 75
|
||||||
|
77: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 70 73 76
|
||||||
|
Store 64(uv2) 77
|
||||||
|
78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 77 63
|
||||||
|
84: 27(fvec2) Load 30(uv1)
|
||||||
|
85: 27(fvec2) Load 64(uv2)
|
||||||
|
86: 57(ptr) AccessChain 54(gl_TessCoord) 19
|
||||||
|
87: 24(float) Load 86
|
||||||
|
88: 27(fvec2) CompositeConstruct 87 87
|
||||||
|
89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88
|
||||||
|
Store 80(outUV) 89
|
||||||
|
101: 53(ptr) AccessChain 98(inNormal) 44
|
||||||
|
102: 51(fvec3) Load 101
|
||||||
|
103: 53(ptr) AccessChain 98(inNormal) 48
|
||||||
|
104: 51(fvec3) Load 103
|
||||||
|
105: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
106: 24(float) Load 105
|
||||||
|
107: 51(fvec3) CompositeConstruct 106 106 106
|
||||||
|
108: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 102 104 107
|
||||||
|
Store 91(n1) 108
|
||||||
|
109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 92 108 63
|
||||||
|
114: 53(ptr) AccessChain 98(inNormal) 68
|
||||||
|
115: 51(fvec3) Load 114
|
||||||
|
116: 53(ptr) AccessChain 98(inNormal) 71
|
||||||
|
117: 51(fvec3) Load 116
|
||||||
|
118: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
119: 24(float) Load 118
|
||||||
|
120: 51(fvec3) CompositeConstruct 119 119 119
|
||||||
|
121: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 115 117 120
|
||||||
|
Store 110(n2) 121
|
||||||
|
122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 111 121 63
|
||||||
|
128: 51(fvec3) Load 91(n1)
|
||||||
|
129: 51(fvec3) Load 110(n2)
|
||||||
|
130: 57(ptr) AccessChain 54(gl_TessCoord) 19
|
||||||
|
131: 24(float) Load 130
|
||||||
|
132: 51(fvec3) CompositeConstruct 131 131 131
|
||||||
|
133: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132
|
||||||
|
Store 124(outNormal) 133
|
||||||
|
163: 162(ptr) AccessChain 159(gl_in) 44 44
|
||||||
|
164: 134(fvec4) Load 163
|
||||||
|
165: 162(ptr) AccessChain 159(gl_in) 48 44
|
||||||
|
166: 134(fvec4) Load 165
|
||||||
|
167: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
168: 24(float) Load 167
|
||||||
|
169: 134(fvec4) CompositeConstruct 168 168 168 168
|
||||||
|
170: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 164 166 169
|
||||||
|
Store 137(pos1) 170
|
||||||
|
171: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 170 63
|
||||||
|
176: 162(ptr) AccessChain 159(gl_in) 68 44
|
||||||
|
177: 134(fvec4) Load 176
|
||||||
|
178: 162(ptr) AccessChain 159(gl_in) 71 44
|
||||||
|
179: 134(fvec4) Load 178
|
||||||
|
180: 57(ptr) AccessChain 54(gl_TessCoord) 11
|
||||||
|
181: 24(float) Load 180
|
||||||
|
182: 134(fvec4) CompositeConstruct 181 181 181 181
|
||||||
|
183: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 177 179 182
|
||||||
|
Store 172(pos2) 183
|
||||||
|
184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 173 183 63
|
||||||
|
189: 134(fvec4) Load 137(pos1)
|
||||||
|
190: 134(fvec4) Load 172(pos2)
|
||||||
|
191: 57(ptr) AccessChain 54(gl_TessCoord) 19
|
||||||
|
192: 24(float) Load 191
|
||||||
|
193: 134(fvec4) CompositeConstruct 192 192 192 192
|
||||||
|
194: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 189 190 193
|
||||||
|
Store 185(pos) 194
|
||||||
|
195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 186 194 63
|
||||||
|
210: 202 Load 207(displacementMap)
|
||||||
|
211: 27(fvec2) Load 80(outUV)
|
||||||
|
213: 134(fvec4) ImageSampleExplicitLod 210 211 Lod 212
|
||||||
|
214: 24(float) CompositeExtract 213 0
|
||||||
|
248: 247(ptr) AccessChain 243(ubo) 246
|
||||||
|
249: 24(float) Load 248
|
||||||
|
250: 24(float) FMul 214 249
|
||||||
|
252: 251(ptr) AccessChain 185(pos) 19
|
||||||
|
253: 24(float) Load 252
|
||||||
|
254: 24(float) FSub 253 250
|
||||||
|
255: 251(ptr) AccessChain 185(pos) 19
|
||||||
|
Store 255 254
|
||||||
|
270: 269(ptr) AccessChain 243(ubo) 44
|
||||||
|
271: 215 Load 270
|
||||||
|
272: 269(ptr) AccessChain 243(ubo) 48
|
||||||
|
273: 215 Load 272
|
||||||
|
274: 215 MatrixTimesMatrix 271 273
|
||||||
|
275: 134(fvec4) Load 185(pos)
|
||||||
|
276: 134(fvec4) MatrixTimesVector 274 275
|
||||||
|
278: 277(ptr) AccessChain 267 44
|
||||||
|
Store 278 276
|
||||||
|
283: 134(fvec4) Load 185(pos)
|
||||||
|
284: 51(fvec3) VectorShuffle 283 283 0 1 2
|
||||||
|
285: 51(fvec3) FNegate 284
|
||||||
|
Store 279(outViewVec) 285
|
||||||
|
291: 290(ptr) AccessChain 243(ubo) 71
|
||||||
|
292: 134(fvec4) Load 291
|
||||||
|
293: 51(fvec3) VectorShuffle 292 292 0 1 2
|
||||||
|
294: 51(fvec3) Load 279(outViewVec)
|
||||||
|
295: 51(fvec3) FAdd 293 294
|
||||||
|
296: 51(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295
|
||||||
|
Store 286(outLightVec) 296
|
||||||
|
301: 134(fvec4) Load 185(pos)
|
||||||
|
302: 51(fvec3) VectorShuffle 301 301 0 1 2
|
||||||
|
Store 297(outWorldPos) 302
|
||||||
|
307: 269(ptr) AccessChain 243(ubo) 48
|
||||||
|
308: 215 Load 307
|
||||||
|
309: 134(fvec4) Load 185(pos)
|
||||||
|
310: 134(fvec4) MatrixTimesVector 308 309
|
||||||
|
311: 24(float) CompositeExtract 310 0
|
||||||
|
312: 24(float) CompositeExtract 310 1
|
||||||
|
313: 24(float) CompositeExtract 310 2
|
||||||
|
314: 51(fvec3) CompositeConstruct 311 312 313
|
||||||
|
Store 303(outEyePos) 314
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
487
Test/baseResults/spv.debuginfo.glsl.vert.out
Normal file
487
Test/baseResults/spv.debuginfo.glsl.vert.out
Normal file
@ -0,0 +1,487 @@
|
|||||||
|
spv.debuginfo.glsl.vert
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 377
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 13 "main" 30 36 40 47 55 68 248 265 270 295 309 327 362 370
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
25: String "float"
|
||||||
|
32: String "outColor"
|
||||||
|
38: String "inColor"
|
||||||
|
42: String "outUV"
|
||||||
|
49: String "inUV"
|
||||||
|
52: String "int"
|
||||||
|
57: String "instanceTexIndex"
|
||||||
|
66: String "s"
|
||||||
|
70: String "instanceRot"
|
||||||
|
82: String "modelview"
|
||||||
|
87: String "lightPos"
|
||||||
|
90: String "globSpeed"
|
||||||
|
94: String "UBO"
|
||||||
|
98: String "ubo"
|
||||||
|
109: String "c"
|
||||||
|
123: String "mx"
|
||||||
|
158: String "my"
|
||||||
|
187: String "mz"
|
||||||
|
202: String "rotMat"
|
||||||
|
228: String "gRotMat"
|
||||||
|
246: String "locPos"
|
||||||
|
250: String "inPos"
|
||||||
|
261: String "pos"
|
||||||
|
267: String "instanceScale"
|
||||||
|
272: String "instancePos"
|
||||||
|
284: String "gl_Position"
|
||||||
|
287: String "gl_PointSize"
|
||||||
|
289: String "gl_CullDistance"
|
||||||
|
292: String "gl_PerVertex"
|
||||||
|
311: String "outNormal"
|
||||||
|
329: String "inNormal"
|
||||||
|
345: String "lPos"
|
||||||
|
364: String "outLightVec"
|
||||||
|
372: String "outViewVec"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 30 "outColor"
|
||||||
|
Name 36 "inColor"
|
||||||
|
Name 40 "outUV"
|
||||||
|
Name 47 "inUV"
|
||||||
|
Name 55 "instanceTexIndex"
|
||||||
|
Name 64 "s"
|
||||||
|
Name 68 "instanceRot"
|
||||||
|
Name 80 "UBO"
|
||||||
|
MemberName 80(UBO) 0 "projection"
|
||||||
|
MemberName 80(UBO) 1 "modelview"
|
||||||
|
MemberName 80(UBO) 2 "lightPos"
|
||||||
|
MemberName 80(UBO) 3 "locSpeed"
|
||||||
|
MemberName 80(UBO) 4 "globSpeed"
|
||||||
|
Name 96 "ubo"
|
||||||
|
Name 107 "c"
|
||||||
|
Name 121 "mx"
|
||||||
|
Name 156 "my"
|
||||||
|
Name 185 "mz"
|
||||||
|
Name 200 "rotMat"
|
||||||
|
Name 226 "gRotMat"
|
||||||
|
Name 244 "locPos"
|
||||||
|
Name 248 "inPos"
|
||||||
|
Name 259 "pos"
|
||||||
|
Name 265 "instanceScale"
|
||||||
|
Name 270 "instancePos"
|
||||||
|
Name 282 "gl_PerVertex"
|
||||||
|
MemberName 282(gl_PerVertex) 0 "gl_Position"
|
||||||
|
MemberName 282(gl_PerVertex) 1 "gl_PointSize"
|
||||||
|
MemberName 282(gl_PerVertex) 2 "gl_ClipDistance"
|
||||||
|
MemberName 282(gl_PerVertex) 3 "gl_CullDistance"
|
||||||
|
Name 295 ""
|
||||||
|
Name 309 "outNormal"
|
||||||
|
Name 327 "inNormal"
|
||||||
|
Name 343 "lPos"
|
||||||
|
Name 362 "outLightVec"
|
||||||
|
Name 370 "outViewVec"
|
||||||
|
Decorate 30(outColor) Location 1
|
||||||
|
Decorate 36(inColor) Location 3
|
||||||
|
Decorate 40(outUV) Location 2
|
||||||
|
Decorate 47(inUV) Location 2
|
||||||
|
Decorate 55(instanceTexIndex) Location 7
|
||||||
|
Decorate 68(instanceRot) Location 5
|
||||||
|
MemberDecorate 80(UBO) 0 ColMajor
|
||||||
|
MemberDecorate 80(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 80(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 80(UBO) 1 ColMajor
|
||||||
|
MemberDecorate 80(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 80(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 80(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 80(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 80(UBO) 4 Offset 148
|
||||||
|
Decorate 80(UBO) Block
|
||||||
|
Decorate 96(ubo) DescriptorSet 0
|
||||||
|
Decorate 96(ubo) Binding 0
|
||||||
|
Decorate 248(inPos) Location 0
|
||||||
|
Decorate 265(instanceScale) Location 6
|
||||||
|
Decorate 270(instancePos) Location 4
|
||||||
|
MemberDecorate 282(gl_PerVertex) 0 BuiltIn Position
|
||||||
|
MemberDecorate 282(gl_PerVertex) 1 BuiltIn PointSize
|
||||||
|
MemberDecorate 282(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||||
|
MemberDecorate 282(gl_PerVertex) 3 BuiltIn CullDistance
|
||||||
|
Decorate 282(gl_PerVertex) Block
|
||||||
|
Decorate 309(outNormal) Location 0
|
||||||
|
Decorate 327(inNormal) Location 1
|
||||||
|
Decorate 362(outLightVec) Location 4
|
||||||
|
Decorate 370(outViewVec) Location 3
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
24: TypeFloat 32
|
||||||
|
26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11
|
||||||
|
27: TypeVector 24(float) 3
|
||||||
|
28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12
|
||||||
|
29: TypePointer Output 27(fvec3)
|
||||||
|
30(outColor): 29(ptr) Variable Output
|
||||||
|
33: 6(int) Constant 56
|
||||||
|
34: 6(int) Constant 8
|
||||||
|
31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 32 28 16 33 11 18 32 30(outColor) 34
|
||||||
|
35: TypePointer Input 27(fvec3)
|
||||||
|
36(inColor): 35(ptr) Variable Input
|
||||||
|
37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 38 28 16 33 11 18 38 36(inColor) 34
|
||||||
|
40(outUV): 29(ptr) Variable Output
|
||||||
|
43: 6(int) Constant 57
|
||||||
|
41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 42 28 16 43 11 18 42 40(outUV) 34
|
||||||
|
44: TypeVector 24(float) 2
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21
|
||||||
|
46: TypePointer Input 44(fvec2)
|
||||||
|
47(inUV): 46(ptr) Variable Input
|
||||||
|
48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 49 45 16 43 11 18 49 47(inUV) 34
|
||||||
|
51: TypeInt 32 1
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 52 9 20 11
|
||||||
|
54: TypePointer Input 51(int)
|
||||||
|
55(instanceTexIndex): 54(ptr) Variable Input
|
||||||
|
56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 57 53 16 43 11 18 57 55(instanceTexIndex) 34
|
||||||
|
63: TypePointer Function 24(float)
|
||||||
|
67: 6(int) Constant 62
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 26 16 67 11 15 20
|
||||||
|
68(instanceRot): 35(ptr) Variable Input
|
||||||
|
69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 70 28 16 67 11 18 70 68(instanceRot) 34
|
||||||
|
71: TypePointer Input 24(float)
|
||||||
|
74: TypeVector 24(float) 4
|
||||||
|
75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20
|
||||||
|
76: TypeMatrix 74(fvec4) 4
|
||||||
|
78: TypeBool
|
||||||
|
79: 78(bool) ConstantTrue
|
||||||
|
77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 75 20 79
|
||||||
|
80(UBO): TypeStruct 76 76 74(fvec4) 24(float) 24(float)
|
||||||
|
83: 6(int) Constant 42
|
||||||
|
84: 6(int) Constant 7
|
||||||
|
81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12
|
||||||
|
85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12
|
||||||
|
88: 6(int) Constant 43
|
||||||
|
86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 75 16 88 84 11 11 12
|
||||||
|
91: 6(int) Constant 45
|
||||||
|
89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12
|
||||||
|
92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12
|
||||||
|
93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 94 19 16 67 11 18 94 11 12 81 85 86 89 92
|
||||||
|
95: TypePointer Uniform 80(UBO)
|
||||||
|
96(ubo): 95(ptr) Variable Uniform
|
||||||
|
97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 98 93 16 67 11 18 98 96(ubo) 34
|
||||||
|
99: 51(int) Constant 3
|
||||||
|
100: TypePointer Uniform 24(float)
|
||||||
|
106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
110: 6(int) Constant 63
|
||||||
|
108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 26 16 110 11 15 20
|
||||||
|
118: TypeMatrix 27(fvec3) 3
|
||||||
|
119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 79
|
||||||
|
120: TypePointer Function 118
|
||||||
|
124: 6(int) Constant 65
|
||||||
|
122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 123 119 16 124 11 15 20
|
||||||
|
125: 51(int) Constant 0
|
||||||
|
128: 24(float) Constant 0
|
||||||
|
130: TypePointer Function 27(fvec3)
|
||||||
|
132: 51(int) Constant 1
|
||||||
|
138: 51(int) Constant 2
|
||||||
|
139: 24(float) Constant 1065353216
|
||||||
|
140: 27(fvec3) ConstantComposite 128 128 139
|
||||||
|
159: 6(int) Constant 73
|
||||||
|
157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 158 119 16 159 11 15 20
|
||||||
|
164: 27(fvec3) ConstantComposite 128 139 128
|
||||||
|
188: 6(int) Constant 81
|
||||||
|
186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 119 16 188 11 15 20
|
||||||
|
189: 27(fvec3) ConstantComposite 139 128 128
|
||||||
|
203: 6(int) Constant 85
|
||||||
|
201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 119 16 203 11 15 20
|
||||||
|
212: 51(int) Constant 4
|
||||||
|
225: TypePointer Function 76
|
||||||
|
229: 6(int) Constant 90
|
||||||
|
227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 228 77 16 229 11 15 20
|
||||||
|
233: TypePointer Function 74(fvec4)
|
||||||
|
235: 74(fvec4) ConstantComposite 128 139 128 128
|
||||||
|
242: 74(fvec4) ConstantComposite 128 128 128 139
|
||||||
|
247: 6(int) Constant 95
|
||||||
|
245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 75 16 247 11 15 20
|
||||||
|
248(inPos): 35(ptr) Variable Input
|
||||||
|
249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 250 28 16 247 11 18 250 248(inPos) 34
|
||||||
|
262: 6(int) Constant 96
|
||||||
|
260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 75 16 262 11 15 20
|
||||||
|
265(instanceScale): 71(ptr) Variable Input
|
||||||
|
266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 267 26 16 262 11 18 267 265(instanceScale) 34
|
||||||
|
270(instancePos): 35(ptr) Variable Input
|
||||||
|
271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 272 28 16 262 11 18 272 270(instancePos) 34
|
||||||
|
280: TypeArray 24(float) 19
|
||||||
|
281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19
|
||||||
|
282(gl_PerVertex): TypeStruct 74(fvec4) 24(float) 280 280
|
||||||
|
285: 6(int) Constant 24
|
||||||
|
283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 284 75 16 19 285 11 11 12
|
||||||
|
286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 26 16 19 83 11 11 12
|
||||||
|
288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12
|
||||||
|
290: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12
|
||||||
|
293: 6(int) Constant 98
|
||||||
|
291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 292 19 16 293 11 18 292 11 12 283 286 288 290
|
||||||
|
294: TypePointer Output 282(gl_PerVertex)
|
||||||
|
295: 294(ptr) Variable Output
|
||||||
|
296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 291 16 293 11 18 17 295 34
|
||||||
|
297: TypePointer Uniform 76
|
||||||
|
307: TypePointer Output 74(fvec4)
|
||||||
|
309(outNormal): 29(ptr) Variable Output
|
||||||
|
312: 6(int) Constant 99
|
||||||
|
310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 311 28 16 312 11 18 311 309(outNormal) 34
|
||||||
|
327(inNormal): 35(ptr) Variable Input
|
||||||
|
328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 329 28 16 312 11 18 329 327(inNormal) 34
|
||||||
|
346: 6(int) Constant 102
|
||||||
|
344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 345 28 16 346 11 15 20
|
||||||
|
356: TypePointer Uniform 74(fvec4)
|
||||||
|
362(outLightVec): 29(ptr) Variable Output
|
||||||
|
365: 6(int) Constant 103
|
||||||
|
363: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 364 28 16 365 11 18 364 362(outLightVec) 34
|
||||||
|
370(outViewVec): 29(ptr) Variable Output
|
||||||
|
373: 6(int) Constant 104
|
||||||
|
371: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 372 28 16 373 11 18 372 370(outViewVec) 34
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
64(s): 63(ptr) Variable Function
|
||||||
|
107(c): 63(ptr) Variable Function
|
||||||
|
121(mx): 120(ptr) Variable Function
|
||||||
|
156(my): 120(ptr) Variable Function
|
||||||
|
185(mz): 120(ptr) Variable Function
|
||||||
|
200(rotMat): 120(ptr) Variable Function
|
||||||
|
226(gRotMat): 225(ptr) Variable Function
|
||||||
|
244(locPos): 233(ptr) Variable Function
|
||||||
|
259(pos): 233(ptr) Variable Function
|
||||||
|
343(lPos): 130(ptr) Variable Function
|
||||||
|
23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
39: 27(fvec3) Load 36(inColor)
|
||||||
|
Store 30(outColor) 39
|
||||||
|
50: 44(fvec2) Load 47(inUV)
|
||||||
|
58: 51(int) Load 55(instanceTexIndex)
|
||||||
|
59: 24(float) ConvertSToF 58
|
||||||
|
60: 24(float) CompositeExtract 50 0
|
||||||
|
61: 24(float) CompositeExtract 50 1
|
||||||
|
62: 27(fvec3) CompositeConstruct 60 61 59
|
||||||
|
Store 40(outUV) 62
|
||||||
|
72: 71(ptr) AccessChain 68(instanceRot) 11
|
||||||
|
73: 24(float) Load 72
|
||||||
|
101: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
102: 24(float) Load 101
|
||||||
|
103: 24(float) FAdd 73 102
|
||||||
|
104: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 103
|
||||||
|
Store 64(s) 104
|
||||||
|
105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 104 106
|
||||||
|
111: 71(ptr) AccessChain 68(instanceRot) 11
|
||||||
|
112: 24(float) Load 111
|
||||||
|
113: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
114: 24(float) Load 113
|
||||||
|
115: 24(float) FAdd 112 114
|
||||||
|
116: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 115
|
||||||
|
Store 107(c) 116
|
||||||
|
117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 116 106
|
||||||
|
126: 24(float) Load 107(c)
|
||||||
|
127: 24(float) Load 64(s)
|
||||||
|
129: 27(fvec3) CompositeConstruct 126 127 128
|
||||||
|
131: 130(ptr) AccessChain 121(mx) 125
|
||||||
|
Store 131 129
|
||||||
|
133: 24(float) Load 64(s)
|
||||||
|
134: 24(float) FNegate 133
|
||||||
|
135: 24(float) Load 107(c)
|
||||||
|
136: 27(fvec3) CompositeConstruct 134 135 128
|
||||||
|
137: 130(ptr) AccessChain 121(mx) 132
|
||||||
|
Store 137 136
|
||||||
|
141: 130(ptr) AccessChain 121(mx) 138
|
||||||
|
Store 141 140
|
||||||
|
142: 71(ptr) AccessChain 68(instanceRot) 19
|
||||||
|
143: 24(float) Load 142
|
||||||
|
144: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
145: 24(float) Load 144
|
||||||
|
146: 24(float) FAdd 143 145
|
||||||
|
147: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 146
|
||||||
|
Store 64(s) 147
|
||||||
|
148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 147 106
|
||||||
|
149: 71(ptr) AccessChain 68(instanceRot) 19
|
||||||
|
150: 24(float) Load 149
|
||||||
|
151: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
152: 24(float) Load 151
|
||||||
|
153: 24(float) FAdd 150 152
|
||||||
|
154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153
|
||||||
|
Store 107(c) 154
|
||||||
|
155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 154 106
|
||||||
|
160: 24(float) Load 107(c)
|
||||||
|
161: 24(float) Load 64(s)
|
||||||
|
162: 27(fvec3) CompositeConstruct 160 128 161
|
||||||
|
163: 130(ptr) AccessChain 156(my) 125
|
||||||
|
Store 163 162
|
||||||
|
165: 130(ptr) AccessChain 156(my) 132
|
||||||
|
Store 165 164
|
||||||
|
166: 24(float) Load 64(s)
|
||||||
|
167: 24(float) FNegate 166
|
||||||
|
168: 24(float) Load 107(c)
|
||||||
|
169: 27(fvec3) CompositeConstruct 167 128 168
|
||||||
|
170: 130(ptr) AccessChain 156(my) 138
|
||||||
|
Store 170 169
|
||||||
|
171: 71(ptr) AccessChain 68(instanceRot) 21
|
||||||
|
172: 24(float) Load 171
|
||||||
|
173: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
174: 24(float) Load 173
|
||||||
|
175: 24(float) FAdd 172 174
|
||||||
|
176: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 175
|
||||||
|
Store 64(s) 176
|
||||||
|
177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 176 106
|
||||||
|
178: 71(ptr) AccessChain 68(instanceRot) 21
|
||||||
|
179: 24(float) Load 178
|
||||||
|
180: 100(ptr) AccessChain 96(ubo) 99
|
||||||
|
181: 24(float) Load 180
|
||||||
|
182: 24(float) FAdd 179 181
|
||||||
|
183: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 182
|
||||||
|
Store 107(c) 183
|
||||||
|
184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 183 106
|
||||||
|
190: 130(ptr) AccessChain 185(mz) 125
|
||||||
|
Store 190 189
|
||||||
|
191: 24(float) Load 107(c)
|
||||||
|
192: 24(float) Load 64(s)
|
||||||
|
193: 27(fvec3) CompositeConstruct 128 191 192
|
||||||
|
194: 130(ptr) AccessChain 185(mz) 132
|
||||||
|
Store 194 193
|
||||||
|
195: 24(float) Load 64(s)
|
||||||
|
196: 24(float) FNegate 195
|
||||||
|
197: 24(float) Load 107(c)
|
||||||
|
198: 27(fvec3) CompositeConstruct 128 196 197
|
||||||
|
199: 130(ptr) AccessChain 185(mz) 138
|
||||||
|
Store 199 198
|
||||||
|
204: 118 Load 185(mz)
|
||||||
|
205: 118 Load 156(my)
|
||||||
|
206: 118 MatrixTimesMatrix 204 205
|
||||||
|
207: 118 Load 121(mx)
|
||||||
|
208: 118 MatrixTimesMatrix 206 207
|
||||||
|
Store 200(rotMat) 208
|
||||||
|
209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 208 106
|
||||||
|
210: 71(ptr) AccessChain 68(instanceRot) 19
|
||||||
|
211: 24(float) Load 210
|
||||||
|
213: 100(ptr) AccessChain 96(ubo) 212
|
||||||
|
214: 24(float) Load 213
|
||||||
|
215: 24(float) FAdd 211 214
|
||||||
|
216: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 215
|
||||||
|
Store 64(s) 216
|
||||||
|
217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 216 106
|
||||||
|
218: 71(ptr) AccessChain 68(instanceRot) 19
|
||||||
|
219: 24(float) Load 218
|
||||||
|
220: 100(ptr) AccessChain 96(ubo) 212
|
||||||
|
221: 24(float) Load 220
|
||||||
|
222: 24(float) FAdd 219 221
|
||||||
|
223: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 222
|
||||||
|
Store 107(c) 223
|
||||||
|
224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 223 106
|
||||||
|
230: 24(float) Load 107(c)
|
||||||
|
231: 24(float) Load 64(s)
|
||||||
|
232: 74(fvec4) CompositeConstruct 230 128 231 128
|
||||||
|
234: 233(ptr) AccessChain 226(gRotMat) 125
|
||||||
|
Store 234 232
|
||||||
|
236: 233(ptr) AccessChain 226(gRotMat) 132
|
||||||
|
Store 236 235
|
||||||
|
237: 24(float) Load 64(s)
|
||||||
|
238: 24(float) FNegate 237
|
||||||
|
239: 24(float) Load 107(c)
|
||||||
|
240: 74(fvec4) CompositeConstruct 238 128 239 128
|
||||||
|
241: 233(ptr) AccessChain 226(gRotMat) 138
|
||||||
|
Store 241 240
|
||||||
|
243: 233(ptr) AccessChain 226(gRotMat) 99
|
||||||
|
Store 243 242
|
||||||
|
251: 27(fvec3) Load 248(inPos)
|
||||||
|
252: 118 Load 200(rotMat)
|
||||||
|
253: 27(fvec3) VectorTimesMatrix 251 252
|
||||||
|
254: 24(float) CompositeExtract 253 0
|
||||||
|
255: 24(float) CompositeExtract 253 1
|
||||||
|
256: 24(float) CompositeExtract 253 2
|
||||||
|
257: 74(fvec4) CompositeConstruct 254 255 256 139
|
||||||
|
Store 244(locPos) 257
|
||||||
|
258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 257 106
|
||||||
|
263: 74(fvec4) Load 244(locPos)
|
||||||
|
264: 27(fvec3) VectorShuffle 263 263 0 1 2
|
||||||
|
268: 24(float) Load 265(instanceScale)
|
||||||
|
269: 27(fvec3) VectorTimesScalar 264 268
|
||||||
|
273: 27(fvec3) Load 270(instancePos)
|
||||||
|
274: 27(fvec3) FAdd 269 273
|
||||||
|
275: 24(float) CompositeExtract 274 0
|
||||||
|
276: 24(float) CompositeExtract 274 1
|
||||||
|
277: 24(float) CompositeExtract 274 2
|
||||||
|
278: 74(fvec4) CompositeConstruct 275 276 277 139
|
||||||
|
Store 259(pos) 278
|
||||||
|
279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 278 106
|
||||||
|
298: 297(ptr) AccessChain 96(ubo) 125
|
||||||
|
299: 76 Load 298
|
||||||
|
300: 297(ptr) AccessChain 96(ubo) 132
|
||||||
|
301: 76 Load 300
|
||||||
|
302: 76 MatrixTimesMatrix 299 301
|
||||||
|
303: 76 Load 226(gRotMat)
|
||||||
|
304: 76 MatrixTimesMatrix 302 303
|
||||||
|
305: 74(fvec4) Load 259(pos)
|
||||||
|
306: 74(fvec4) MatrixTimesVector 304 305
|
||||||
|
308: 307(ptr) AccessChain 295 125
|
||||||
|
Store 308 306
|
||||||
|
313: 297(ptr) AccessChain 96(ubo) 132
|
||||||
|
314: 76 Load 313
|
||||||
|
315: 76 Load 226(gRotMat)
|
||||||
|
316: 76 MatrixTimesMatrix 314 315
|
||||||
|
317: 74(fvec4) CompositeExtract 316 0
|
||||||
|
318: 27(fvec3) VectorShuffle 317 317 0 1 2
|
||||||
|
319: 74(fvec4) CompositeExtract 316 1
|
||||||
|
320: 27(fvec3) VectorShuffle 319 319 0 1 2
|
||||||
|
321: 74(fvec4) CompositeExtract 316 2
|
||||||
|
322: 27(fvec3) VectorShuffle 321 321 0 1 2
|
||||||
|
323: 118 CompositeConstruct 318 320 322
|
||||||
|
324: 118 Load 200(rotMat)
|
||||||
|
325: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 324
|
||||||
|
326: 118 MatrixTimesMatrix 323 325
|
||||||
|
330: 27(fvec3) Load 327(inNormal)
|
||||||
|
331: 27(fvec3) MatrixTimesVector 326 330
|
||||||
|
Store 309(outNormal) 331
|
||||||
|
332: 297(ptr) AccessChain 96(ubo) 132
|
||||||
|
333: 76 Load 332
|
||||||
|
334: 27(fvec3) Load 248(inPos)
|
||||||
|
335: 27(fvec3) Load 270(instancePos)
|
||||||
|
336: 27(fvec3) FAdd 334 335
|
||||||
|
337: 24(float) CompositeExtract 336 0
|
||||||
|
338: 24(float) CompositeExtract 336 1
|
||||||
|
339: 24(float) CompositeExtract 336 2
|
||||||
|
340: 74(fvec4) CompositeConstruct 337 338 339 139
|
||||||
|
341: 74(fvec4) MatrixTimesVector 333 340
|
||||||
|
Store 259(pos) 341
|
||||||
|
342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 341 106
|
||||||
|
347: 297(ptr) AccessChain 96(ubo) 132
|
||||||
|
348: 76 Load 347
|
||||||
|
349: 74(fvec4) CompositeExtract 348 0
|
||||||
|
350: 27(fvec3) VectorShuffle 349 349 0 1 2
|
||||||
|
351: 74(fvec4) CompositeExtract 348 1
|
||||||
|
352: 27(fvec3) VectorShuffle 351 351 0 1 2
|
||||||
|
353: 74(fvec4) CompositeExtract 348 2
|
||||||
|
354: 27(fvec3) VectorShuffle 353 353 0 1 2
|
||||||
|
355: 118 CompositeConstruct 350 352 354
|
||||||
|
357: 356(ptr) AccessChain 96(ubo) 138
|
||||||
|
358: 74(fvec4) Load 357
|
||||||
|
359: 27(fvec3) VectorShuffle 358 358 0 1 2
|
||||||
|
360: 27(fvec3) MatrixTimesVector 355 359
|
||||||
|
Store 343(lPos) 360
|
||||||
|
361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 344 360 106
|
||||||
|
366: 27(fvec3) Load 343(lPos)
|
||||||
|
367: 74(fvec4) Load 259(pos)
|
||||||
|
368: 27(fvec3) VectorShuffle 367 367 0 1 2
|
||||||
|
369: 27(fvec3) FSub 366 368
|
||||||
|
Store 362(outLightVec) 369
|
||||||
|
374: 74(fvec4) Load 259(pos)
|
||||||
|
375: 27(fvec3) VectorShuffle 374 374 0 1 2
|
||||||
|
376: 27(fvec3) FNegate 375
|
||||||
|
Store 370(outViewVec) 376
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
1103
Test/baseResults/spv.debuginfo.hlsl.comp.out
Normal file
1103
Test/baseResults/spv.debuginfo.hlsl.comp.out
Normal file
File diff suppressed because it is too large
Load Diff
1003
Test/baseResults/spv.debuginfo.hlsl.frag.out
Normal file
1003
Test/baseResults/spv.debuginfo.hlsl.frag.out
Normal file
File diff suppressed because it is too large
Load Diff
459
Test/baseResults/spv.debuginfo.hlsl.geom.out
Normal file
459
Test/baseResults/spv.debuginfo.hlsl.geom.out
Normal file
@ -0,0 +1,459 @@
|
|||||||
|
spv.debuginfo.hlsl.geom
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 323
|
||||||
|
|
||||||
|
Capability Geometry
|
||||||
|
Capability MultiViewport
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 272 279 284 308 311
|
||||||
|
ExecutionMode 5 Triangles
|
||||||
|
ExecutionMode 5 Invocations 2
|
||||||
|
ExecutionMode 5 OutputTriangleStrip
|
||||||
|
ExecutionMode 5 OutputVertices 3
|
||||||
|
9: String "float"
|
||||||
|
12: String "uint"
|
||||||
|
24: String "Pos"
|
||||||
|
26: String ""
|
||||||
|
30: String "Color"
|
||||||
|
35: String "VSOutput"
|
||||||
|
46: String "PrimitiveID"
|
||||||
|
51: String "LightVec"
|
||||||
|
57: String "GSOutput"
|
||||||
|
67: String "@main"
|
||||||
|
73: String "input"
|
||||||
|
77: String "outStream"
|
||||||
|
81: String "InvocationID"
|
||||||
|
87: String "int"
|
||||||
|
92: String "i"
|
||||||
|
104: String "bool"
|
||||||
|
109: String "output"
|
||||||
|
130: String "projection"
|
||||||
|
134: String "modelview"
|
||||||
|
138: String "lightPos"
|
||||||
|
142: String "UBO"
|
||||||
|
146: String "ubo"
|
||||||
|
177: String "pos"
|
||||||
|
185: String "worldPos"
|
||||||
|
195: String "lPos"
|
||||||
|
230: String "outStream.Pos"
|
||||||
|
237: String "outStream.ViewportIndex"
|
||||||
|
242: String "outStream.PrimitiveID"
|
||||||
|
248: String "outStream.Normal"
|
||||||
|
253: String "outStream.Color"
|
||||||
|
258: String "outStream.ViewVec"
|
||||||
|
263: String "outStream.LightVec"
|
||||||
|
Name 5 "main"
|
||||||
|
Name 22 "VSOutput"
|
||||||
|
MemberName 22(VSOutput) 0 "Pos"
|
||||||
|
MemberName 22(VSOutput) 1 "Normal"
|
||||||
|
MemberName 22(VSOutput) 2 "Color"
|
||||||
|
Name 42 "GSOutput"
|
||||||
|
MemberName 42(GSOutput) 0 "Pos"
|
||||||
|
MemberName 42(GSOutput) 1 "ViewportIndex"
|
||||||
|
MemberName 42(GSOutput) 2 "PrimitiveID"
|
||||||
|
MemberName 42(GSOutput) 3 "Normal"
|
||||||
|
MemberName 42(GSOutput) 4 "Color"
|
||||||
|
MemberName 42(GSOutput) 5 "ViewVec"
|
||||||
|
MemberName 42(GSOutput) 6 "LightVec"
|
||||||
|
Name 66 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;"
|
||||||
|
Name 62 "input"
|
||||||
|
Name 63 "outStream"
|
||||||
|
Name 64 "InvocationID"
|
||||||
|
Name 65 "PrimitiveID"
|
||||||
|
Name 90 "i"
|
||||||
|
Name 107 "output"
|
||||||
|
Name 128 "UBO"
|
||||||
|
MemberName 128(UBO) 0 "projection"
|
||||||
|
MemberName 128(UBO) 1 "modelview"
|
||||||
|
MemberName 128(UBO) 2 "lightPos"
|
||||||
|
Name 144 "ubo"
|
||||||
|
MemberName 144(ubo) 0 "ubo"
|
||||||
|
Name 150 ""
|
||||||
|
Name 175 "pos"
|
||||||
|
Name 183 "worldPos"
|
||||||
|
Name 193 "lPos"
|
||||||
|
Name 228 "outStream.Pos"
|
||||||
|
Name 235 "outStream.ViewportIndex"
|
||||||
|
Name 240 "outStream.PrimitiveID"
|
||||||
|
Name 246 "outStream.Normal"
|
||||||
|
Name 251 "outStream.Color"
|
||||||
|
Name 256 "outStream.ViewVec"
|
||||||
|
Name 261 "outStream.LightVec"
|
||||||
|
Name 269 "input"
|
||||||
|
Name 272 "input.Pos"
|
||||||
|
Name 279 "input.Normal"
|
||||||
|
Name 284 "input.Color"
|
||||||
|
Name 306 "InvocationID"
|
||||||
|
Name 308 "InvocationID"
|
||||||
|
Name 310 "PrimitiveID"
|
||||||
|
Name 311 "PrimitiveID"
|
||||||
|
Name 313 "outStream"
|
||||||
|
Name 314 "param"
|
||||||
|
Name 316 "param"
|
||||||
|
Name 317 "param"
|
||||||
|
Name 319 "param"
|
||||||
|
Decorate 124 ArrayStride 64
|
||||||
|
Decorate 126 ArrayStride 64
|
||||||
|
MemberDecorate 128(UBO) 0 RowMajor
|
||||||
|
MemberDecorate 128(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 128(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 128(UBO) 1 RowMajor
|
||||||
|
MemberDecorate 128(UBO) 1 Offset 128
|
||||||
|
MemberDecorate 128(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 128(UBO) 2 Offset 256
|
||||||
|
MemberDecorate 144(ubo) 0 Offset 0
|
||||||
|
Decorate 144(ubo) Block
|
||||||
|
Decorate 150 DescriptorSet 0
|
||||||
|
Decorate 150 Binding 0
|
||||||
|
Decorate 228(outStream.Pos) BuiltIn Position
|
||||||
|
Decorate 235(outStream.ViewportIndex) BuiltIn ViewportIndex
|
||||||
|
Decorate 240(outStream.PrimitiveID) BuiltIn PrimitiveId
|
||||||
|
Decorate 246(outStream.Normal) Location 0
|
||||||
|
Decorate 251(outStream.Color) Location 1
|
||||||
|
Decorate 256(outStream.ViewVec) Location 2
|
||||||
|
Decorate 261(outStream.LightVec) Location 3
|
||||||
|
Decorate 272(input.Pos) BuiltIn Position
|
||||||
|
Decorate 279(input.Normal) Location 0
|
||||||
|
Decorate 284(input.Color) Location 1
|
||||||
|
Decorate 308(InvocationID) BuiltIn InvocationId
|
||||||
|
Decorate 311(PrimitiveID) BuiltIn PrimitiveId
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
7: TypeFloat 32
|
||||||
|
10: TypeInt 32 0
|
||||||
|
13: 10(int) Constant 32
|
||||||
|
14: 10(int) Constant 6
|
||||||
|
15: 10(int) Constant 0
|
||||||
|
11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
|
||||||
|
16: 10(int) Constant 3
|
||||||
|
8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
|
||||||
|
17: TypeVector 7(float) 4
|
||||||
|
18: 10(int) Constant 4
|
||||||
|
19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18
|
||||||
|
20: TypeVector 7(float) 3
|
||||||
|
21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
|
||||||
|
22(VSOutput): TypeStruct 17(fvec4) 20(fvec3) 20(fvec3)
|
||||||
|
25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 26
|
||||||
|
27: 10(int) Constant 37
|
||||||
|
28: 10(int) Constant 13
|
||||||
|
23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 27 28 15 15 16
|
||||||
|
31: 10(int) Constant 39
|
||||||
|
32: 10(int) Constant 34
|
||||||
|
29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16
|
||||||
|
33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16
|
||||||
|
36: 10(int) Constant 1
|
||||||
|
38: 10(int) Constant 5
|
||||||
|
37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 36 18 25 38
|
||||||
|
34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 35 36 25 15 15 37 35 15 16 23 29 33
|
||||||
|
39: TypeArray 22(VSOutput) 16
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 34 16
|
||||||
|
41: TypePointer Function 39
|
||||||
|
42(GSOutput): TypeStruct 17(fvec4) 10(int) 10(int) 20(fvec3) 20(fvec3) 20(fvec3) 20(fvec3)
|
||||||
|
44: 10(int) Constant 44
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 44 28 15 15 16
|
||||||
|
47: 10(int) Constant 46
|
||||||
|
48: 10(int) Constant 19
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16
|
||||||
|
49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16
|
||||||
|
52: 10(int) Constant 50
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
|
||||||
|
54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
|
||||||
|
55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
|
||||||
|
56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55
|
||||||
|
58: TypePointer Function 42(GSOutput)
|
||||||
|
59: TypePointer Function 10(int)
|
||||||
|
60: TypeFunction 3 41(ptr) 58(ptr) 59(ptr) 59(ptr)
|
||||||
|
61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 40 56 11 11
|
||||||
|
68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 67 61 25 15 15 37 67 16 15
|
||||||
|
72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 73 40 25 15 15 68 18 36
|
||||||
|
75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
78: 10(int) Constant 2
|
||||||
|
76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 56 25 15 15 68 18 78
|
||||||
|
80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 11 25 15 15 68 18 16
|
||||||
|
83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 11 25 15 15 68 18 18
|
||||||
|
86: TypeInt 32 1
|
||||||
|
88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 87 13 18 15
|
||||||
|
89: TypePointer Function 86(int)
|
||||||
|
93: 10(int) Constant 57
|
||||||
|
91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 92 88 25 93 15 68 18
|
||||||
|
94: 86(int) Constant 0
|
||||||
|
102: 86(int) Constant 3
|
||||||
|
103: TypeBool
|
||||||
|
105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 104 13 78 15
|
||||||
|
110: 10(int) Constant 59
|
||||||
|
108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 56 25 110 15 68 18
|
||||||
|
111: 7(float) Constant 0
|
||||||
|
112: 17(fvec4) ConstantComposite 111 111 111 111
|
||||||
|
113: 20(fvec3) ConstantComposite 111 111 111
|
||||||
|
114:42(GSOutput) ConstantComposite 112 15 15 113 113 113 113
|
||||||
|
117: 86(int) Constant 1
|
||||||
|
118: TypePointer Function 20(fvec3)
|
||||||
|
121: TypeMatrix 17(fvec4) 4
|
||||||
|
123: 103(bool) ConstantTrue
|
||||||
|
122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 123
|
||||||
|
124: TypeArray 121 78
|
||||||
|
125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78
|
||||||
|
126: TypeArray 121 78
|
||||||
|
127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78
|
||||||
|
128(UBO): TypeStruct 124 126 17(fvec4)
|
||||||
|
131: 10(int) Constant 28
|
||||||
|
132: 10(int) Constant 21
|
||||||
|
129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 130 125 25 131 132 15 15 16
|
||||||
|
135: 10(int) Constant 29
|
||||||
|
136: 10(int) Constant 20
|
||||||
|
133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 127 25 135 136 15 15 16
|
||||||
|
139: 10(int) Constant 30
|
||||||
|
140: 10(int) Constant 17
|
||||||
|
137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 19 25 139 140 15 15 16
|
||||||
|
143: 10(int) Constant 60
|
||||||
|
141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 36 25 143 15 37 142 15 16 129 133 137
|
||||||
|
144(ubo): TypeStruct 128(UBO)
|
||||||
|
147: 10(int) Constant 33
|
||||||
|
145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 141 25 147 27 15 15 16
|
||||||
|
148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 36 25 143 15 37 146 15 16 145
|
||||||
|
149: TypePointer Uniform 144(ubo)
|
||||||
|
150: 149(ptr) Variable Uniform
|
||||||
|
152: 10(int) Constant 8
|
||||||
|
151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 26 148 25 143 15 37 26 150 152
|
||||||
|
154: TypePointer Uniform 121
|
||||||
|
157: TypeMatrix 20(fvec3) 3
|
||||||
|
158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 21 16 123
|
||||||
|
168: 86(int) Constant 4
|
||||||
|
170: 86(int) Constant 2
|
||||||
|
174: TypePointer Function 17(fvec4)
|
||||||
|
178: 10(int) Constant 63
|
||||||
|
176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 177 19 25 178 15 68 18
|
||||||
|
186: 10(int) Constant 64
|
||||||
|
184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 19 25 186 15 68 18
|
||||||
|
196: 10(int) Constant 66
|
||||||
|
194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 195 21 25 196 15 68 18
|
||||||
|
197: TypePointer Uniform 17(fvec4)
|
||||||
|
206: 86(int) Constant 6
|
||||||
|
212: 86(int) Constant 5
|
||||||
|
227: TypePointer Output 17(fvec4)
|
||||||
|
228(outStream.Pos): 227(ptr) Variable Output
|
||||||
|
231: 10(int) Constant 75
|
||||||
|
229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 230 19 25 231 15 37 230 228(outStream.Pos) 152
|
||||||
|
234: TypePointer Output 10(int)
|
||||||
|
235(outStream.ViewportIndex): 234(ptr) Variable Output
|
||||||
|
236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152
|
||||||
|
240(outStream.PrimitiveID): 234(ptr) Variable Output
|
||||||
|
241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152
|
||||||
|
245: TypePointer Output 20(fvec3)
|
||||||
|
246(outStream.Normal): 245(ptr) Variable Output
|
||||||
|
247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 248 21 25 231 15 37 248 246(outStream.Normal) 152
|
||||||
|
251(outStream.Color): 245(ptr) Variable Output
|
||||||
|
252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 253 21 25 231 15 37 253 251(outStream.Color) 152
|
||||||
|
256(outStream.ViewVec): 245(ptr) Variable Output
|
||||||
|
257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152
|
||||||
|
261(outStream.LightVec): 245(ptr) Variable Output
|
||||||
|
262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 21 25 231 15 37 263 261(outStream.LightVec) 152
|
||||||
|
270: TypeArray 17(fvec4) 16
|
||||||
|
271: TypePointer Input 270
|
||||||
|
272(input.Pos): 271(ptr) Variable Input
|
||||||
|
273: TypePointer Input 17(fvec4)
|
||||||
|
277: TypeArray 20(fvec3) 16
|
||||||
|
278: TypePointer Input 277
|
||||||
|
279(input.Normal): 278(ptr) Variable Input
|
||||||
|
280: TypePointer Input 20(fvec3)
|
||||||
|
284(input.Color): 278(ptr) Variable Input
|
||||||
|
307: TypePointer Input 10(int)
|
||||||
|
308(InvocationID): 307(ptr) Variable Input
|
||||||
|
311(PrimitiveID): 307(ptr) Variable Input
|
||||||
|
5(main): 3 Function None 4
|
||||||
|
6: Label
|
||||||
|
269(input): 41(ptr) Variable Function
|
||||||
|
306(InvocationID): 59(ptr) Variable Function
|
||||||
|
310(PrimitiveID): 59(ptr) Variable Function
|
||||||
|
313(outStream): 58(ptr) Variable Function
|
||||||
|
314(param): 41(ptr) Variable Function
|
||||||
|
316(param): 58(ptr) Variable Function
|
||||||
|
317(param): 59(ptr) Variable Function
|
||||||
|
319(param): 59(ptr) Variable Function
|
||||||
|
274: 273(ptr) AccessChain 272(input.Pos) 94
|
||||||
|
275: 17(fvec4) Load 274
|
||||||
|
276: 174(ptr) AccessChain 269(input) 94 94
|
||||||
|
Store 276 275
|
||||||
|
281: 280(ptr) AccessChain 279(input.Normal) 94
|
||||||
|
282: 20(fvec3) Load 281
|
||||||
|
283: 118(ptr) AccessChain 269(input) 94 117
|
||||||
|
Store 283 282
|
||||||
|
285: 280(ptr) AccessChain 284(input.Color) 94
|
||||||
|
286: 20(fvec3) Load 285
|
||||||
|
287: 118(ptr) AccessChain 269(input) 94 170
|
||||||
|
Store 287 286
|
||||||
|
288: 273(ptr) AccessChain 272(input.Pos) 117
|
||||||
|
289: 17(fvec4) Load 288
|
||||||
|
290: 174(ptr) AccessChain 269(input) 117 94
|
||||||
|
Store 290 289
|
||||||
|
291: 280(ptr) AccessChain 279(input.Normal) 117
|
||||||
|
292: 20(fvec3) Load 291
|
||||||
|
293: 118(ptr) AccessChain 269(input) 117 117
|
||||||
|
Store 293 292
|
||||||
|
294: 280(ptr) AccessChain 284(input.Color) 117
|
||||||
|
295: 20(fvec3) Load 294
|
||||||
|
296: 118(ptr) AccessChain 269(input) 117 170
|
||||||
|
Store 296 295
|
||||||
|
297: 273(ptr) AccessChain 272(input.Pos) 170
|
||||||
|
298: 17(fvec4) Load 297
|
||||||
|
299: 174(ptr) AccessChain 269(input) 170 94
|
||||||
|
Store 299 298
|
||||||
|
300: 280(ptr) AccessChain 279(input.Normal) 170
|
||||||
|
301: 20(fvec3) Load 300
|
||||||
|
302: 118(ptr) AccessChain 269(input) 170 117
|
||||||
|
Store 302 301
|
||||||
|
303: 280(ptr) AccessChain 284(input.Color) 170
|
||||||
|
304: 20(fvec3) Load 303
|
||||||
|
305: 118(ptr) AccessChain 269(input) 170 170
|
||||||
|
Store 305 304
|
||||||
|
309: 10(int) Load 308(InvocationID)
|
||||||
|
Store 306(InvocationID) 309
|
||||||
|
312: 10(int) Load 311(PrimitiveID)
|
||||||
|
Store 310(PrimitiveID) 312
|
||||||
|
315: 39 Load 269(input)
|
||||||
|
Store 314(param) 315
|
||||||
|
318: 10(int) Load 306(InvocationID)
|
||||||
|
Store 317(param) 318
|
||||||
|
320: 10(int) Load 310(PrimitiveID)
|
||||||
|
Store 319(param) 320
|
||||||
|
321: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 314(param) 316(param) 317(param) 319(param)
|
||||||
|
322:42(GSOutput) Load 316(param)
|
||||||
|
Store 313(outStream) 322
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 3 Function None 60
|
||||||
|
62(input): 41(ptr) FunctionParameter
|
||||||
|
63(outStream): 58(ptr) FunctionParameter
|
||||||
|
64(InvocationID): 59(ptr) FunctionParameter
|
||||||
|
65(PrimitiveID): 59(ptr) FunctionParameter
|
||||||
|
69: Label
|
||||||
|
90(i): 89(ptr) Variable Function
|
||||||
|
107(output): 58(ptr) Variable Function
|
||||||
|
175(pos): 174(ptr) Variable Function
|
||||||
|
183(worldPos): 174(ptr) Variable Function
|
||||||
|
193(lPos): 118(ptr) Variable Function
|
||||||
|
70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 68
|
||||||
|
71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 25 15 15 15 15
|
||||||
|
74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 72 62(input) 75
|
||||||
|
79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 76 63(outStream) 75
|
||||||
|
82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 64(InvocationID) 75
|
||||||
|
84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 65(PrimitiveID) 75
|
||||||
|
85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;)
|
||||||
|
Store 90(i) 94
|
||||||
|
95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 94 75
|
||||||
|
Branch 96
|
||||||
|
96: Label
|
||||||
|
LoopMerge 98 99 None
|
||||||
|
Branch 100
|
||||||
|
100: Label
|
||||||
|
101: 86(int) Load 90(i)
|
||||||
|
106: 103(bool) SLessThan 101 102
|
||||||
|
BranchConditional 106 97 98
|
||||||
|
97: Label
|
||||||
|
Store 107(output) 114
|
||||||
|
115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 114 75
|
||||||
|
116: 86(int) Load 90(i)
|
||||||
|
119: 118(ptr) AccessChain 62(input) 116 117
|
||||||
|
120: 20(fvec3) Load 119
|
||||||
|
153: 10(int) Load 64(InvocationID)
|
||||||
|
155: 154(ptr) AccessChain 150 94 117 153
|
||||||
|
156: 121 Load 155
|
||||||
|
159: 17(fvec4) CompositeExtract 156 0
|
||||||
|
160: 20(fvec3) VectorShuffle 159 159 0 1 2
|
||||||
|
161: 17(fvec4) CompositeExtract 156 1
|
||||||
|
162: 20(fvec3) VectorShuffle 161 161 0 1 2
|
||||||
|
163: 17(fvec4) CompositeExtract 156 2
|
||||||
|
164: 20(fvec3) VectorShuffle 163 163 0 1 2
|
||||||
|
165: 157 CompositeConstruct 160 162 164
|
||||||
|
166: 20(fvec3) VectorTimesMatrix 120 165
|
||||||
|
167: 118(ptr) AccessChain 107(output) 102
|
||||||
|
Store 167 166
|
||||||
|
169: 86(int) Load 90(i)
|
||||||
|
171: 118(ptr) AccessChain 62(input) 169 170
|
||||||
|
172: 20(fvec3) Load 171
|
||||||
|
173: 118(ptr) AccessChain 107(output) 168
|
||||||
|
Store 173 172
|
||||||
|
179: 86(int) Load 90(i)
|
||||||
|
180: 174(ptr) AccessChain 62(input) 179 94
|
||||||
|
181: 17(fvec4) Load 180
|
||||||
|
Store 175(pos) 181
|
||||||
|
182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 176 181 75
|
||||||
|
187: 17(fvec4) Load 175(pos)
|
||||||
|
188: 10(int) Load 64(InvocationID)
|
||||||
|
189: 154(ptr) AccessChain 150 94 117 188
|
||||||
|
190: 121 Load 189
|
||||||
|
191: 17(fvec4) VectorTimesMatrix 187 190
|
||||||
|
Store 183(worldPos) 191
|
||||||
|
192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 184 191 75
|
||||||
|
198: 197(ptr) AccessChain 150 94 170
|
||||||
|
199: 17(fvec4) Load 198
|
||||||
|
200: 10(int) Load 64(InvocationID)
|
||||||
|
201: 154(ptr) AccessChain 150 94 117 200
|
||||||
|
202: 121 Load 201
|
||||||
|
203: 17(fvec4) VectorTimesMatrix 199 202
|
||||||
|
204: 20(fvec3) VectorShuffle 203 203 0 1 2
|
||||||
|
Store 193(lPos) 204
|
||||||
|
205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 194 204 75
|
||||||
|
207: 20(fvec3) Load 193(lPos)
|
||||||
|
208: 17(fvec4) Load 183(worldPos)
|
||||||
|
209: 20(fvec3) VectorShuffle 208 208 0 1 2
|
||||||
|
210: 20(fvec3) FSub 207 209
|
||||||
|
211: 118(ptr) AccessChain 107(output) 206
|
||||||
|
Store 211 210
|
||||||
|
213: 17(fvec4) Load 183(worldPos)
|
||||||
|
214: 20(fvec3) VectorShuffle 213 213 0 1 2
|
||||||
|
215: 20(fvec3) FNegate 214
|
||||||
|
216: 118(ptr) AccessChain 107(output) 212
|
||||||
|
Store 216 215
|
||||||
|
217: 17(fvec4) Load 183(worldPos)
|
||||||
|
218: 10(int) Load 64(InvocationID)
|
||||||
|
219: 154(ptr) AccessChain 150 94 94 218
|
||||||
|
220: 121 Load 219
|
||||||
|
221: 17(fvec4) VectorTimesMatrix 217 220
|
||||||
|
222: 174(ptr) AccessChain 107(output) 94
|
||||||
|
Store 222 221
|
||||||
|
223: 10(int) Load 64(InvocationID)
|
||||||
|
224: 59(ptr) AccessChain 107(output) 117
|
||||||
|
Store 224 223
|
||||||
|
225: 10(int) Load 65(PrimitiveID)
|
||||||
|
226: 59(ptr) AccessChain 107(output) 170
|
||||||
|
Store 226 225
|
||||||
|
232: 174(ptr) AccessChain 107(output) 94
|
||||||
|
233: 17(fvec4) Load 232
|
||||||
|
Store 228(outStream.Pos) 233
|
||||||
|
238: 59(ptr) AccessChain 107(output) 117
|
||||||
|
239: 10(int) Load 238
|
||||||
|
Store 235(outStream.ViewportIndex) 239
|
||||||
|
243: 59(ptr) AccessChain 107(output) 170
|
||||||
|
244: 10(int) Load 243
|
||||||
|
Store 240(outStream.PrimitiveID) 244
|
||||||
|
249: 118(ptr) AccessChain 107(output) 102
|
||||||
|
250: 20(fvec3) Load 249
|
||||||
|
Store 246(outStream.Normal) 250
|
||||||
|
254: 118(ptr) AccessChain 107(output) 168
|
||||||
|
255: 20(fvec3) Load 254
|
||||||
|
Store 251(outStream.Color) 255
|
||||||
|
259: 118(ptr) AccessChain 107(output) 212
|
||||||
|
260: 20(fvec3) Load 259
|
||||||
|
Store 256(outStream.ViewVec) 260
|
||||||
|
264: 118(ptr) AccessChain 107(output) 206
|
||||||
|
265: 20(fvec3) Load 264
|
||||||
|
Store 261(outStream.LightVec) 265
|
||||||
|
EmitVertex
|
||||||
|
Branch 99
|
||||||
|
99: Label
|
||||||
|
266: 86(int) Load 90(i)
|
||||||
|
267: 86(int) IAdd 266 117
|
||||||
|
Store 90(i) 267
|
||||||
|
268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 267 75
|
||||||
|
Branch 96
|
||||||
|
98: Label
|
||||||
|
EndPrimitive
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
812
Test/baseResults/spv.debuginfo.hlsl.tesc.out
Normal file
812
Test/baseResults/spv.debuginfo.hlsl.tesc.out
Normal file
@ -0,0 +1,812 @@
|
|||||||
|
spv.debuginfo.hlsl.tesc
|
||||||
|
WARNING: 0:158: '' : attribute does not apply to entry point
|
||||||
|
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 596
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationControl 5 "main" 488 495 502 536 545 552 559 574 589
|
||||||
|
ExecutionMode 5 OutputVertices 4
|
||||||
|
ExecutionMode 5 Quads
|
||||||
|
ExecutionMode 5 SpacingEqual
|
||||||
|
ExecutionMode 5 VertexOrderCw
|
||||||
|
9: String "float"
|
||||||
|
12: String "uint"
|
||||||
|
26: String "screenSpaceTessFactor"
|
||||||
|
29: String ""
|
||||||
|
37: String "p0"
|
||||||
|
41: String "p1"
|
||||||
|
48: String "bool"
|
||||||
|
55: String "frustumCheck"
|
||||||
|
61: String "Pos"
|
||||||
|
64: String "inUV"
|
||||||
|
73: String "Normal"
|
||||||
|
77: String "UV"
|
||||||
|
81: String "VSOutput"
|
||||||
|
91: String "TessLevelOuter"
|
||||||
|
95: String "TessLevelInner"
|
||||||
|
98: String "ConstantsHSOutput"
|
||||||
|
103: String "ConstantsHS"
|
||||||
|
109: String "patch"
|
||||||
|
120: String "HSOutput"
|
||||||
|
126: String "@main"
|
||||||
|
134: String "InvocationID"
|
||||||
|
139: String "midPoint"
|
||||||
|
150: String "radius"
|
||||||
|
160: String "v0"
|
||||||
|
170: String "modelview"
|
||||||
|
175: String "lightPos"
|
||||||
|
179: String "frustumPlanes"
|
||||||
|
182: String "tessellatedEdgeSize"
|
||||||
|
186: String "viewportDim"
|
||||||
|
190: String "UBO"
|
||||||
|
193: String "ubo"
|
||||||
|
201: String "int"
|
||||||
|
212: String "clip0"
|
||||||
|
229: String "clip1"
|
||||||
|
294: String "pos"
|
||||||
|
300: String "type.2d.image"
|
||||||
|
302: String "@type.2d.image"
|
||||||
|
307: String "textureHeight"
|
||||||
|
311: String "type.sampler"
|
||||||
|
312: String "@type.sampler"
|
||||||
|
316: String "samplerHeight"
|
||||||
|
320: String "type.sampled.image"
|
||||||
|
321: String "@type.sampled.image"
|
||||||
|
337: String "i"
|
||||||
|
374: String "output"
|
||||||
|
Name 5 "main"
|
||||||
|
Name 25 "screenSpaceTessFactor(vf4;vf4;"
|
||||||
|
Name 23 "p0"
|
||||||
|
Name 24 "p1"
|
||||||
|
Name 54 "frustumCheck(vf4;vf2;"
|
||||||
|
Name 52 "Pos"
|
||||||
|
Name 53 "inUV"
|
||||||
|
Name 68 "VSOutput"
|
||||||
|
MemberName 68(VSOutput) 0 "Pos"
|
||||||
|
MemberName 68(VSOutput) 1 "Normal"
|
||||||
|
MemberName 68(VSOutput) 2 "UV"
|
||||||
|
Name 89 "ConstantsHSOutput"
|
||||||
|
MemberName 89(ConstantsHSOutput) 0 "TessLevelOuter"
|
||||||
|
MemberName 89(ConstantsHSOutput) 1 "TessLevelInner"
|
||||||
|
Name 102 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];"
|
||||||
|
Name 101 "patch"
|
||||||
|
Name 112 "HSOutput"
|
||||||
|
MemberName 112(HSOutput) 0 "Pos"
|
||||||
|
MemberName 112(HSOutput) 1 "Normal"
|
||||||
|
MemberName 112(HSOutput) 2 "UV"
|
||||||
|
Name 125 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;"
|
||||||
|
Name 123 "patch"
|
||||||
|
Name 124 "InvocationID"
|
||||||
|
Name 137 "midPoint"
|
||||||
|
Name 148 "radius"
|
||||||
|
Name 158 "v0"
|
||||||
|
Name 168 "UBO"
|
||||||
|
MemberName 168(UBO) 0 "projection"
|
||||||
|
MemberName 168(UBO) 1 "modelview"
|
||||||
|
MemberName 168(UBO) 2 "lightPos"
|
||||||
|
MemberName 168(UBO) 3 "frustumPlanes"
|
||||||
|
MemberName 168(UBO) 4 "displacementFactor"
|
||||||
|
MemberName 168(UBO) 5 "tessellationFactor"
|
||||||
|
MemberName 168(UBO) 6 "viewportDim"
|
||||||
|
MemberName 168(UBO) 7 "tessellatedEdgeSize"
|
||||||
|
Name 191 "ubo"
|
||||||
|
MemberName 191(ubo) 0 "ubo"
|
||||||
|
Name 197 ""
|
||||||
|
Name 210 "clip0"
|
||||||
|
Name 227 "clip1"
|
||||||
|
Name 292 "pos"
|
||||||
|
Name 305 "textureHeight"
|
||||||
|
Name 314 "samplerHeight"
|
||||||
|
Name 335 "i"
|
||||||
|
Name 372 "output"
|
||||||
|
Name 381 "param"
|
||||||
|
Name 384 "param"
|
||||||
|
Name 406 "param"
|
||||||
|
Name 409 "param"
|
||||||
|
Name 414 "param"
|
||||||
|
Name 417 "param"
|
||||||
|
Name 422 "param"
|
||||||
|
Name 425 "param"
|
||||||
|
Name 430 "param"
|
||||||
|
Name 433 "param"
|
||||||
|
Name 462 "output"
|
||||||
|
Name 485 "patch"
|
||||||
|
Name 488 "patch.Pos"
|
||||||
|
Name 495 "patch.Normal"
|
||||||
|
Name 502 "patch.UV"
|
||||||
|
Name 534 "InvocationID"
|
||||||
|
Name 536 "InvocationID"
|
||||||
|
Name 538 "flattenTemp"
|
||||||
|
Name 539 "param"
|
||||||
|
Name 541 "param"
|
||||||
|
Name 545 "@entryPointOutput.Pos"
|
||||||
|
Name 552 "@entryPointOutput.Normal"
|
||||||
|
Name 559 "@entryPointOutput.UV"
|
||||||
|
Name 569 "@patchConstantResult"
|
||||||
|
Name 570 "param"
|
||||||
|
Name 574 "@patchConstantOutput.TessLevelOuter"
|
||||||
|
Name 589 "@patchConstantOutput.TessLevelInner"
|
||||||
|
Decorate 166 ArrayStride 16
|
||||||
|
MemberDecorate 168(UBO) 0 RowMajor
|
||||||
|
MemberDecorate 168(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 168(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 168(UBO) 1 RowMajor
|
||||||
|
MemberDecorate 168(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 168(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 168(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 168(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 168(UBO) 4 Offset 240
|
||||||
|
MemberDecorate 168(UBO) 5 Offset 244
|
||||||
|
MemberDecorate 168(UBO) 6 Offset 248
|
||||||
|
MemberDecorate 168(UBO) 7 Offset 256
|
||||||
|
MemberDecorate 191(ubo) 0 Offset 0
|
||||||
|
Decorate 191(ubo) Block
|
||||||
|
Decorate 197 DescriptorSet 0
|
||||||
|
Decorate 197 Binding 0
|
||||||
|
Decorate 305(textureHeight) DescriptorSet 0
|
||||||
|
Decorate 305(textureHeight) Binding 1
|
||||||
|
Decorate 314(samplerHeight) DescriptorSet 0
|
||||||
|
Decorate 314(samplerHeight) Binding 1
|
||||||
|
Decorate 488(patch.Pos) BuiltIn Position
|
||||||
|
Decorate 495(patch.Normal) Location 0
|
||||||
|
Decorate 502(patch.UV) Location 1
|
||||||
|
Decorate 536(InvocationID) BuiltIn InvocationId
|
||||||
|
Decorate 545(@entryPointOutput.Pos) BuiltIn Position
|
||||||
|
Decorate 552(@entryPointOutput.Normal) Location 0
|
||||||
|
Decorate 559(@entryPointOutput.UV) Location 1
|
||||||
|
Decorate 574(@patchConstantOutput.TessLevelOuter) Patch
|
||||||
|
Decorate 574(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter
|
||||||
|
Decorate 589(@patchConstantOutput.TessLevelInner) Patch
|
||||||
|
Decorate 589(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
7: TypeFloat 32
|
||||||
|
10: TypeInt 32 0
|
||||||
|
13: 10(int) Constant 32
|
||||||
|
14: 10(int) Constant 6
|
||||||
|
15: 10(int) Constant 0
|
||||||
|
11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
|
||||||
|
16: 10(int) Constant 3
|
||||||
|
8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
|
||||||
|
17: TypeVector 7(float) 4
|
||||||
|
18: 10(int) Constant 4
|
||||||
|
19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18
|
||||||
|
20: TypePointer Function 17(fvec4)
|
||||||
|
21: TypeFunction 7(float) 20(ptr) 20(ptr)
|
||||||
|
22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 19
|
||||||
|
28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 29
|
||||||
|
31: 10(int) Constant 1
|
||||||
|
32: 10(int) Constant 5
|
||||||
|
30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 31 18 28 32
|
||||||
|
27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 26 22 28 15 15 30 26 16 15
|
||||||
|
36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 37 19 28 15 15 27 18 31
|
||||||
|
39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
42: 10(int) Constant 2
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 41 19 28 15 15 27 18 42
|
||||||
|
44: TypeVector 7(float) 2
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 42
|
||||||
|
46: TypePointer Function 44(fvec2)
|
||||||
|
47: TypeBool
|
||||||
|
49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
50: TypeFunction 47(bool) 20(ptr) 46(ptr)
|
||||||
|
51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 49 19 45
|
||||||
|
56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 55 51 28 15 15 30 55 16 15
|
||||||
|
60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 61 19 28 15 15 56 18 31
|
||||||
|
63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 64 45 28 15 15 56 18 42
|
||||||
|
66: TypeVector 7(float) 3
|
||||||
|
67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
|
||||||
|
68(VSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2)
|
||||||
|
70: 10(int) Constant 44
|
||||||
|
71: 10(int) Constant 13
|
||||||
|
69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 70 71 15 15 16
|
||||||
|
74: 10(int) Constant 45
|
||||||
|
75: 10(int) Constant 35
|
||||||
|
72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 74 75 15 15 16
|
||||||
|
78: 10(int) Constant 46
|
||||||
|
79: 10(int) Constant 31
|
||||||
|
76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 78 79 15 15 16
|
||||||
|
80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 81 31 28 15 15 30 81 15 16 69 72 76
|
||||||
|
82: TypeArray 68(VSOutput) 18
|
||||||
|
83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 80 18
|
||||||
|
84: TypePointer Function 82
|
||||||
|
85: TypeArray 7(float) 18
|
||||||
|
86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 18
|
||||||
|
87: TypeArray 7(float) 42
|
||||||
|
88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 42
|
||||||
|
89(ConstantsHSOutput): TypeStruct 85 87
|
||||||
|
92: 10(int) Constant 58
|
||||||
|
93: 10(int) Constant 25
|
||||||
|
90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 86 28 92 93 15 15 16
|
||||||
|
96: 10(int) Constant 59
|
||||||
|
94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 88 28 96 93 15 15 16
|
||||||
|
97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 98 31 28 15 15 30 98 15 16 90 94
|
||||||
|
99: TypeFunction 89(ConstantsHSOutput) 84(ptr)
|
||||||
|
100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 97 83
|
||||||
|
104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 103 100 28 15 15 30 103 16 15
|
||||||
|
108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 104 18 31
|
||||||
|
111: TypePointer Function 10(int)
|
||||||
|
112(HSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2)
|
||||||
|
114: 10(int) Constant 51
|
||||||
|
113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 114 13 15 15 16
|
||||||
|
116: 10(int) Constant 52
|
||||||
|
115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 116 75 15 15 16
|
||||||
|
118: 10(int) Constant 53
|
||||||
|
117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 118 79 15 15 16
|
||||||
|
119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 120 31 28 15 15 30 120 15 16 113 115 117
|
||||||
|
121: TypeFunction 112(HSOutput) 84(ptr) 111(ptr)
|
||||||
|
122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 119 83 11
|
||||||
|
127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 126 122 28 15 15 30 126 16 15
|
||||||
|
131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 127 18 31
|
||||||
|
133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 134 11 28 15 15 127 18 42
|
||||||
|
140: 10(int) Constant 67
|
||||||
|
138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 19 28 140 15 27 18
|
||||||
|
141: 7(float) Constant 1056964608
|
||||||
|
147: TypePointer Function 7(float)
|
||||||
|
151: 10(int) Constant 69
|
||||||
|
149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 150 8 28 151 15 27 18
|
||||||
|
155: 7(float) Constant 1073741824
|
||||||
|
161: 10(int) Constant 72
|
||||||
|
159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 160 19 28 161 15 27 18
|
||||||
|
163: TypeMatrix 17(fvec4) 4
|
||||||
|
165: 47(bool) ConstantTrue
|
||||||
|
164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 165
|
||||||
|
166: TypeArray 17(fvec4) 14
|
||||||
|
167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14
|
||||||
|
168(UBO): TypeStruct 163 163 17(fvec4) 166 7(float) 7(float) 44(fvec2) 7(float)
|
||||||
|
171: 10(int) Constant 29
|
||||||
|
172: 10(int) Constant 20
|
||||||
|
169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16
|
||||||
|
173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16
|
||||||
|
176: 10(int) Constant 30
|
||||||
|
177: 10(int) Constant 17
|
||||||
|
174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 175 19 28 176 177 15 15 16
|
||||||
|
180: 10(int) Constant 22
|
||||||
|
178: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 179 167 28 79 180 15 15 16
|
||||||
|
183: 10(int) Constant 27
|
||||||
|
181: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16
|
||||||
|
184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16
|
||||||
|
187: 10(int) Constant 34
|
||||||
|
185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 186 45 28 187 172 15 15 16
|
||||||
|
188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16
|
||||||
|
189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 190 31 28 161 15 30 190 15 16 169 173 174 178 181 184 185 188
|
||||||
|
191(ubo): TypeStruct 168(UBO)
|
||||||
|
194: 10(int) Constant 37
|
||||||
|
192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 193 189 28 194 194 15 15 16
|
||||||
|
195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 193 31 28 161 15 30 193 15 16 192
|
||||||
|
196: TypePointer Uniform 191(ubo)
|
||||||
|
197: 196(ptr) Variable Uniform
|
||||||
|
199: 10(int) Constant 8
|
||||||
|
198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 195 28 161 15 30 29 197 199
|
||||||
|
200: TypeInt 32 1
|
||||||
|
202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 201 13 18 15
|
||||||
|
203: 200(int) Constant 0
|
||||||
|
204: 200(int) Constant 1
|
||||||
|
205: TypePointer Uniform 163
|
||||||
|
213: 10(int) Constant 75
|
||||||
|
211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 212 19 28 213 15 27 18
|
||||||
|
216: 7(float) Constant 0
|
||||||
|
217: 66(fvec3) ConstantComposite 216 216 216
|
||||||
|
230: 10(int) Constant 76
|
||||||
|
228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 19 28 230 15 27 18
|
||||||
|
254: 200(int) Constant 6
|
||||||
|
255: TypePointer Uniform 44(fvec2)
|
||||||
|
277: 200(int) Constant 7
|
||||||
|
278: TypePointer Uniform 7(float)
|
||||||
|
282: 200(int) Constant 5
|
||||||
|
286: 7(float) Constant 1065353216
|
||||||
|
287: 7(float) Constant 1115684864
|
||||||
|
295: 10(int) Constant 98
|
||||||
|
293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 294 19 28 295 15 56 18
|
||||||
|
298: TypeImage 7(float) 2D sampled format:Unknown
|
||||||
|
301: 10(int) Constant 99
|
||||||
|
303: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
|
||||||
|
299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 300 15 28 301 15 30 302 303 16
|
||||||
|
304: TypePointer UniformConstant 298
|
||||||
|
305(textureHeight): 304(ptr) Variable UniformConstant
|
||||||
|
306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 307 299 28 301 15 30 307 305(textureHeight) 199
|
||||||
|
309: TypeSampler
|
||||||
|
310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 311 31 28 301 15 30 312 303 16
|
||||||
|
313: TypePointer UniformConstant 309
|
||||||
|
314(samplerHeight): 313(ptr) Variable UniformConstant
|
||||||
|
315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 316 310 28 301 15 30 316 314(samplerHeight) 199
|
||||||
|
318: TypeSampledImage 298
|
||||||
|
319: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 320 15 28 301 15 30 321 303 16
|
||||||
|
326: 200(int) Constant 4
|
||||||
|
334: TypePointer Function 200(int)
|
||||||
|
338: 10(int) Constant 102
|
||||||
|
336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 337 202 28 338 15 56 18
|
||||||
|
346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
349: 200(int) Constant 3
|
||||||
|
351: TypePointer Uniform 17(fvec4)
|
||||||
|
355: 7(float) Constant 1090519040
|
||||||
|
357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
362: 47(bool) ConstantFalse
|
||||||
|
367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
371: TypePointer Function 89(ConstantsHSOutput)
|
||||||
|
375: 10(int) Constant 113
|
||||||
|
373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 97 28 375 15 104 18
|
||||||
|
376: 85 ConstantComposite 216 216 216 216
|
||||||
|
377: 87 ConstantComposite 216 216
|
||||||
|
378:89(ConstantsHSOutput) ConstantComposite 376 377
|
||||||
|
380: 200(int) Constant 2
|
||||||
|
388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
|
||||||
|
461: TypePointer Function 112(HSOutput)
|
||||||
|
464: 10(int) Constant 159
|
||||||
|
463: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 119 28 464 15 127 18
|
||||||
|
465: 17(fvec4) ConstantComposite 216 216 216 216
|
||||||
|
466: 44(fvec2) ConstantComposite 216 216
|
||||||
|
467:112(HSOutput) ConstantComposite 465 217 466
|
||||||
|
474: TypePointer Function 66(fvec3)
|
||||||
|
486: TypeArray 17(fvec4) 18
|
||||||
|
487: TypePointer Input 486
|
||||||
|
488(patch.Pos): 487(ptr) Variable Input
|
||||||
|
489: TypePointer Input 17(fvec4)
|
||||||
|
493: TypeArray 66(fvec3) 18
|
||||||
|
494: TypePointer Input 493
|
||||||
|
495(patch.Normal): 494(ptr) Variable Input
|
||||||
|
496: TypePointer Input 66(fvec3)
|
||||||
|
500: TypeArray 44(fvec2) 18
|
||||||
|
501: TypePointer Input 500
|
||||||
|
502(patch.UV): 501(ptr) Variable Input
|
||||||
|
503: TypePointer Input 44(fvec2)
|
||||||
|
535: TypePointer Input 10(int)
|
||||||
|
536(InvocationID): 535(ptr) Variable Input
|
||||||
|
544: TypePointer Output 486
|
||||||
|
545(@entryPointOutput.Pos): 544(ptr) Variable Output
|
||||||
|
549: TypePointer Output 17(fvec4)
|
||||||
|
551: TypePointer Output 493
|
||||||
|
552(@entryPointOutput.Normal): 551(ptr) Variable Output
|
||||||
|
556: TypePointer Output 66(fvec3)
|
||||||
|
558: TypePointer Output 500
|
||||||
|
559(@entryPointOutput.UV): 558(ptr) Variable Output
|
||||||
|
563: TypePointer Output 44(fvec2)
|
||||||
|
573: TypePointer Output 85
|
||||||
|
574(@patchConstantOutput.TessLevelOuter): 573(ptr) Variable Output
|
||||||
|
577: TypePointer Output 7(float)
|
||||||
|
588: TypePointer Output 87
|
||||||
|
589(@patchConstantOutput.TessLevelInner): 588(ptr) Variable Output
|
||||||
|
5(main): 3 Function None 4
|
||||||
|
6: Label
|
||||||
|
485(patch): 84(ptr) Variable Function
|
||||||
|
534(InvocationID): 111(ptr) Variable Function
|
||||||
|
538(flattenTemp): 461(ptr) Variable Function
|
||||||
|
539(param): 84(ptr) Variable Function
|
||||||
|
541(param): 111(ptr) Variable Function
|
||||||
|
569(@patchConstantResult): 371(ptr) Variable Function
|
||||||
|
570(param): 84(ptr) Variable Function
|
||||||
|
490: 489(ptr) AccessChain 488(patch.Pos) 203
|
||||||
|
491: 17(fvec4) Load 490
|
||||||
|
492: 20(ptr) AccessChain 485(patch) 203 203
|
||||||
|
Store 492 491
|
||||||
|
497: 496(ptr) AccessChain 495(patch.Normal) 203
|
||||||
|
498: 66(fvec3) Load 497
|
||||||
|
499: 474(ptr) AccessChain 485(patch) 203 204
|
||||||
|
Store 499 498
|
||||||
|
504: 503(ptr) AccessChain 502(patch.UV) 203
|
||||||
|
505: 44(fvec2) Load 504
|
||||||
|
506: 46(ptr) AccessChain 485(patch) 203 380
|
||||||
|
Store 506 505
|
||||||
|
507: 489(ptr) AccessChain 488(patch.Pos) 204
|
||||||
|
508: 17(fvec4) Load 507
|
||||||
|
509: 20(ptr) AccessChain 485(patch) 204 203
|
||||||
|
Store 509 508
|
||||||
|
510: 496(ptr) AccessChain 495(patch.Normal) 204
|
||||||
|
511: 66(fvec3) Load 510
|
||||||
|
512: 474(ptr) AccessChain 485(patch) 204 204
|
||||||
|
Store 512 511
|
||||||
|
513: 503(ptr) AccessChain 502(patch.UV) 204
|
||||||
|
514: 44(fvec2) Load 513
|
||||||
|
515: 46(ptr) AccessChain 485(patch) 204 380
|
||||||
|
Store 515 514
|
||||||
|
516: 489(ptr) AccessChain 488(patch.Pos) 380
|
||||||
|
517: 17(fvec4) Load 516
|
||||||
|
518: 20(ptr) AccessChain 485(patch) 380 203
|
||||||
|
Store 518 517
|
||||||
|
519: 496(ptr) AccessChain 495(patch.Normal) 380
|
||||||
|
520: 66(fvec3) Load 519
|
||||||
|
521: 474(ptr) AccessChain 485(patch) 380 204
|
||||||
|
Store 521 520
|
||||||
|
522: 503(ptr) AccessChain 502(patch.UV) 380
|
||||||
|
523: 44(fvec2) Load 522
|
||||||
|
524: 46(ptr) AccessChain 485(patch) 380 380
|
||||||
|
Store 524 523
|
||||||
|
525: 489(ptr) AccessChain 488(patch.Pos) 349
|
||||||
|
526: 17(fvec4) Load 525
|
||||||
|
527: 20(ptr) AccessChain 485(patch) 349 203
|
||||||
|
Store 527 526
|
||||||
|
528: 496(ptr) AccessChain 495(patch.Normal) 349
|
||||||
|
529: 66(fvec3) Load 528
|
||||||
|
530: 474(ptr) AccessChain 485(patch) 349 204
|
||||||
|
Store 530 529
|
||||||
|
531: 503(ptr) AccessChain 502(patch.UV) 349
|
||||||
|
532: 44(fvec2) Load 531
|
||||||
|
533: 46(ptr) AccessChain 485(patch) 349 380
|
||||||
|
Store 533 532
|
||||||
|
537: 10(int) Load 536(InvocationID)
|
||||||
|
Store 534(InvocationID) 537
|
||||||
|
540: 82 Load 485(patch)
|
||||||
|
Store 539(param) 540
|
||||||
|
542: 10(int) Load 534(InvocationID)
|
||||||
|
Store 541(param) 542
|
||||||
|
543:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 539(param) 541(param)
|
||||||
|
Store 538(flattenTemp) 543
|
||||||
|
546: 10(int) Load 536(InvocationID)
|
||||||
|
547: 20(ptr) AccessChain 538(flattenTemp) 203
|
||||||
|
548: 17(fvec4) Load 547
|
||||||
|
550: 549(ptr) AccessChain 545(@entryPointOutput.Pos) 546
|
||||||
|
Store 550 548
|
||||||
|
553: 10(int) Load 536(InvocationID)
|
||||||
|
554: 474(ptr) AccessChain 538(flattenTemp) 204
|
||||||
|
555: 66(fvec3) Load 554
|
||||||
|
557: 556(ptr) AccessChain 552(@entryPointOutput.Normal) 553
|
||||||
|
Store 557 555
|
||||||
|
560: 10(int) Load 536(InvocationID)
|
||||||
|
561: 46(ptr) AccessChain 538(flattenTemp) 380
|
||||||
|
562: 44(fvec2) Load 561
|
||||||
|
564: 563(ptr) AccessChain 559(@entryPointOutput.UV) 560
|
||||||
|
Store 564 562
|
||||||
|
ControlBarrier 42 18 15
|
||||||
|
565: 10(int) Load 536(InvocationID)
|
||||||
|
566: 47(bool) IEqual 565 203
|
||||||
|
SelectionMerge 568 None
|
||||||
|
BranchConditional 566 567 568
|
||||||
|
567: Label
|
||||||
|
571: 82 Load 485(patch)
|
||||||
|
Store 570(param) 571
|
||||||
|
572:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 570(param)
|
||||||
|
Store 569(@patchConstantResult) 572
|
||||||
|
575: 147(ptr) AccessChain 569(@patchConstantResult) 203 203
|
||||||
|
576: 7(float) Load 575
|
||||||
|
578: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 203
|
||||||
|
Store 578 576
|
||||||
|
579: 147(ptr) AccessChain 569(@patchConstantResult) 203 204
|
||||||
|
580: 7(float) Load 579
|
||||||
|
581: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 204
|
||||||
|
Store 581 580
|
||||||
|
582: 147(ptr) AccessChain 569(@patchConstantResult) 203 380
|
||||||
|
583: 7(float) Load 582
|
||||||
|
584: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 380
|
||||||
|
Store 584 583
|
||||||
|
585: 147(ptr) AccessChain 569(@patchConstantResult) 203 349
|
||||||
|
586: 7(float) Load 585
|
||||||
|
587: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 349
|
||||||
|
Store 587 586
|
||||||
|
590: 147(ptr) AccessChain 569(@patchConstantResult) 204 203
|
||||||
|
591: 7(float) Load 590
|
||||||
|
592: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 203
|
||||||
|
Store 592 591
|
||||||
|
593: 147(ptr) AccessChain 569(@patchConstantResult) 204 204
|
||||||
|
594: 7(float) Load 593
|
||||||
|
595: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 204
|
||||||
|
Store 595 594
|
||||||
|
Branch 568
|
||||||
|
568: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
25(screenSpaceTessFactor(vf4;vf4;): 7(float) Function None 21
|
||||||
|
23(p0): 20(ptr) FunctionParameter
|
||||||
|
24(p1): 20(ptr) FunctionParameter
|
||||||
|
33: Label
|
||||||
|
137(midPoint): 20(ptr) Variable Function
|
||||||
|
148(radius): 147(ptr) Variable Function
|
||||||
|
158(v0): 20(ptr) Variable Function
|
||||||
|
210(clip0): 20(ptr) Variable Function
|
||||||
|
227(clip1): 20(ptr) Variable Function
|
||||||
|
34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 27
|
||||||
|
35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
|
||||||
|
38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 36 23(p0) 39
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 40 24(p1) 39
|
||||||
|
136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 27 25(screenSpaceTessFactor(vf4;vf4;)
|
||||||
|
142: 17(fvec4) Load 23(p0)
|
||||||
|
143: 17(fvec4) Load 24(p1)
|
||||||
|
144: 17(fvec4) FAdd 142 143
|
||||||
|
145: 17(fvec4) VectorTimesScalar 144 141
|
||||||
|
Store 137(midPoint) 145
|
||||||
|
146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 145 39
|
||||||
|
152: 17(fvec4) Load 23(p0)
|
||||||
|
153: 17(fvec4) Load 24(p1)
|
||||||
|
154: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 152 153
|
||||||
|
156: 7(float) FDiv 154 155
|
||||||
|
Store 148(radius) 156
|
||||||
|
157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 149 156 39
|
||||||
|
162: 17(fvec4) Load 137(midPoint)
|
||||||
|
206: 205(ptr) AccessChain 197 203 204
|
||||||
|
207: 163 Load 206
|
||||||
|
208: 17(fvec4) VectorTimesMatrix 162 207
|
||||||
|
Store 158(v0) 208
|
||||||
|
209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 159 208 39
|
||||||
|
214: 17(fvec4) Load 158(v0)
|
||||||
|
215: 7(float) Load 148(radius)
|
||||||
|
218: 7(float) CompositeExtract 217 0
|
||||||
|
219: 7(float) CompositeExtract 217 1
|
||||||
|
220: 7(float) CompositeExtract 217 2
|
||||||
|
221: 17(fvec4) CompositeConstruct 215 218 219 220
|
||||||
|
222: 17(fvec4) FSub 214 221
|
||||||
|
223: 205(ptr) AccessChain 197 203 203
|
||||||
|
224: 163 Load 223
|
||||||
|
225: 17(fvec4) VectorTimesMatrix 222 224
|
||||||
|
Store 210(clip0) 225
|
||||||
|
226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 225 39
|
||||||
|
231: 17(fvec4) Load 158(v0)
|
||||||
|
232: 7(float) Load 148(radius)
|
||||||
|
233: 7(float) CompositeExtract 217 0
|
||||||
|
234: 7(float) CompositeExtract 217 1
|
||||||
|
235: 7(float) CompositeExtract 217 2
|
||||||
|
236: 17(fvec4) CompositeConstruct 232 233 234 235
|
||||||
|
237: 17(fvec4) FAdd 231 236
|
||||||
|
238: 205(ptr) AccessChain 197 203 203
|
||||||
|
239: 163 Load 238
|
||||||
|
240: 17(fvec4) VectorTimesMatrix 237 239
|
||||||
|
Store 227(clip1) 240
|
||||||
|
241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 240 39
|
||||||
|
242: 147(ptr) AccessChain 210(clip0) 16
|
||||||
|
243: 7(float) Load 242
|
||||||
|
244: 17(fvec4) Load 210(clip0)
|
||||||
|
245: 17(fvec4) CompositeConstruct 243 243 243 243
|
||||||
|
246: 17(fvec4) FDiv 244 245
|
||||||
|
Store 210(clip0) 246
|
||||||
|
247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 246 39
|
||||||
|
248: 147(ptr) AccessChain 227(clip1) 16
|
||||||
|
249: 7(float) Load 248
|
||||||
|
250: 17(fvec4) Load 227(clip1)
|
||||||
|
251: 17(fvec4) CompositeConstruct 249 249 249 249
|
||||||
|
252: 17(fvec4) FDiv 250 251
|
||||||
|
Store 227(clip1) 252
|
||||||
|
253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 252 39
|
||||||
|
256: 255(ptr) AccessChain 197 203 254
|
||||||
|
257: 44(fvec2) Load 256
|
||||||
|
258: 17(fvec4) Load 210(clip0)
|
||||||
|
259: 44(fvec2) VectorShuffle 258 258 0 1
|
||||||
|
260: 44(fvec2) FMul 259 257
|
||||||
|
261: 147(ptr) AccessChain 210(clip0) 15
|
||||||
|
262: 7(float) CompositeExtract 260 0
|
||||||
|
Store 261 262
|
||||||
|
263: 147(ptr) AccessChain 210(clip0) 31
|
||||||
|
264: 7(float) CompositeExtract 260 1
|
||||||
|
Store 263 264
|
||||||
|
265: 255(ptr) AccessChain 197 203 254
|
||||||
|
266: 44(fvec2) Load 265
|
||||||
|
267: 17(fvec4) Load 227(clip1)
|
||||||
|
268: 44(fvec2) VectorShuffle 267 267 0 1
|
||||||
|
269: 44(fvec2) FMul 268 266
|
||||||
|
270: 147(ptr) AccessChain 227(clip1) 15
|
||||||
|
271: 7(float) CompositeExtract 269 0
|
||||||
|
Store 270 271
|
||||||
|
272: 147(ptr) AccessChain 227(clip1) 31
|
||||||
|
273: 7(float) CompositeExtract 269 1
|
||||||
|
Store 272 273
|
||||||
|
274: 17(fvec4) Load 210(clip0)
|
||||||
|
275: 17(fvec4) Load 227(clip1)
|
||||||
|
276: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 274 275
|
||||||
|
279: 278(ptr) AccessChain 197 203 277
|
||||||
|
280: 7(float) Load 279
|
||||||
|
281: 7(float) FDiv 276 280
|
||||||
|
283: 278(ptr) AccessChain 197 203 282
|
||||||
|
284: 7(float) Load 283
|
||||||
|
285: 7(float) FMul 281 284
|
||||||
|
288: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 285 286 287
|
||||||
|
ReturnValue 288
|
||||||
|
FunctionEnd
|
||||||
|
54(frustumCheck(vf4;vf2;): 47(bool) Function None 50
|
||||||
|
52(Pos): 20(ptr) FunctionParameter
|
||||||
|
53(inUV): 46(ptr) FunctionParameter
|
||||||
|
57: Label
|
||||||
|
292(pos): 20(ptr) Variable Function
|
||||||
|
335(i): 334(ptr) Variable Function
|
||||||
|
58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 56
|
||||||
|
59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
|
||||||
|
62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 60 52(Pos) 39
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 63 53(inUV) 39
|
||||||
|
291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;)
|
||||||
|
296: 17(fvec4) Load 52(Pos)
|
||||||
|
Store 292(pos) 296
|
||||||
|
297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 293 296 39
|
||||||
|
308: 298 Load 305(textureHeight)
|
||||||
|
317: 309 Load 314(samplerHeight)
|
||||||
|
322: 318 SampledImage 308 317
|
||||||
|
323: 44(fvec2) Load 53(inUV)
|
||||||
|
324: 17(fvec4) ImageSampleExplicitLod 322 323 Lod 216
|
||||||
|
325: 7(float) CompositeExtract 324 0
|
||||||
|
327: 278(ptr) AccessChain 197 203 326
|
||||||
|
328: 7(float) Load 327
|
||||||
|
329: 7(float) FMul 325 328
|
||||||
|
330: 147(ptr) AccessChain 292(pos) 31
|
||||||
|
331: 7(float) Load 330
|
||||||
|
332: 7(float) FSub 331 329
|
||||||
|
333: 147(ptr) AccessChain 292(pos) 31
|
||||||
|
Store 333 332
|
||||||
|
Store 335(i) 203
|
||||||
|
339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 203 39
|
||||||
|
Branch 340
|
||||||
|
340: Label
|
||||||
|
LoopMerge 342 343 None
|
||||||
|
Branch 344
|
||||||
|
344: Label
|
||||||
|
345: 200(int) Load 335(i)
|
||||||
|
347: 47(bool) SLessThan 345 254
|
||||||
|
BranchConditional 347 341 342
|
||||||
|
341: Label
|
||||||
|
348: 17(fvec4) Load 292(pos)
|
||||||
|
350: 200(int) Load 335(i)
|
||||||
|
352: 351(ptr) AccessChain 197 203 349 350
|
||||||
|
353: 17(fvec4) Load 352
|
||||||
|
354: 7(float) Dot 348 353
|
||||||
|
356: 7(float) FAdd 354 355
|
||||||
|
358: 47(bool) FOrdLessThan 356 216
|
||||||
|
SelectionMerge 360 None
|
||||||
|
BranchConditional 358 359 360
|
||||||
|
359: Label
|
||||||
|
ReturnValue 362
|
||||||
|
360: Label
|
||||||
|
Branch 343
|
||||||
|
343: Label
|
||||||
|
364: 200(int) Load 335(i)
|
||||||
|
365: 200(int) IAdd 364 204
|
||||||
|
Store 335(i) 365
|
||||||
|
366: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 365 39
|
||||||
|
Branch 340
|
||||||
|
342: Label
|
||||||
|
ReturnValue 165
|
||||||
|
FunctionEnd
|
||||||
|
102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):89(ConstantsHSOutput) Function None 99
|
||||||
|
101(patch): 84(ptr) FunctionParameter
|
||||||
|
105: Label
|
||||||
|
372(output): 371(ptr) Variable Function
|
||||||
|
381(param): 20(ptr) Variable Function
|
||||||
|
384(param): 46(ptr) Variable Function
|
||||||
|
406(param): 20(ptr) Variable Function
|
||||||
|
409(param): 20(ptr) Variable Function
|
||||||
|
414(param): 20(ptr) Variable Function
|
||||||
|
417(param): 20(ptr) Variable Function
|
||||||
|
422(param): 20(ptr) Variable Function
|
||||||
|
425(param): 20(ptr) Variable Function
|
||||||
|
430(param): 20(ptr) Variable Function
|
||||||
|
433(param): 20(ptr) Variable Function
|
||||||
|
106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 104
|
||||||
|
107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
|
||||||
|
110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 101(patch) 39
|
||||||
|
370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];)
|
||||||
|
Store 372(output) 378
|
||||||
|
379: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 373 378 39
|
||||||
|
382: 20(ptr) AccessChain 101(patch) 203 203
|
||||||
|
383: 17(fvec4) Load 382
|
||||||
|
Store 381(param) 383
|
||||||
|
385: 46(ptr) AccessChain 101(patch) 203 380
|
||||||
|
386: 44(fvec2) Load 385
|
||||||
|
Store 384(param) 386
|
||||||
|
387: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 381(param) 384(param)
|
||||||
|
390: 47(bool) LogicalNot 387
|
||||||
|
SelectionMerge 392 None
|
||||||
|
BranchConditional 390 391 399
|
||||||
|
391: Label
|
||||||
|
393: 147(ptr) AccessChain 372(output) 204 203
|
||||||
|
Store 393 216
|
||||||
|
394: 147(ptr) AccessChain 372(output) 204 204
|
||||||
|
Store 394 216
|
||||||
|
395: 147(ptr) AccessChain 372(output) 203 203
|
||||||
|
Store 395 216
|
||||||
|
396: 147(ptr) AccessChain 372(output) 203 204
|
||||||
|
Store 396 216
|
||||||
|
397: 147(ptr) AccessChain 372(output) 203 380
|
||||||
|
Store 397 216
|
||||||
|
398: 147(ptr) AccessChain 372(output) 203 349
|
||||||
|
Store 398 216
|
||||||
|
Branch 392
|
||||||
|
399: Label
|
||||||
|
400: 278(ptr) AccessChain 197 203 282
|
||||||
|
401: 7(float) Load 400
|
||||||
|
403: 47(bool) FOrdGreaterThan 401 216
|
||||||
|
SelectionMerge 405 None
|
||||||
|
BranchConditional 403 404 450
|
||||||
|
404: Label
|
||||||
|
407: 20(ptr) AccessChain 101(patch) 349 203
|
||||||
|
408: 17(fvec4) Load 407
|
||||||
|
Store 406(param) 408
|
||||||
|
410: 20(ptr) AccessChain 101(patch) 203 203
|
||||||
|
411: 17(fvec4) Load 410
|
||||||
|
Store 409(param) 411
|
||||||
|
412: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 406(param) 409(param)
|
||||||
|
413: 147(ptr) AccessChain 372(output) 203 203
|
||||||
|
Store 413 412
|
||||||
|
415: 20(ptr) AccessChain 101(patch) 203 203
|
||||||
|
416: 17(fvec4) Load 415
|
||||||
|
Store 414(param) 416
|
||||||
|
418: 20(ptr) AccessChain 101(patch) 204 203
|
||||||
|
419: 17(fvec4) Load 418
|
||||||
|
Store 417(param) 419
|
||||||
|
420: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 414(param) 417(param)
|
||||||
|
421: 147(ptr) AccessChain 372(output) 203 204
|
||||||
|
Store 421 420
|
||||||
|
423: 20(ptr) AccessChain 101(patch) 204 203
|
||||||
|
424: 17(fvec4) Load 423
|
||||||
|
Store 422(param) 424
|
||||||
|
426: 20(ptr) AccessChain 101(patch) 380 203
|
||||||
|
427: 17(fvec4) Load 426
|
||||||
|
Store 425(param) 427
|
||||||
|
428: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 422(param) 425(param)
|
||||||
|
429: 147(ptr) AccessChain 372(output) 203 380
|
||||||
|
Store 429 428
|
||||||
|
431: 20(ptr) AccessChain 101(patch) 380 203
|
||||||
|
432: 17(fvec4) Load 431
|
||||||
|
Store 430(param) 432
|
||||||
|
434: 20(ptr) AccessChain 101(patch) 349 203
|
||||||
|
435: 17(fvec4) Load 434
|
||||||
|
Store 433(param) 435
|
||||||
|
436: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 430(param) 433(param)
|
||||||
|
437: 147(ptr) AccessChain 372(output) 203 349
|
||||||
|
Store 437 436
|
||||||
|
438: 147(ptr) AccessChain 372(output) 203 203
|
||||||
|
439: 7(float) Load 438
|
||||||
|
440: 147(ptr) AccessChain 372(output) 203 349
|
||||||
|
441: 7(float) Load 440
|
||||||
|
442: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 439 441 141
|
||||||
|
443: 147(ptr) AccessChain 372(output) 204 203
|
||||||
|
Store 443 442
|
||||||
|
444: 147(ptr) AccessChain 372(output) 203 380
|
||||||
|
445: 7(float) Load 444
|
||||||
|
446: 147(ptr) AccessChain 372(output) 203 204
|
||||||
|
447: 7(float) Load 446
|
||||||
|
448: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 445 447 141
|
||||||
|
449: 147(ptr) AccessChain 372(output) 204 204
|
||||||
|
Store 449 448
|
||||||
|
Branch 405
|
||||||
|
450: Label
|
||||||
|
451: 147(ptr) AccessChain 372(output) 204 203
|
||||||
|
Store 451 286
|
||||||
|
452: 147(ptr) AccessChain 372(output) 204 204
|
||||||
|
Store 452 286
|
||||||
|
453: 147(ptr) AccessChain 372(output) 203 203
|
||||||
|
Store 453 286
|
||||||
|
454: 147(ptr) AccessChain 372(output) 203 204
|
||||||
|
Store 454 286
|
||||||
|
455: 147(ptr) AccessChain 372(output) 203 380
|
||||||
|
Store 455 286
|
||||||
|
456: 147(ptr) AccessChain 372(output) 203 349
|
||||||
|
Store 456 286
|
||||||
|
Branch 405
|
||||||
|
405: Label
|
||||||
|
Branch 392
|
||||||
|
392: Label
|
||||||
|
457:89(ConstantsHSOutput) Load 372(output)
|
||||||
|
ReturnValue 457
|
||||||
|
FunctionEnd
|
||||||
|
125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):112(HSOutput) Function None 121
|
||||||
|
123(patch): 84(ptr) FunctionParameter
|
||||||
|
124(InvocationID): 111(ptr) FunctionParameter
|
||||||
|
128: Label
|
||||||
|
462(output): 461(ptr) Variable Function
|
||||||
|
129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 127
|
||||||
|
130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
|
||||||
|
132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 123(patch) 39
|
||||||
|
135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 133 124(InvocationID) 39
|
||||||
|
460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;)
|
||||||
|
Store 462(output) 467
|
||||||
|
468: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 463 467 39
|
||||||
|
469: 10(int) Load 124(InvocationID)
|
||||||
|
470: 20(ptr) AccessChain 123(patch) 469 203
|
||||||
|
471: 17(fvec4) Load 470
|
||||||
|
472: 20(ptr) AccessChain 462(output) 203
|
||||||
|
Store 472 471
|
||||||
|
473: 10(int) Load 124(InvocationID)
|
||||||
|
475: 474(ptr) AccessChain 123(patch) 473 204
|
||||||
|
476: 66(fvec3) Load 475
|
||||||
|
477: 474(ptr) AccessChain 462(output) 204
|
||||||
|
Store 477 476
|
||||||
|
478: 10(int) Load 124(InvocationID)
|
||||||
|
479: 46(ptr) AccessChain 123(patch) 478 380
|
||||||
|
480: 44(fvec2) Load 479
|
||||||
|
481: 46(ptr) AccessChain 462(output) 380
|
||||||
|
Store 481 480
|
||||||
|
482:112(HSOutput) Load 462(output)
|
||||||
|
ReturnValue 482
|
||||||
|
FunctionEnd
|
589
Test/baseResults/spv.debuginfo.hlsl.tese.out
Normal file
589
Test/baseResults/spv.debuginfo.hlsl.tese.out
Normal file
@ -0,0 +1,589 @@
|
|||||||
|
spv.debuginfo.hlsl.tese
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 434
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationEvaluation 5 "main" 325 340 349 358 365 371 411 415 419 422 425 428 431
|
||||||
|
ExecutionMode 5 Quads
|
||||||
|
9: String "float"
|
||||||
|
12: String "uint"
|
||||||
|
25: String "TessLevelOuter"
|
||||||
|
27: String ""
|
||||||
|
31: String "TessLevelInner"
|
||||||
|
34: String "ConstantsHSOutput"
|
||||||
|
48: String "Pos"
|
||||||
|
51: String "Normal"
|
||||||
|
55: String "UV"
|
||||||
|
59: String "HSOutput"
|
||||||
|
67: String "WorldPos"
|
||||||
|
77: String "DSOutput"
|
||||||
|
84: String "@main"
|
||||||
|
90: String "input"
|
||||||
|
94: String "TessCoord"
|
||||||
|
97: String "patch"
|
||||||
|
103: String "output"
|
||||||
|
113: String "uv1"
|
||||||
|
116: String "int"
|
||||||
|
131: String "uv2"
|
||||||
|
151: String "n1"
|
||||||
|
162: String "n2"
|
||||||
|
181: String "pos1"
|
||||||
|
192: String "pos2"
|
||||||
|
203: String "pos"
|
||||||
|
214: String "type.2d.image"
|
||||||
|
216: String "@type.2d.image"
|
||||||
|
221: String "displacementMapTexture"
|
||||||
|
226: String "type.sampler"
|
||||||
|
227: String "@type.sampler"
|
||||||
|
231: String "displacementMapSampler"
|
||||||
|
235: String "type.sampled.image"
|
||||||
|
236: String "@type.sampled.image"
|
||||||
|
250: String "modelview"
|
||||||
|
255: String "lightPos"
|
||||||
|
259: String "frustumPlanes"
|
||||||
|
262: String "tessellatedEdgeSize"
|
||||||
|
266: String "viewportDim"
|
||||||
|
270: String "UBO"
|
||||||
|
273: String "ubo"
|
||||||
|
Name 5 "main"
|
||||||
|
Name 23 "ConstantsHSOutput"
|
||||||
|
MemberName 23(ConstantsHSOutput) 0 "TessLevelOuter"
|
||||||
|
MemberName 23(ConstantsHSOutput) 1 "TessLevelInner"
|
||||||
|
Name 46 "HSOutput"
|
||||||
|
MemberName 46(HSOutput) 0 "Pos"
|
||||||
|
MemberName 46(HSOutput) 1 "Normal"
|
||||||
|
MemberName 46(HSOutput) 2 "UV"
|
||||||
|
Name 62 "DSOutput"
|
||||||
|
MemberName 62(DSOutput) 0 "Pos"
|
||||||
|
MemberName 62(DSOutput) 1 "Normal"
|
||||||
|
MemberName 62(DSOutput) 2 "UV"
|
||||||
|
MemberName 62(DSOutput) 3 "ViewVec"
|
||||||
|
MemberName 62(DSOutput) 4 "LightVec"
|
||||||
|
MemberName 62(DSOutput) 5 "EyePos"
|
||||||
|
MemberName 62(DSOutput) 6 "WorldPos"
|
||||||
|
Name 83 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];"
|
||||||
|
Name 80 "input"
|
||||||
|
Name 81 "TessCoord"
|
||||||
|
Name 82 "patch"
|
||||||
|
Name 101 "output"
|
||||||
|
Name 111 "uv1"
|
||||||
|
Name 129 "uv2"
|
||||||
|
Name 149 "n1"
|
||||||
|
Name 160 "n2"
|
||||||
|
Name 179 "pos1"
|
||||||
|
Name 190 "pos2"
|
||||||
|
Name 201 "pos"
|
||||||
|
Name 219 "displacementMapTexture"
|
||||||
|
Name 229 "displacementMapSampler"
|
||||||
|
Name 248 "UBO"
|
||||||
|
MemberName 248(UBO) 0 "projection"
|
||||||
|
MemberName 248(UBO) 1 "modelview"
|
||||||
|
MemberName 248(UBO) 2 "lightPos"
|
||||||
|
MemberName 248(UBO) 3 "frustumPlanes"
|
||||||
|
MemberName 248(UBO) 4 "displacementFactor"
|
||||||
|
MemberName 248(UBO) 5 "tessellationFactor"
|
||||||
|
MemberName 248(UBO) 6 "viewportDim"
|
||||||
|
MemberName 248(UBO) 7 "tessellatedEdgeSize"
|
||||||
|
Name 271 "ubo"
|
||||||
|
MemberName 271(ubo) 0 "ubo"
|
||||||
|
Name 276 ""
|
||||||
|
Name 323 "input"
|
||||||
|
Name 325 "input.TessLevelOuter"
|
||||||
|
Name 340 "input.TessLevelInner"
|
||||||
|
Name 347 "TessCoord"
|
||||||
|
Name 349 "TessCoord"
|
||||||
|
Name 355 "patch"
|
||||||
|
Name 358 "patch.Pos"
|
||||||
|
Name 365 "patch.Normal"
|
||||||
|
Name 371 "patch.UV"
|
||||||
|
Name 403 "flattenTemp"
|
||||||
|
Name 405 "param"
|
||||||
|
Name 407 "param"
|
||||||
|
Name 411 "@entryPointOutput.Pos"
|
||||||
|
Name 415 "@entryPointOutput.Normal"
|
||||||
|
Name 419 "@entryPointOutput.UV"
|
||||||
|
Name 422 "@entryPointOutput.ViewVec"
|
||||||
|
Name 425 "@entryPointOutput.LightVec"
|
||||||
|
Name 428 "@entryPointOutput.EyePos"
|
||||||
|
Name 431 "@entryPointOutput.WorldPos"
|
||||||
|
Decorate 219(displacementMapTexture) DescriptorSet 0
|
||||||
|
Decorate 219(displacementMapTexture) Binding 1
|
||||||
|
Decorate 229(displacementMapSampler) DescriptorSet 0
|
||||||
|
Decorate 229(displacementMapSampler) Binding 1
|
||||||
|
Decorate 246 ArrayStride 16
|
||||||
|
MemberDecorate 248(UBO) 0 RowMajor
|
||||||
|
MemberDecorate 248(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 248(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 248(UBO) 1 RowMajor
|
||||||
|
MemberDecorate 248(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 248(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 248(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 248(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 248(UBO) 4 Offset 240
|
||||||
|
MemberDecorate 248(UBO) 5 Offset 244
|
||||||
|
MemberDecorate 248(UBO) 6 Offset 248
|
||||||
|
MemberDecorate 248(UBO) 7 Offset 256
|
||||||
|
MemberDecorate 271(ubo) 0 Offset 0
|
||||||
|
Decorate 271(ubo) Block
|
||||||
|
Decorate 276 DescriptorSet 0
|
||||||
|
Decorate 276 Binding 0
|
||||||
|
Decorate 325(input.TessLevelOuter) Patch
|
||||||
|
Decorate 325(input.TessLevelOuter) BuiltIn TessLevelOuter
|
||||||
|
Decorate 340(input.TessLevelInner) Patch
|
||||||
|
Decorate 340(input.TessLevelInner) BuiltIn TessLevelInner
|
||||||
|
Decorate 349(TessCoord) Patch
|
||||||
|
Decorate 349(TessCoord) BuiltIn TessCoord
|
||||||
|
Decorate 358(patch.Pos) BuiltIn Position
|
||||||
|
Decorate 365(patch.Normal) Location 0
|
||||||
|
Decorate 371(patch.UV) Location 1
|
||||||
|
Decorate 411(@entryPointOutput.Pos) BuiltIn Position
|
||||||
|
Decorate 415(@entryPointOutput.Normal) Location 0
|
||||||
|
Decorate 419(@entryPointOutput.UV) Location 1
|
||||||
|
Decorate 422(@entryPointOutput.ViewVec) Location 2
|
||||||
|
Decorate 425(@entryPointOutput.LightVec) Location 3
|
||||||
|
Decorate 428(@entryPointOutput.EyePos) Location 4
|
||||||
|
Decorate 431(@entryPointOutput.WorldPos) Location 5
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
7: TypeFloat 32
|
||||||
|
10: TypeInt 32 0
|
||||||
|
13: 10(int) Constant 32
|
||||||
|
14: 10(int) Constant 6
|
||||||
|
15: 10(int) Constant 0
|
||||||
|
11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
|
||||||
|
16: 10(int) Constant 3
|
||||||
|
8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
|
||||||
|
17: 10(int) Constant 4
|
||||||
|
18: TypeArray 7(float) 17
|
||||||
|
19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 17
|
||||||
|
20: 10(int) Constant 2
|
||||||
|
21: TypeArray 7(float) 20
|
||||||
|
22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 20
|
||||||
|
23(ConstantsHSOutput): TypeStruct 18 21
|
||||||
|
26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 27
|
||||||
|
28: 10(int) Constant 51
|
||||||
|
29: 10(int) Constant 25
|
||||||
|
24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 25 19 26 28 29 15 15 16
|
||||||
|
32: 10(int) Constant 52
|
||||||
|
30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 31 22 26 32 29 15 15 16
|
||||||
|
35: 10(int) Constant 1
|
||||||
|
37: 10(int) Constant 5
|
||||||
|
36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 35 17 26 37
|
||||||
|
33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 34 35 26 15 15 36 34 15 16 24 30
|
||||||
|
38: TypePointer Function 23(ConstantsHSOutput)
|
||||||
|
39: TypeVector 7(float) 2
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20
|
||||||
|
41: TypePointer Function 39(fvec2)
|
||||||
|
42: TypeVector 7(float) 4
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 17
|
||||||
|
44: TypeVector 7(float) 3
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
|
||||||
|
46(HSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2)
|
||||||
|
49: 10(int) Constant 44
|
||||||
|
47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 49 13 15 15 16
|
||||||
|
52: 10(int) Constant 45
|
||||||
|
53: 10(int) Constant 35
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 45 26 52 53 15 15 16
|
||||||
|
56: 10(int) Constant 46
|
||||||
|
57: 10(int) Constant 31
|
||||||
|
54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 56 57 15 15 16
|
||||||
|
58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 59 35 26 15 15 36 59 15 16 47 50 54
|
||||||
|
60: TypeArray 46(HSOutput) 17
|
||||||
|
61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 58 17
|
||||||
|
62(DSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 44(fvec3) 44(fvec3) 44(fvec3) 44(fvec3)
|
||||||
|
64: 10(int) Constant 57
|
||||||
|
65: 10(int) Constant 13
|
||||||
|
63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 64 65 15 15 16
|
||||||
|
68: 10(int) Constant 63
|
||||||
|
69: 10(int) Constant 37
|
||||||
|
66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
|
||||||
|
71: 10(int) Constant 59
|
||||||
|
70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 71 57 15 15 16
|
||||||
|
72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
|
||||||
|
73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
|
||||||
|
74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
|
||||||
|
75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
|
||||||
|
76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75
|
||||||
|
78: TypeFunction 62(DSOutput) 38(ptr) 41(ptr) 60
|
||||||
|
79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 76 33 40 58
|
||||||
|
85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 84 79 26 15 15 36 84 16 15
|
||||||
|
89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 90 33 26 15 15 85 17 35
|
||||||
|
92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 94 40 26 15 15 85 17 20
|
||||||
|
96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 97 58 26 15 15 85 17 16
|
||||||
|
100: TypePointer Function 62(DSOutput)
|
||||||
|
104: 10(int) Constant 70
|
||||||
|
102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 103 76 26 104 15 85 17
|
||||||
|
105: 7(float) Constant 0
|
||||||
|
106: 42(fvec4) ConstantComposite 105 105 105 105
|
||||||
|
107: 44(fvec3) ConstantComposite 105 105 105
|
||||||
|
108: 39(fvec2) ConstantComposite 105 105
|
||||||
|
109:62(DSOutput) ConstantComposite 106 107 108 107 107 107 107
|
||||||
|
114: 10(int) Constant 71
|
||||||
|
112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 113 40 26 114 15 85 17
|
||||||
|
115: TypeInt 32 1
|
||||||
|
117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 13 17 15
|
||||||
|
118: 115(int) Constant 0
|
||||||
|
119: 115(int) Constant 2
|
||||||
|
121: 115(int) Constant 1
|
||||||
|
123: TypePointer Function 7(float)
|
||||||
|
132: 10(int) Constant 72
|
||||||
|
130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 131 40 26 132 15 85 17
|
||||||
|
133: 115(int) Constant 3
|
||||||
|
148: TypePointer Function 44(fvec3)
|
||||||
|
152: 10(int) Constant 75
|
||||||
|
150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 151 45 26 152 15 85 17
|
||||||
|
163: 10(int) Constant 76
|
||||||
|
161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 162 45 26 163 15 85 17
|
||||||
|
178: TypePointer Function 42(fvec4)
|
||||||
|
182: 10(int) Constant 80
|
||||||
|
180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 181 43 26 182 15 85 17
|
||||||
|
193: 10(int) Constant 81
|
||||||
|
191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 192 43 26 193 15 85 17
|
||||||
|
204: 10(int) Constant 82
|
||||||
|
202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 43 26 204 15 85 17
|
||||||
|
212: TypeImage 7(float) 2D sampled format:Unknown
|
||||||
|
215: 10(int) Constant 84
|
||||||
|
217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
|
||||||
|
213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 214 15 26 215 15 36 216 217 16
|
||||||
|
218: TypePointer UniformConstant 212
|
||||||
|
219(displacementMapTexture): 218(ptr) Variable UniformConstant
|
||||||
|
222: 10(int) Constant 8
|
||||||
|
220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 221 213 26 215 15 36 221 219(displacementMapTexture) 222
|
||||||
|
224: TypeSampler
|
||||||
|
225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 35 26 215 15 36 227 217 16
|
||||||
|
228: TypePointer UniformConstant 224
|
||||||
|
229(displacementMapSampler): 228(ptr) Variable UniformConstant
|
||||||
|
230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 231 225 26 215 15 36 231 229(displacementMapSampler) 222
|
||||||
|
233: TypeSampledImage 212
|
||||||
|
234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 235 15 26 215 15 36 236 217 16
|
||||||
|
242: TypeMatrix 42(fvec4) 4
|
||||||
|
244: TypeBool
|
||||||
|
245: 244(bool) ConstantTrue
|
||||||
|
243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 43 17 245
|
||||||
|
246: TypeArray 42(fvec4) 14
|
||||||
|
247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 43 14
|
||||||
|
248(UBO): TypeStruct 242 242 42(fvec4) 246 7(float) 7(float) 39(fvec2) 7(float)
|
||||||
|
251: 10(int) Constant 29
|
||||||
|
252: 10(int) Constant 20
|
||||||
|
249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16
|
||||||
|
253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16
|
||||||
|
256: 10(int) Constant 30
|
||||||
|
257: 10(int) Constant 17
|
||||||
|
254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 255 43 26 256 257 15 15 16
|
||||||
|
260: 10(int) Constant 22
|
||||||
|
258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 259 247 26 57 260 15 15 16
|
||||||
|
263: 10(int) Constant 27
|
||||||
|
261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
|
||||||
|
264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
|
||||||
|
267: 10(int) Constant 34
|
||||||
|
265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 266 40 26 267 252 15 15 16
|
||||||
|
268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
|
||||||
|
269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268
|
||||||
|
271(ubo): TypeStruct 248(UBO)
|
||||||
|
272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 273 269 26 69 69 15 15 16
|
||||||
|
274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 273 35 26 215 15 36 273 15 16 272
|
||||||
|
275: TypePointer Uniform 271(ubo)
|
||||||
|
276: 275(ptr) Variable Uniform
|
||||||
|
277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 27 274 26 215 15 36 27 276 222
|
||||||
|
278: 115(int) Constant 4
|
||||||
|
279: TypePointer Uniform 7(float)
|
||||||
|
288: TypePointer Uniform 242
|
||||||
|
300: TypePointer Uniform 42(fvec4)
|
||||||
|
309: 115(int) Constant 6
|
||||||
|
313: 115(int) Constant 5
|
||||||
|
324: TypePointer Input 18
|
||||||
|
325(input.TessLevelOuter): 324(ptr) Variable Input
|
||||||
|
326: TypePointer Input 7(float)
|
||||||
|
339: TypePointer Input 21
|
||||||
|
340(input.TessLevelInner): 339(ptr) Variable Input
|
||||||
|
348: TypePointer Input 44(fvec3)
|
||||||
|
349(TessCoord): 348(ptr) Variable Input
|
||||||
|
354: TypePointer Function 60
|
||||||
|
356: TypeArray 42(fvec4) 17
|
||||||
|
357: TypePointer Input 356
|
||||||
|
358(patch.Pos): 357(ptr) Variable Input
|
||||||
|
359: TypePointer Input 42(fvec4)
|
||||||
|
363: TypeArray 44(fvec3) 17
|
||||||
|
364: TypePointer Input 363
|
||||||
|
365(patch.Normal): 364(ptr) Variable Input
|
||||||
|
369: TypeArray 39(fvec2) 17
|
||||||
|
370: TypePointer Input 369
|
||||||
|
371(patch.UV): 370(ptr) Variable Input
|
||||||
|
372: TypePointer Input 39(fvec2)
|
||||||
|
410: TypePointer Output 42(fvec4)
|
||||||
|
411(@entryPointOutput.Pos): 410(ptr) Variable Output
|
||||||
|
414: TypePointer Output 44(fvec3)
|
||||||
|
415(@entryPointOutput.Normal): 414(ptr) Variable Output
|
||||||
|
418: TypePointer Output 39(fvec2)
|
||||||
|
419(@entryPointOutput.UV): 418(ptr) Variable Output
|
||||||
|
422(@entryPointOutput.ViewVec): 414(ptr) Variable Output
|
||||||
|
425(@entryPointOutput.LightVec): 414(ptr) Variable Output
|
||||||
|
428(@entryPointOutput.EyePos): 414(ptr) Variable Output
|
||||||
|
431(@entryPointOutput.WorldPos): 414(ptr) Variable Output
|
||||||
|
5(main): 3 Function None 4
|
||||||
|
6: Label
|
||||||
|
323(input): 38(ptr) Variable Function
|
||||||
|
347(TessCoord): 41(ptr) Variable Function
|
||||||
|
355(patch): 354(ptr) Variable Function
|
||||||
|
403(flattenTemp): 100(ptr) Variable Function
|
||||||
|
405(param): 38(ptr) Variable Function
|
||||||
|
407(param): 41(ptr) Variable Function
|
||||||
|
327: 326(ptr) AccessChain 325(input.TessLevelOuter) 118
|
||||||
|
328: 7(float) Load 327
|
||||||
|
329: 123(ptr) AccessChain 323(input) 118 118
|
||||||
|
Store 329 328
|
||||||
|
330: 326(ptr) AccessChain 325(input.TessLevelOuter) 121
|
||||||
|
331: 7(float) Load 330
|
||||||
|
332: 123(ptr) AccessChain 323(input) 118 121
|
||||||
|
Store 332 331
|
||||||
|
333: 326(ptr) AccessChain 325(input.TessLevelOuter) 119
|
||||||
|
334: 7(float) Load 333
|
||||||
|
335: 123(ptr) AccessChain 323(input) 118 119
|
||||||
|
Store 335 334
|
||||||
|
336: 326(ptr) AccessChain 325(input.TessLevelOuter) 133
|
||||||
|
337: 7(float) Load 336
|
||||||
|
338: 123(ptr) AccessChain 323(input) 118 133
|
||||||
|
Store 338 337
|
||||||
|
341: 326(ptr) AccessChain 340(input.TessLevelInner) 118
|
||||||
|
342: 7(float) Load 341
|
||||||
|
343: 123(ptr) AccessChain 323(input) 121 118
|
||||||
|
Store 343 342
|
||||||
|
344: 326(ptr) AccessChain 340(input.TessLevelInner) 121
|
||||||
|
345: 7(float) Load 344
|
||||||
|
346: 123(ptr) AccessChain 323(input) 121 121
|
||||||
|
Store 346 345
|
||||||
|
350: 44(fvec3) Load 349(TessCoord)
|
||||||
|
351: 7(float) CompositeExtract 350 0
|
||||||
|
352: 7(float) CompositeExtract 350 1
|
||||||
|
353: 39(fvec2) CompositeConstruct 351 352
|
||||||
|
Store 347(TessCoord) 353
|
||||||
|
360: 359(ptr) AccessChain 358(patch.Pos) 118
|
||||||
|
361: 42(fvec4) Load 360
|
||||||
|
362: 178(ptr) AccessChain 355(patch) 118 118
|
||||||
|
Store 362 361
|
||||||
|
366: 348(ptr) AccessChain 365(patch.Normal) 118
|
||||||
|
367: 44(fvec3) Load 366
|
||||||
|
368: 148(ptr) AccessChain 355(patch) 118 121
|
||||||
|
Store 368 367
|
||||||
|
373: 372(ptr) AccessChain 371(patch.UV) 118
|
||||||
|
374: 39(fvec2) Load 373
|
||||||
|
375: 41(ptr) AccessChain 355(patch) 118 119
|
||||||
|
Store 375 374
|
||||||
|
376: 359(ptr) AccessChain 358(patch.Pos) 121
|
||||||
|
377: 42(fvec4) Load 376
|
||||||
|
378: 178(ptr) AccessChain 355(patch) 121 118
|
||||||
|
Store 378 377
|
||||||
|
379: 348(ptr) AccessChain 365(patch.Normal) 121
|
||||||
|
380: 44(fvec3) Load 379
|
||||||
|
381: 148(ptr) AccessChain 355(patch) 121 121
|
||||||
|
Store 381 380
|
||||||
|
382: 372(ptr) AccessChain 371(patch.UV) 121
|
||||||
|
383: 39(fvec2) Load 382
|
||||||
|
384: 41(ptr) AccessChain 355(patch) 121 119
|
||||||
|
Store 384 383
|
||||||
|
385: 359(ptr) AccessChain 358(patch.Pos) 119
|
||||||
|
386: 42(fvec4) Load 385
|
||||||
|
387: 178(ptr) AccessChain 355(patch) 119 118
|
||||||
|
Store 387 386
|
||||||
|
388: 348(ptr) AccessChain 365(patch.Normal) 119
|
||||||
|
389: 44(fvec3) Load 388
|
||||||
|
390: 148(ptr) AccessChain 355(patch) 119 121
|
||||||
|
Store 390 389
|
||||||
|
391: 372(ptr) AccessChain 371(patch.UV) 119
|
||||||
|
392: 39(fvec2) Load 391
|
||||||
|
393: 41(ptr) AccessChain 355(patch) 119 119
|
||||||
|
Store 393 392
|
||||||
|
394: 359(ptr) AccessChain 358(patch.Pos) 133
|
||||||
|
395: 42(fvec4) Load 394
|
||||||
|
396: 178(ptr) AccessChain 355(patch) 133 118
|
||||||
|
Store 396 395
|
||||||
|
397: 348(ptr) AccessChain 365(patch.Normal) 133
|
||||||
|
398: 44(fvec3) Load 397
|
||||||
|
399: 148(ptr) AccessChain 355(patch) 133 121
|
||||||
|
Store 399 398
|
||||||
|
400: 372(ptr) AccessChain 371(patch.UV) 133
|
||||||
|
401: 39(fvec2) Load 400
|
||||||
|
402: 41(ptr) AccessChain 355(patch) 133 119
|
||||||
|
Store 402 401
|
||||||
|
404: 60 Load 355(patch)
|
||||||
|
406:23(ConstantsHSOutput) Load 323(input)
|
||||||
|
Store 405(param) 406
|
||||||
|
408: 39(fvec2) Load 347(TessCoord)
|
||||||
|
Store 407(param) 408
|
||||||
|
409:62(DSOutput) FunctionCall 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 405(param) 407(param) 404
|
||||||
|
Store 403(flattenTemp) 409
|
||||||
|
412: 178(ptr) AccessChain 403(flattenTemp) 118
|
||||||
|
413: 42(fvec4) Load 412
|
||||||
|
Store 411(@entryPointOutput.Pos) 413
|
||||||
|
416: 148(ptr) AccessChain 403(flattenTemp) 121
|
||||||
|
417: 44(fvec3) Load 416
|
||||||
|
Store 415(@entryPointOutput.Normal) 417
|
||||||
|
420: 41(ptr) AccessChain 403(flattenTemp) 119
|
||||||
|
421: 39(fvec2) Load 420
|
||||||
|
Store 419(@entryPointOutput.UV) 421
|
||||||
|
423: 148(ptr) AccessChain 403(flattenTemp) 133
|
||||||
|
424: 44(fvec3) Load 423
|
||||||
|
Store 422(@entryPointOutput.ViewVec) 424
|
||||||
|
426: 148(ptr) AccessChain 403(flattenTemp) 278
|
||||||
|
427: 44(fvec3) Load 426
|
||||||
|
Store 425(@entryPointOutput.LightVec) 427
|
||||||
|
429: 148(ptr) AccessChain 403(flattenTemp) 313
|
||||||
|
430: 44(fvec3) Load 429
|
||||||
|
Store 428(@entryPointOutput.EyePos) 430
|
||||||
|
432: 148(ptr) AccessChain 403(flattenTemp) 309
|
||||||
|
433: 44(fvec3) Load 432
|
||||||
|
Store 431(@entryPointOutput.WorldPos) 433
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):62(DSOutput) Function None 78
|
||||||
|
80(input): 38(ptr) FunctionParameter
|
||||||
|
81(TessCoord): 41(ptr) FunctionParameter
|
||||||
|
82(patch): 60 FunctionParameter
|
||||||
|
86: Label
|
||||||
|
101(output): 100(ptr) Variable Function
|
||||||
|
111(uv1): 41(ptr) Variable Function
|
||||||
|
129(uv2): 41(ptr) Variable Function
|
||||||
|
149(n1): 148(ptr) Variable Function
|
||||||
|
160(n2): 148(ptr) Variable Function
|
||||||
|
179(pos1): 178(ptr) Variable Function
|
||||||
|
190(pos2): 178(ptr) Variable Function
|
||||||
|
201(pos): 178(ptr) Variable Function
|
||||||
|
87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 85
|
||||||
|
88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 26 15 15 15 15
|
||||||
|
91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 89 80(input) 92
|
||||||
|
95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 93 81(TessCoord) 92
|
||||||
|
98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 96 82(patch) 92
|
||||||
|
99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];)
|
||||||
|
Store 101(output) 109
|
||||||
|
110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 102 109 92
|
||||||
|
120: 39(fvec2) CompositeExtract 82(patch) 0 2
|
||||||
|
122: 39(fvec2) CompositeExtract 82(patch) 1 2
|
||||||
|
124: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
125: 7(float) Load 124
|
||||||
|
126: 39(fvec2) CompositeConstruct 125 125
|
||||||
|
127: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 120 122 126
|
||||||
|
Store 111(uv1) 127
|
||||||
|
128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 112 127 92
|
||||||
|
134: 39(fvec2) CompositeExtract 82(patch) 3 2
|
||||||
|
135: 39(fvec2) CompositeExtract 82(patch) 2 2
|
||||||
|
136: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
137: 7(float) Load 136
|
||||||
|
138: 39(fvec2) CompositeConstruct 137 137
|
||||||
|
139: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 134 135 138
|
||||||
|
Store 129(uv2) 139
|
||||||
|
140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 130 139 92
|
||||||
|
141: 39(fvec2) Load 111(uv1)
|
||||||
|
142: 39(fvec2) Load 129(uv2)
|
||||||
|
143: 123(ptr) AccessChain 81(TessCoord) 35
|
||||||
|
144: 7(float) Load 143
|
||||||
|
145: 39(fvec2) CompositeConstruct 144 144
|
||||||
|
146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145
|
||||||
|
147: 41(ptr) AccessChain 101(output) 119
|
||||||
|
Store 147 146
|
||||||
|
153: 44(fvec3) CompositeExtract 82(patch) 0 1
|
||||||
|
154: 44(fvec3) CompositeExtract 82(patch) 1 1
|
||||||
|
155: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
156: 7(float) Load 155
|
||||||
|
157: 44(fvec3) CompositeConstruct 156 156 156
|
||||||
|
158: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 153 154 157
|
||||||
|
Store 149(n1) 158
|
||||||
|
159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 150 158 92
|
||||||
|
164: 44(fvec3) CompositeExtract 82(patch) 3 1
|
||||||
|
165: 44(fvec3) CompositeExtract 82(patch) 2 1
|
||||||
|
166: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
167: 7(float) Load 166
|
||||||
|
168: 44(fvec3) CompositeConstruct 167 167 167
|
||||||
|
169: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 164 165 168
|
||||||
|
Store 160(n2) 169
|
||||||
|
170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 161 169 92
|
||||||
|
171: 44(fvec3) Load 149(n1)
|
||||||
|
172: 44(fvec3) Load 160(n2)
|
||||||
|
173: 123(ptr) AccessChain 81(TessCoord) 35
|
||||||
|
174: 7(float) Load 173
|
||||||
|
175: 44(fvec3) CompositeConstruct 174 174 174
|
||||||
|
176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175
|
||||||
|
177: 148(ptr) AccessChain 101(output) 121
|
||||||
|
Store 177 176
|
||||||
|
183: 42(fvec4) CompositeExtract 82(patch) 0 0
|
||||||
|
184: 42(fvec4) CompositeExtract 82(patch) 1 0
|
||||||
|
185: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
186: 7(float) Load 185
|
||||||
|
187: 42(fvec4) CompositeConstruct 186 186 186 186
|
||||||
|
188: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 183 184 187
|
||||||
|
Store 179(pos1) 188
|
||||||
|
189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 180 188 92
|
||||||
|
194: 42(fvec4) CompositeExtract 82(patch) 3 0
|
||||||
|
195: 42(fvec4) CompositeExtract 82(patch) 2 0
|
||||||
|
196: 123(ptr) AccessChain 81(TessCoord) 15
|
||||||
|
197: 7(float) Load 196
|
||||||
|
198: 42(fvec4) CompositeConstruct 197 197 197 197
|
||||||
|
199: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 194 195 198
|
||||||
|
Store 190(pos2) 199
|
||||||
|
200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 191 199 92
|
||||||
|
205: 42(fvec4) Load 179(pos1)
|
||||||
|
206: 42(fvec4) Load 190(pos2)
|
||||||
|
207: 123(ptr) AccessChain 81(TessCoord) 35
|
||||||
|
208: 7(float) Load 207
|
||||||
|
209: 42(fvec4) CompositeConstruct 208 208 208 208
|
||||||
|
210: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 205 206 209
|
||||||
|
Store 201(pos) 210
|
||||||
|
211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 202 210 92
|
||||||
|
223: 212 Load 219(displacementMapTexture)
|
||||||
|
232: 224 Load 229(displacementMapSampler)
|
||||||
|
237: 233 SampledImage 223 232
|
||||||
|
238: 41(ptr) AccessChain 101(output) 119
|
||||||
|
239: 39(fvec2) Load 238
|
||||||
|
240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 105
|
||||||
|
241: 7(float) CompositeExtract 240 0
|
||||||
|
280: 279(ptr) AccessChain 276 118 278
|
||||||
|
281: 7(float) Load 280
|
||||||
|
282: 7(float) FMul 241 281
|
||||||
|
283: 123(ptr) AccessChain 201(pos) 35
|
||||||
|
284: 7(float) Load 283
|
||||||
|
285: 7(float) FSub 284 282
|
||||||
|
286: 123(ptr) AccessChain 201(pos) 35
|
||||||
|
Store 286 285
|
||||||
|
287: 42(fvec4) Load 201(pos)
|
||||||
|
289: 288(ptr) AccessChain 276 118 121
|
||||||
|
290: 242 Load 289
|
||||||
|
291: 42(fvec4) VectorTimesMatrix 287 290
|
||||||
|
292: 288(ptr) AccessChain 276 118 118
|
||||||
|
293: 242 Load 292
|
||||||
|
294: 42(fvec4) VectorTimesMatrix 291 293
|
||||||
|
295: 178(ptr) AccessChain 101(output) 118
|
||||||
|
Store 295 294
|
||||||
|
296: 42(fvec4) Load 201(pos)
|
||||||
|
297: 44(fvec3) VectorShuffle 296 296 0 1 2
|
||||||
|
298: 44(fvec3) FNegate 297
|
||||||
|
299: 148(ptr) AccessChain 101(output) 133
|
||||||
|
Store 299 298
|
||||||
|
301: 300(ptr) AccessChain 276 118 119
|
||||||
|
302: 42(fvec4) Load 301
|
||||||
|
303: 44(fvec3) VectorShuffle 302 302 0 1 2
|
||||||
|
304: 148(ptr) AccessChain 101(output) 133
|
||||||
|
305: 44(fvec3) Load 304
|
||||||
|
306: 44(fvec3) FAdd 303 305
|
||||||
|
307: 44(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 306
|
||||||
|
308: 148(ptr) AccessChain 101(output) 278
|
||||||
|
Store 308 307
|
||||||
|
310: 42(fvec4) Load 201(pos)
|
||||||
|
311: 44(fvec3) VectorShuffle 310 310 0 1 2
|
||||||
|
312: 148(ptr) AccessChain 101(output) 309
|
||||||
|
Store 312 311
|
||||||
|
314: 42(fvec4) Load 201(pos)
|
||||||
|
315: 288(ptr) AccessChain 276 118 121
|
||||||
|
316: 242 Load 315
|
||||||
|
317: 42(fvec4) VectorTimesMatrix 314 316
|
||||||
|
318: 44(fvec3) VectorShuffle 317 317 0 1 2
|
||||||
|
319: 148(ptr) AccessChain 101(output) 313
|
||||||
|
Store 319 318
|
||||||
|
320:62(DSOutput) Load 101(output)
|
||||||
|
ReturnValue 320
|
||||||
|
FunctionEnd
|
580
Test/baseResults/spv.debuginfo.hlsl.vert.out
Normal file
580
Test/baseResults/spv.debuginfo.hlsl.vert.out
Normal file
@ -0,0 +1,580 @@
|
|||||||
|
spv.debuginfo.hlsl.vert
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 443
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 5 "main" 392 395 399 402 405 408 412 416 424 428 431 434 437 440
|
||||||
|
9: String "float"
|
||||||
|
12: String "uint"
|
||||||
|
23: String "int"
|
||||||
|
28: String "instanceRot"
|
||||||
|
30: String ""
|
||||||
|
35: String "UV"
|
||||||
|
42: String "instanceScale"
|
||||||
|
46: String "instanceTexIndex"
|
||||||
|
50: String "VSInput"
|
||||||
|
59: String "Pos"
|
||||||
|
63: String "LightVec"
|
||||||
|
70: String "VSOutput"
|
||||||
|
75: String "@main"
|
||||||
|
81: String "input"
|
||||||
|
88: String "output"
|
||||||
|
116: String "s"
|
||||||
|
127: String "modelview"
|
||||||
|
132: String "lightPos"
|
||||||
|
136: String "globSpeed"
|
||||||
|
140: String "UBO"
|
||||||
|
143: String "ubo"
|
||||||
|
159: String "c"
|
||||||
|
173: String "mx"
|
||||||
|
202: String "my"
|
||||||
|
230: String "mz"
|
||||||
|
244: String "rotMat"
|
||||||
|
270: String "gRotMat"
|
||||||
|
289: String "locPos"
|
||||||
|
302: String "pos"
|
||||||
|
361: String "lPos"
|
||||||
|
Name 5 "main"
|
||||||
|
Name 26 "VSInput"
|
||||||
|
MemberName 26(VSInput) 0 "Pos"
|
||||||
|
MemberName 26(VSInput) 1 "Normal"
|
||||||
|
MemberName 26(VSInput) 2 "UV"
|
||||||
|
MemberName 26(VSInput) 3 "Color"
|
||||||
|
MemberName 26(VSInput) 4 "instancePos"
|
||||||
|
MemberName 26(VSInput) 5 "instanceRot"
|
||||||
|
MemberName 26(VSInput) 6 "instanceScale"
|
||||||
|
MemberName 26(VSInput) 7 "instanceTexIndex"
|
||||||
|
Name 57 "VSOutput"
|
||||||
|
MemberName 57(VSOutput) 0 "Pos"
|
||||||
|
MemberName 57(VSOutput) 1 "Normal"
|
||||||
|
MemberName 57(VSOutput) 2 "Color"
|
||||||
|
MemberName 57(VSOutput) 3 "UV"
|
||||||
|
MemberName 57(VSOutput) 4 "ViewVec"
|
||||||
|
MemberName 57(VSOutput) 5 "LightVec"
|
||||||
|
Name 74 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;"
|
||||||
|
Name 73 "input"
|
||||||
|
Name 86 "output"
|
||||||
|
Name 114 "s"
|
||||||
|
Name 125 "UBO"
|
||||||
|
MemberName 125(UBO) 0 "projection"
|
||||||
|
MemberName 125(UBO) 1 "modelview"
|
||||||
|
MemberName 125(UBO) 2 "lightPos"
|
||||||
|
MemberName 125(UBO) 3 "locSpeed"
|
||||||
|
MemberName 125(UBO) 4 "globSpeed"
|
||||||
|
Name 141 "ubo"
|
||||||
|
MemberName 141(ubo) 0 "ubo"
|
||||||
|
Name 147 ""
|
||||||
|
Name 157 "c"
|
||||||
|
Name 171 "mx"
|
||||||
|
Name 200 "my"
|
||||||
|
Name 228 "mz"
|
||||||
|
Name 242 "rotMat"
|
||||||
|
Name 268 "gRotMat"
|
||||||
|
Name 287 "locPos"
|
||||||
|
Name 300 "pos"
|
||||||
|
Name 359 "lPos"
|
||||||
|
Name 390 "input"
|
||||||
|
Name 392 "input.Pos"
|
||||||
|
Name 395 "input.Normal"
|
||||||
|
Name 399 "input.UV"
|
||||||
|
Name 402 "input.Color"
|
||||||
|
Name 405 "input.instancePos"
|
||||||
|
Name 408 "input.instanceRot"
|
||||||
|
Name 412 "input.instanceScale"
|
||||||
|
Name 416 "input.instanceTexIndex"
|
||||||
|
Name 419 "flattenTemp"
|
||||||
|
Name 420 "param"
|
||||||
|
Name 424 "@entryPointOutput.Pos"
|
||||||
|
Name 428 "@entryPointOutput.Normal"
|
||||||
|
Name 431 "@entryPointOutput.Color"
|
||||||
|
Name 434 "@entryPointOutput.UV"
|
||||||
|
Name 437 "@entryPointOutput.ViewVec"
|
||||||
|
Name 440 "@entryPointOutput.LightVec"
|
||||||
|
MemberDecorate 125(UBO) 0 RowMajor
|
||||||
|
MemberDecorate 125(UBO) 0 Offset 0
|
||||||
|
MemberDecorate 125(UBO) 0 MatrixStride 16
|
||||||
|
MemberDecorate 125(UBO) 1 RowMajor
|
||||||
|
MemberDecorate 125(UBO) 1 Offset 64
|
||||||
|
MemberDecorate 125(UBO) 1 MatrixStride 16
|
||||||
|
MemberDecorate 125(UBO) 2 Offset 128
|
||||||
|
MemberDecorate 125(UBO) 3 Offset 144
|
||||||
|
MemberDecorate 125(UBO) 4 Offset 148
|
||||||
|
MemberDecorate 141(ubo) 0 Offset 0
|
||||||
|
Decorate 141(ubo) Block
|
||||||
|
Decorate 147 DescriptorSet 0
|
||||||
|
Decorate 147 Binding 0
|
||||||
|
Decorate 392(input.Pos) Location 0
|
||||||
|
Decorate 395(input.Normal) Location 1
|
||||||
|
Decorate 399(input.UV) Location 2
|
||||||
|
Decorate 402(input.Color) Location 3
|
||||||
|
Decorate 405(input.instancePos) Location 4
|
||||||
|
Decorate 408(input.instanceRot) Location 5
|
||||||
|
Decorate 412(input.instanceScale) Location 6
|
||||||
|
Decorate 416(input.instanceTexIndex) Location 7
|
||||||
|
Decorate 424(@entryPointOutput.Pos) BuiltIn Position
|
||||||
|
Decorate 428(@entryPointOutput.Normal) Location 0
|
||||||
|
Decorate 431(@entryPointOutput.Color) Location 1
|
||||||
|
Decorate 434(@entryPointOutput.UV) Location 2
|
||||||
|
Decorate 437(@entryPointOutput.ViewVec) Location 3
|
||||||
|
Decorate 440(@entryPointOutput.LightVec) Location 4
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
7: TypeFloat 32
|
||||||
|
10: TypeInt 32 0
|
||||||
|
13: 10(int) Constant 32
|
||||||
|
14: 10(int) Constant 6
|
||||||
|
15: 10(int) Constant 0
|
||||||
|
11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
|
||||||
|
16: 10(int) Constant 3
|
||||||
|
8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
|
||||||
|
17: TypeVector 7(float) 3
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
|
||||||
|
19: TypeVector 7(float) 2
|
||||||
|
20: 10(int) Constant 2
|
||||||
|
21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20
|
||||||
|
22: TypeInt 32 1
|
||||||
|
25: 10(int) Constant 4
|
||||||
|
24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 23 13 25 15
|
||||||
|
26(VSInput): TypeStruct 17(fvec3) 17(fvec3) 19(fvec2) 17(fvec3) 17(fvec3) 17(fvec3) 7(float) 22(int)
|
||||||
|
29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30
|
||||||
|
31: 10(int) Constant 35
|
||||||
|
32: 10(int) Constant 40
|
||||||
|
27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
|
||||||
|
33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
|
||||||
|
36: 10(int) Constant 30
|
||||||
|
37: 10(int) Constant 31
|
||||||
|
34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 35 21 29 36 37 15 15 16
|
||||||
|
38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
|
||||||
|
39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
|
||||||
|
43: 10(int) Constant 36
|
||||||
|
44: 10(int) Constant 41
|
||||||
|
41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 42 8 29 43 44 15 15 16
|
||||||
|
47: 10(int) Constant 37
|
||||||
|
48: 10(int) Constant 42
|
||||||
|
45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 24 29 47 48 15 15 16
|
||||||
|
51: 10(int) Constant 1
|
||||||
|
53: 10(int) Constant 5
|
||||||
|
52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 51 25 29 53
|
||||||
|
49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45
|
||||||
|
54: TypePointer Function 26(VSInput)
|
||||||
|
55: TypeVector 7(float) 4
|
||||||
|
56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 25
|
||||||
|
57(VSOutput): TypeStruct 55(fvec4) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3)
|
||||||
|
60: 10(int) Constant 53
|
||||||
|
61: 10(int) Constant 13
|
||||||
|
58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 59 56 29 60 61 15 15 16
|
||||||
|
64: 10(int) Constant 58
|
||||||
|
62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
|
||||||
|
65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
|
||||||
|
66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
|
||||||
|
67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
|
||||||
|
68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
|
||||||
|
69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68
|
||||||
|
71: TypeFunction 57(VSOutput) 54(ptr)
|
||||||
|
72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 69 49
|
||||||
|
76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 72 29 15 15 52 75 16 15
|
||||||
|
80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 49 29 15 15 76 25 51
|
||||||
|
83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
85: TypePointer Function 57(VSOutput)
|
||||||
|
89: 10(int) Constant 63
|
||||||
|
87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 88 69 29 89 15 76 25
|
||||||
|
90: 7(float) Constant 0
|
||||||
|
91: 55(fvec4) ConstantComposite 90 90 90 90
|
||||||
|
92: 17(fvec3) ConstantComposite 90 90 90
|
||||||
|
93:57(VSOutput) ConstantComposite 91 92 92 92 92 92
|
||||||
|
95: 22(int) Constant 2
|
||||||
|
96: 22(int) Constant 3
|
||||||
|
97: TypePointer Function 17(fvec3)
|
||||||
|
101: TypePointer Function 19(fvec2)
|
||||||
|
104: 22(int) Constant 7
|
||||||
|
105: TypePointer Function 22(int)
|
||||||
|
113: TypePointer Function 7(float)
|
||||||
|
117: 10(int) Constant 68
|
||||||
|
115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 116 8 29 117 15 76 25
|
||||||
|
118: 22(int) Constant 5
|
||||||
|
121: TypeMatrix 55(fvec4) 4
|
||||||
|
123: TypeBool
|
||||||
|
124: 123(bool) ConstantTrue
|
||||||
|
122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 124
|
||||||
|
125(UBO): TypeStruct 121 121 55(fvec4) 7(float) 7(float)
|
||||||
|
128: 10(int) Constant 43
|
||||||
|
129: 10(int) Constant 20
|
||||||
|
126: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16
|
||||||
|
130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16
|
||||||
|
133: 10(int) Constant 44
|
||||||
|
134: 10(int) Constant 17
|
||||||
|
131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 56 29 133 134 15 15 16
|
||||||
|
137: 10(int) Constant 46
|
||||||
|
135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16
|
||||||
|
138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16
|
||||||
|
139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 140 51 29 117 15 52 140 15 16 126 130 131 135 138
|
||||||
|
141(ubo): TypeStruct 125(UBO)
|
||||||
|
144: 10(int) Constant 49
|
||||||
|
142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 143 139 29 144 47 15 15 16
|
||||||
|
145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 143 51 29 117 15 52 143 15 16 142
|
||||||
|
146: TypePointer Uniform 141(ubo)
|
||||||
|
147: 146(ptr) Variable Uniform
|
||||||
|
149: 10(int) Constant 8
|
||||||
|
148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 145 29 117 15 52 30 147 149
|
||||||
|
150: 22(int) Constant 0
|
||||||
|
151: TypePointer Uniform 7(float)
|
||||||
|
160: 10(int) Constant 69
|
||||||
|
158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 159 8 29 160 15 76 25
|
||||||
|
168: TypeMatrix 17(fvec3) 3
|
||||||
|
169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 124
|
||||||
|
170: TypePointer Function 168
|
||||||
|
174: 10(int) Constant 71
|
||||||
|
172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 173 169 29 174 15 76 25
|
||||||
|
180: 7(float) Constant 1065353216
|
||||||
|
203: 10(int) Constant 79
|
||||||
|
201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 169 29 203 15 76 25
|
||||||
|
231: 10(int) Constant 87
|
||||||
|
229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 169 29 231 15 76 25
|
||||||
|
245: 10(int) Constant 91
|
||||||
|
243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 169 29 245 15 76 25
|
||||||
|
254: 22(int) Constant 4
|
||||||
|
267: TypePointer Function 121
|
||||||
|
271: 10(int) Constant 96
|
||||||
|
269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 270 122 29 271 15 76 25
|
||||||
|
276: TypePointer Function 55(fvec4)
|
||||||
|
278: 22(int) Constant 1
|
||||||
|
279: 55(fvec4) ConstantComposite 90 180 90 90
|
||||||
|
285: 55(fvec4) ConstantComposite 90 90 90 180
|
||||||
|
290: 10(int) Constant 101
|
||||||
|
288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 56 29 290 15 76 25
|
||||||
|
303: 10(int) Constant 102
|
||||||
|
301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 302 56 29 303 15 76 25
|
||||||
|
306: 22(int) Constant 6
|
||||||
|
321: TypePointer Uniform 121
|
||||||
|
362: 10(int) Constant 108
|
||||||
|
360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 361 18 29 362 15 76 25
|
||||||
|
363: TypePointer Uniform 55(fvec4)
|
||||||
|
391: TypePointer Input 17(fvec3)
|
||||||
|
392(input.Pos): 391(ptr) Variable Input
|
||||||
|
395(input.Normal): 391(ptr) Variable Input
|
||||||
|
398: TypePointer Input 19(fvec2)
|
||||||
|
399(input.UV): 398(ptr) Variable Input
|
||||||
|
402(input.Color): 391(ptr) Variable Input
|
||||||
|
405(input.instancePos): 391(ptr) Variable Input
|
||||||
|
408(input.instanceRot): 391(ptr) Variable Input
|
||||||
|
411: TypePointer Input 7(float)
|
||||||
|
412(input.instanceScale): 411(ptr) Variable Input
|
||||||
|
415: TypePointer Input 22(int)
|
||||||
|
416(input.instanceTexIndex): 415(ptr) Variable Input
|
||||||
|
423: TypePointer Output 55(fvec4)
|
||||||
|
424(@entryPointOutput.Pos): 423(ptr) Variable Output
|
||||||
|
427: TypePointer Output 17(fvec3)
|
||||||
|
428(@entryPointOutput.Normal): 427(ptr) Variable Output
|
||||||
|
431(@entryPointOutput.Color): 427(ptr) Variable Output
|
||||||
|
434(@entryPointOutput.UV): 427(ptr) Variable Output
|
||||||
|
437(@entryPointOutput.ViewVec): 427(ptr) Variable Output
|
||||||
|
440(@entryPointOutput.LightVec): 427(ptr) Variable Output
|
||||||
|
5(main): 3 Function None 4
|
||||||
|
6: Label
|
||||||
|
390(input): 54(ptr) Variable Function
|
||||||
|
419(flattenTemp): 85(ptr) Variable Function
|
||||||
|
420(param): 54(ptr) Variable Function
|
||||||
|
393: 17(fvec3) Load 392(input.Pos)
|
||||||
|
394: 97(ptr) AccessChain 390(input) 150
|
||||||
|
Store 394 393
|
||||||
|
396: 17(fvec3) Load 395(input.Normal)
|
||||||
|
397: 97(ptr) AccessChain 390(input) 278
|
||||||
|
Store 397 396
|
||||||
|
400: 19(fvec2) Load 399(input.UV)
|
||||||
|
401: 101(ptr) AccessChain 390(input) 95
|
||||||
|
Store 401 400
|
||||||
|
403: 17(fvec3) Load 402(input.Color)
|
||||||
|
404: 97(ptr) AccessChain 390(input) 96
|
||||||
|
Store 404 403
|
||||||
|
406: 17(fvec3) Load 405(input.instancePos)
|
||||||
|
407: 97(ptr) AccessChain 390(input) 254
|
||||||
|
Store 407 406
|
||||||
|
409: 17(fvec3) Load 408(input.instanceRot)
|
||||||
|
410: 97(ptr) AccessChain 390(input) 118
|
||||||
|
Store 410 409
|
||||||
|
413: 7(float) Load 412(input.instanceScale)
|
||||||
|
414: 113(ptr) AccessChain 390(input) 306
|
||||||
|
Store 414 413
|
||||||
|
417: 22(int) Load 416(input.instanceTexIndex)
|
||||||
|
418: 105(ptr) AccessChain 390(input) 104
|
||||||
|
Store 418 417
|
||||||
|
421: 26(VSInput) Load 390(input)
|
||||||
|
Store 420(param) 421
|
||||||
|
422:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 420(param)
|
||||||
|
Store 419(flattenTemp) 422
|
||||||
|
425: 276(ptr) AccessChain 419(flattenTemp) 150
|
||||||
|
426: 55(fvec4) Load 425
|
||||||
|
Store 424(@entryPointOutput.Pos) 426
|
||||||
|
429: 97(ptr) AccessChain 419(flattenTemp) 278
|
||||||
|
430: 17(fvec3) Load 429
|
||||||
|
Store 428(@entryPointOutput.Normal) 430
|
||||||
|
432: 97(ptr) AccessChain 419(flattenTemp) 95
|
||||||
|
433: 17(fvec3) Load 432
|
||||||
|
Store 431(@entryPointOutput.Color) 433
|
||||||
|
435: 97(ptr) AccessChain 419(flattenTemp) 96
|
||||||
|
436: 17(fvec3) Load 435
|
||||||
|
Store 434(@entryPointOutput.UV) 436
|
||||||
|
438: 97(ptr) AccessChain 419(flattenTemp) 254
|
||||||
|
439: 17(fvec3) Load 438
|
||||||
|
Store 437(@entryPointOutput.ViewVec) 439
|
||||||
|
441: 97(ptr) AccessChain 419(flattenTemp) 118
|
||||||
|
442: 17(fvec3) Load 441
|
||||||
|
Store 440(@entryPointOutput.LightVec) 442
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):57(VSOutput) Function None 71
|
||||||
|
73(input): 54(ptr) FunctionParameter
|
||||||
|
77: Label
|
||||||
|
86(output): 85(ptr) Variable Function
|
||||||
|
114(s): 113(ptr) Variable Function
|
||||||
|
157(c): 113(ptr) Variable Function
|
||||||
|
171(mx): 170(ptr) Variable Function
|
||||||
|
200(my): 170(ptr) Variable Function
|
||||||
|
228(mz): 170(ptr) Variable Function
|
||||||
|
242(rotMat): 170(ptr) Variable Function
|
||||||
|
268(gRotMat): 267(ptr) Variable Function
|
||||||
|
287(locPos): 276(ptr) Variable Function
|
||||||
|
300(pos): 276(ptr) Variable Function
|
||||||
|
359(lPos): 97(ptr) Variable Function
|
||||||
|
78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76
|
||||||
|
79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15
|
||||||
|
82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 73(input) 83
|
||||||
|
84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;)
|
||||||
|
Store 86(output) 93
|
||||||
|
94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 87 93 83
|
||||||
|
98: 97(ptr) AccessChain 73(input) 96
|
||||||
|
99: 17(fvec3) Load 98
|
||||||
|
100: 97(ptr) AccessChain 86(output) 95
|
||||||
|
Store 100 99
|
||||||
|
102: 101(ptr) AccessChain 73(input) 95
|
||||||
|
103: 19(fvec2) Load 102
|
||||||
|
106: 105(ptr) AccessChain 73(input) 104
|
||||||
|
107: 22(int) Load 106
|
||||||
|
108: 7(float) ConvertSToF 107
|
||||||
|
109: 7(float) CompositeExtract 103 0
|
||||||
|
110: 7(float) CompositeExtract 103 1
|
||||||
|
111: 17(fvec3) CompositeConstruct 109 110 108
|
||||||
|
112: 97(ptr) AccessChain 86(output) 96
|
||||||
|
Store 112 111
|
||||||
|
119: 113(ptr) AccessChain 73(input) 118 15
|
||||||
|
120: 7(float) Load 119
|
||||||
|
152: 151(ptr) AccessChain 147 150 96
|
||||||
|
153: 7(float) Load 152
|
||||||
|
154: 7(float) FAdd 120 153
|
||||||
|
155: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 154
|
||||||
|
Store 114(s) 155
|
||||||
|
156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 155 83
|
||||||
|
161: 113(ptr) AccessChain 73(input) 118 15
|
||||||
|
162: 7(float) Load 161
|
||||||
|
163: 151(ptr) AccessChain 147 150 96
|
||||||
|
164: 7(float) Load 163
|
||||||
|
165: 7(float) FAdd 162 164
|
||||||
|
166: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 165
|
||||||
|
Store 157(c) 166
|
||||||
|
167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 166 83
|
||||||
|
175: 7(float) Load 157(c)
|
||||||
|
176: 7(float) Load 114(s)
|
||||||
|
177: 7(float) FNegate 176
|
||||||
|
178: 7(float) Load 114(s)
|
||||||
|
179: 7(float) Load 157(c)
|
||||||
|
181: 17(fvec3) CompositeConstruct 175 177 90
|
||||||
|
182: 17(fvec3) CompositeConstruct 178 179 90
|
||||||
|
183: 17(fvec3) CompositeConstruct 90 90 180
|
||||||
|
184: 168 CompositeConstruct 181 182 183
|
||||||
|
Store 171(mx) 184
|
||||||
|
185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 172 184 83
|
||||||
|
186: 113(ptr) AccessChain 73(input) 118 51
|
||||||
|
187: 7(float) Load 186
|
||||||
|
188: 151(ptr) AccessChain 147 150 96
|
||||||
|
189: 7(float) Load 188
|
||||||
|
190: 7(float) FAdd 187 189
|
||||||
|
191: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 190
|
||||||
|
Store 114(s) 191
|
||||||
|
192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 191 83
|
||||||
|
193: 113(ptr) AccessChain 73(input) 118 51
|
||||||
|
194: 7(float) Load 193
|
||||||
|
195: 151(ptr) AccessChain 147 150 96
|
||||||
|
196: 7(float) Load 195
|
||||||
|
197: 7(float) FAdd 194 196
|
||||||
|
198: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 197
|
||||||
|
Store 157(c) 198
|
||||||
|
199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 198 83
|
||||||
|
204: 7(float) Load 157(c)
|
||||||
|
205: 7(float) Load 114(s)
|
||||||
|
206: 7(float) FNegate 205
|
||||||
|
207: 7(float) Load 114(s)
|
||||||
|
208: 7(float) Load 157(c)
|
||||||
|
209: 17(fvec3) CompositeConstruct 204 90 206
|
||||||
|
210: 17(fvec3) CompositeConstruct 90 180 90
|
||||||
|
211: 17(fvec3) CompositeConstruct 207 90 208
|
||||||
|
212: 168 CompositeConstruct 209 210 211
|
||||||
|
Store 200(my) 212
|
||||||
|
213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 212 83
|
||||||
|
214: 113(ptr) AccessChain 73(input) 118 20
|
||||||
|
215: 7(float) Load 214
|
||||||
|
216: 151(ptr) AccessChain 147 150 96
|
||||||
|
217: 7(float) Load 216
|
||||||
|
218: 7(float) FAdd 215 217
|
||||||
|
219: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 218
|
||||||
|
Store 114(s) 219
|
||||||
|
220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 219 83
|
||||||
|
221: 113(ptr) AccessChain 73(input) 118 20
|
||||||
|
222: 7(float) Load 221
|
||||||
|
223: 151(ptr) AccessChain 147 150 96
|
||||||
|
224: 7(float) Load 223
|
||||||
|
225: 7(float) FAdd 222 224
|
||||||
|
226: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 225
|
||||||
|
Store 157(c) 226
|
||||||
|
227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 226 83
|
||||||
|
232: 7(float) Load 157(c)
|
||||||
|
233: 7(float) Load 114(s)
|
||||||
|
234: 7(float) FNegate 233
|
||||||
|
235: 7(float) Load 114(s)
|
||||||
|
236: 7(float) Load 157(c)
|
||||||
|
237: 17(fvec3) CompositeConstruct 180 90 90
|
||||||
|
238: 17(fvec3) CompositeConstruct 90 232 234
|
||||||
|
239: 17(fvec3) CompositeConstruct 90 235 236
|
||||||
|
240: 168 CompositeConstruct 237 238 239
|
||||||
|
Store 228(mz) 240
|
||||||
|
241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 240 83
|
||||||
|
246: 168 Load 171(mx)
|
||||||
|
247: 168 Load 200(my)
|
||||||
|
248: 168 MatrixTimesMatrix 246 247
|
||||||
|
249: 168 Load 228(mz)
|
||||||
|
250: 168 MatrixTimesMatrix 248 249
|
||||||
|
Store 242(rotMat) 250
|
||||||
|
251: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 243 250 83
|
||||||
|
252: 113(ptr) AccessChain 73(input) 118 51
|
||||||
|
253: 7(float) Load 252
|
||||||
|
255: 151(ptr) AccessChain 147 150 254
|
||||||
|
256: 7(float) Load 255
|
||||||
|
257: 7(float) FAdd 253 256
|
||||||
|
258: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 257
|
||||||
|
Store 114(s) 258
|
||||||
|
259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 258 83
|
||||||
|
260: 113(ptr) AccessChain 73(input) 118 51
|
||||||
|
261: 7(float) Load 260
|
||||||
|
262: 151(ptr) AccessChain 147 150 254
|
||||||
|
263: 7(float) Load 262
|
||||||
|
264: 7(float) FAdd 261 263
|
||||||
|
265: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 264
|
||||||
|
Store 157(c) 265
|
||||||
|
266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 265 83
|
||||||
|
272: 7(float) Load 157(c)
|
||||||
|
273: 7(float) Load 114(s)
|
||||||
|
274: 7(float) FNegate 273
|
||||||
|
275: 55(fvec4) CompositeConstruct 272 90 274 90
|
||||||
|
277: 276(ptr) AccessChain 268(gRotMat) 150
|
||||||
|
Store 277 275
|
||||||
|
280: 276(ptr) AccessChain 268(gRotMat) 278
|
||||||
|
Store 280 279
|
||||||
|
281: 7(float) Load 114(s)
|
||||||
|
282: 7(float) Load 157(c)
|
||||||
|
283: 55(fvec4) CompositeConstruct 281 90 282 90
|
||||||
|
284: 276(ptr) AccessChain 268(gRotMat) 95
|
||||||
|
Store 284 283
|
||||||
|
286: 276(ptr) AccessChain 268(gRotMat) 96
|
||||||
|
Store 286 285
|
||||||
|
291: 97(ptr) AccessChain 73(input) 150
|
||||||
|
292: 17(fvec3) Load 291
|
||||||
|
293: 168 Load 242(rotMat)
|
||||||
|
294: 17(fvec3) VectorTimesMatrix 292 293
|
||||||
|
295: 7(float) CompositeExtract 294 0
|
||||||
|
296: 7(float) CompositeExtract 294 1
|
||||||
|
297: 7(float) CompositeExtract 294 2
|
||||||
|
298: 55(fvec4) CompositeConstruct 295 296 297 180
|
||||||
|
Store 287(locPos) 298
|
||||||
|
299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 298 83
|
||||||
|
304: 55(fvec4) Load 287(locPos)
|
||||||
|
305: 17(fvec3) VectorShuffle 304 304 0 1 2
|
||||||
|
307: 113(ptr) AccessChain 73(input) 306
|
||||||
|
308: 7(float) Load 307
|
||||||
|
309: 17(fvec3) VectorTimesScalar 305 308
|
||||||
|
310: 97(ptr) AccessChain 73(input) 254
|
||||||
|
311: 17(fvec3) Load 310
|
||||||
|
312: 17(fvec3) FAdd 309 311
|
||||||
|
313: 7(float) CompositeExtract 312 0
|
||||||
|
314: 7(float) CompositeExtract 312 1
|
||||||
|
315: 7(float) CompositeExtract 312 2
|
||||||
|
316: 55(fvec4) CompositeConstruct 313 314 315 180
|
||||||
|
Store 300(pos) 316
|
||||||
|
317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 316 83
|
||||||
|
318: 55(fvec4) Load 300(pos)
|
||||||
|
319: 121 Load 268(gRotMat)
|
||||||
|
320: 55(fvec4) VectorTimesMatrix 318 319
|
||||||
|
322: 321(ptr) AccessChain 147 150 278
|
||||||
|
323: 121 Load 322
|
||||||
|
324: 55(fvec4) VectorTimesMatrix 320 323
|
||||||
|
325: 321(ptr) AccessChain 147 150 150
|
||||||
|
326: 121 Load 325
|
||||||
|
327: 55(fvec4) VectorTimesMatrix 324 326
|
||||||
|
328: 276(ptr) AccessChain 86(output) 150
|
||||||
|
Store 328 327
|
||||||
|
329: 97(ptr) AccessChain 73(input) 278
|
||||||
|
330: 17(fvec3) Load 329
|
||||||
|
331: 168 Load 242(rotMat)
|
||||||
|
332: 17(fvec3) VectorTimesMatrix 330 331
|
||||||
|
333: 121 Load 268(gRotMat)
|
||||||
|
334: 321(ptr) AccessChain 147 150 278
|
||||||
|
335: 121 Load 334
|
||||||
|
336: 121 MatrixTimesMatrix 333 335
|
||||||
|
337: 55(fvec4) CompositeExtract 336 0
|
||||||
|
338: 17(fvec3) VectorShuffle 337 337 0 1 2
|
||||||
|
339: 55(fvec4) CompositeExtract 336 1
|
||||||
|
340: 17(fvec3) VectorShuffle 339 339 0 1 2
|
||||||
|
341: 55(fvec4) CompositeExtract 336 2
|
||||||
|
342: 17(fvec3) VectorShuffle 341 341 0 1 2
|
||||||
|
343: 168 CompositeConstruct 338 340 342
|
||||||
|
344: 17(fvec3) VectorTimesMatrix 332 343
|
||||||
|
345: 97(ptr) AccessChain 86(output) 278
|
||||||
|
Store 345 344
|
||||||
|
346: 97(ptr) AccessChain 73(input) 150
|
||||||
|
347: 17(fvec3) Load 346
|
||||||
|
348: 97(ptr) AccessChain 73(input) 254
|
||||||
|
349: 17(fvec3) Load 348
|
||||||
|
350: 17(fvec3) FAdd 347 349
|
||||||
|
351: 7(float) CompositeExtract 350 0
|
||||||
|
352: 7(float) CompositeExtract 350 1
|
||||||
|
353: 7(float) CompositeExtract 350 2
|
||||||
|
354: 55(fvec4) CompositeConstruct 351 352 353 180
|
||||||
|
355: 321(ptr) AccessChain 147 150 278
|
||||||
|
356: 121 Load 355
|
||||||
|
357: 55(fvec4) VectorTimesMatrix 354 356
|
||||||
|
Store 300(pos) 357
|
||||||
|
358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 357 83
|
||||||
|
364: 363(ptr) AccessChain 147 150 95
|
||||||
|
365: 55(fvec4) Load 364
|
||||||
|
366: 17(fvec3) VectorShuffle 365 365 0 1 2
|
||||||
|
367: 321(ptr) AccessChain 147 150 278
|
||||||
|
368: 121 Load 367
|
||||||
|
369: 55(fvec4) CompositeExtract 368 0
|
||||||
|
370: 17(fvec3) VectorShuffle 369 369 0 1 2
|
||||||
|
371: 55(fvec4) CompositeExtract 368 1
|
||||||
|
372: 17(fvec3) VectorShuffle 371 371 0 1 2
|
||||||
|
373: 55(fvec4) CompositeExtract 368 2
|
||||||
|
374: 17(fvec3) VectorShuffle 373 373 0 1 2
|
||||||
|
375: 168 CompositeConstruct 370 372 374
|
||||||
|
376: 17(fvec3) VectorTimesMatrix 366 375
|
||||||
|
Store 359(lPos) 376
|
||||||
|
377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 360 376 83
|
||||||
|
378: 17(fvec3) Load 359(lPos)
|
||||||
|
379: 55(fvec4) Load 300(pos)
|
||||||
|
380: 17(fvec3) VectorShuffle 379 379 0 1 2
|
||||||
|
381: 17(fvec3) FSub 378 380
|
||||||
|
382: 97(ptr) AccessChain 86(output) 118
|
||||||
|
Store 382 381
|
||||||
|
383: 55(fvec4) Load 300(pos)
|
||||||
|
384: 17(fvec3) VectorShuffle 383 383 0 1 2
|
||||||
|
385: 17(fvec3) FNegate 384
|
||||||
|
386: 97(ptr) AccessChain 86(output) 254
|
||||||
|
Store 386 385
|
||||||
|
387:57(VSOutput) Load 86(output)
|
||||||
|
ReturnValue 387
|
||||||
|
FunctionEnd
|
177
Test/spv.debuginfo.glsl.comp
Normal file
177
Test/spv.debuginfo.glsl.comp
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
struct Particle {
|
||||||
|
vec4 pos;
|
||||||
|
vec4 vel;
|
||||||
|
vec4 uv;
|
||||||
|
vec4 normal;
|
||||||
|
float pinned;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(std430, binding = 0) buffer ParticleIn {
|
||||||
|
Particle particleIn[ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(std430, binding = 1) buffer ParticleOut {
|
||||||
|
Particle particleOut[ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
// todo: use shared memory to speed up calculation
|
||||||
|
|
||||||
|
layout (local_size_x = 10, local_size_y = 10) in;
|
||||||
|
|
||||||
|
layout (binding = 2) uniform UBO
|
||||||
|
{
|
||||||
|
float deltaT;
|
||||||
|
float particleMass;
|
||||||
|
float springStiffness;
|
||||||
|
float damping;
|
||||||
|
float restDistH;
|
||||||
|
float restDistV;
|
||||||
|
float restDistD;
|
||||||
|
float sphereRadius;
|
||||||
|
vec4 spherePos;
|
||||||
|
vec4 gravity;
|
||||||
|
ivec2 particleCount;
|
||||||
|
} params;
|
||||||
|
|
||||||
|
layout (push_constant) uniform PushConsts {
|
||||||
|
uint calculateNormals;
|
||||||
|
} pushConsts;
|
||||||
|
|
||||||
|
vec3 springForce(vec3 p0, vec3 p1, float restDist)
|
||||||
|
{
|
||||||
|
vec3 dist = p0 - p1;
|
||||||
|
return normalize(dist) * params.springStiffness * (length(dist) - restDist);
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uvec3 id = gl_GlobalInvocationID;
|
||||||
|
|
||||||
|
uint index = id.y * params.particleCount.x + id.x;
|
||||||
|
if (index > params.particleCount.x * params.particleCount.y)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Pinned?
|
||||||
|
if (particleIn[index].pinned == 1.0) {
|
||||||
|
particleOut[index].pos = particleOut[index].pos;
|
||||||
|
particleOut[index].vel = vec4(0.0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initial force from gravity
|
||||||
|
vec3 force = params.gravity.xyz * params.particleMass;
|
||||||
|
|
||||||
|
vec3 pos = particleIn[index].pos.xyz;
|
||||||
|
vec3 vel = particleIn[index].vel.xyz;
|
||||||
|
|
||||||
|
// Spring forces from neighboring particles
|
||||||
|
// left
|
||||||
|
if (id.x > 0) {
|
||||||
|
force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH);
|
||||||
|
}
|
||||||
|
// right
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH);
|
||||||
|
}
|
||||||
|
// upper
|
||||||
|
if (id.y < params.particleCount.y - 1) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV);
|
||||||
|
}
|
||||||
|
// lower
|
||||||
|
if (id.y > 0) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV);
|
||||||
|
}
|
||||||
|
// upper-left
|
||||||
|
if ((id.x > 0) && (id.y < params.particleCount.y - 1)) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// lower-left
|
||||||
|
if ((id.x > 0) && (id.y > 0)) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// upper-right
|
||||||
|
if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// lower-right
|
||||||
|
if ((id.x < params.particleCount.x - 1) && (id.y > 0)) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
|
||||||
|
force += (-params.damping * vel);
|
||||||
|
|
||||||
|
// Integrate
|
||||||
|
vec3 f = force * (1.0 / params.particleMass);
|
||||||
|
particleOut[index].pos = vec4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0);
|
||||||
|
particleOut[index].vel = vec4(vel + f * params.deltaT, 0.0);
|
||||||
|
|
||||||
|
// Sphere collision
|
||||||
|
vec3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz;
|
||||||
|
if (length(sphereDist) < params.sphereRadius + 0.01) {
|
||||||
|
// If the particle is inside the sphere, push it to the outer radius
|
||||||
|
particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01);
|
||||||
|
// Cancel out velocity
|
||||||
|
particleOut[index].vel = vec4(0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Normals
|
||||||
|
if (pushConsts.calculateNormals == 1) {
|
||||||
|
vec3 normal = vec3(0.0);
|
||||||
|
vec3 a, b, c;
|
||||||
|
if (id.y > 0) {
|
||||||
|
if (id.x > 0) {
|
||||||
|
a = particleIn[index - 1].pos.xyz - pos;
|
||||||
|
b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index - params.particleCount.x].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
a = particleIn[index - params.particleCount.x].pos.xyz - pos;
|
||||||
|
b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index + 1].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (id.y < params.particleCount.y - 1) {
|
||||||
|
if (id.x > 0) {
|
||||||
|
a = particleIn[index + params.particleCount.x].pos.xyz - pos;
|
||||||
|
b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index - 1].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
a = particleIn[index + 1].pos.xyz - pos;
|
||||||
|
b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index + params.particleCount.x].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
particleOut[index].normal = vec4(normalize(normal), 0.0f);
|
||||||
|
}
|
||||||
|
}
|
192
Test/spv.debuginfo.glsl.frag
Normal file
192
Test/spv.debuginfo.glsl.frag
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
layout (binding = 1) uniform sampler2D samplerposition;
|
||||||
|
layout (binding = 2) uniform sampler2D samplerNormal;
|
||||||
|
layout (binding = 3) uniform sampler2D samplerAlbedo;
|
||||||
|
layout (binding = 5) uniform sampler2DArray samplerShadowMap;
|
||||||
|
|
||||||
|
layout (location = 0) in vec2 inUV;
|
||||||
|
|
||||||
|
layout (location = 0) out vec4 outFragColor;
|
||||||
|
|
||||||
|
#define LIGHT_COUNT 3
|
||||||
|
#define SHADOW_FACTOR 0.25
|
||||||
|
#define AMBIENT_LIGHT 0.1
|
||||||
|
#define USE_PCF
|
||||||
|
|
||||||
|
struct Light
|
||||||
|
{
|
||||||
|
vec4 position;
|
||||||
|
vec4 target;
|
||||||
|
vec4 color;
|
||||||
|
mat4 viewMatrix;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout (binding = 4) uniform UBO
|
||||||
|
{
|
||||||
|
vec4 viewPos;
|
||||||
|
Light lights[LIGHT_COUNT];
|
||||||
|
int useShadows;
|
||||||
|
int debugDisplayTarget;
|
||||||
|
} ubo;
|
||||||
|
|
||||||
|
float textureProj(vec4 P, float layer, vec2 offset)
|
||||||
|
{
|
||||||
|
float shadow = 1.0;
|
||||||
|
vec4 shadowCoord = P / P.w;
|
||||||
|
shadowCoord.st = shadowCoord.st * 0.5 + 0.5;
|
||||||
|
|
||||||
|
if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0)
|
||||||
|
{
|
||||||
|
float dist = texture(samplerShadowMap, vec3(shadowCoord.st + offset, layer)).r;
|
||||||
|
if (shadowCoord.w > 0.0 && dist < shadowCoord.z)
|
||||||
|
{
|
||||||
|
shadow = SHADOW_FACTOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
float filterPCF(vec4 sc, float layer)
|
||||||
|
{
|
||||||
|
ivec2 texDim = textureSize(samplerShadowMap, 0).xy;
|
||||||
|
float scale = 1.5;
|
||||||
|
float dx = scale * 1.0 / float(texDim.x);
|
||||||
|
float dy = scale * 1.0 / float(texDim.y);
|
||||||
|
|
||||||
|
float shadowFactor = 0.0;
|
||||||
|
int count = 0;
|
||||||
|
int range = 1;
|
||||||
|
|
||||||
|
for (int x = -range; x <= range; x++)
|
||||||
|
{
|
||||||
|
for (int y = -range; y <= range; y++)
|
||||||
|
{
|
||||||
|
shadowFactor += textureProj(sc, layer, vec2(dx*x, dy*y));
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return shadowFactor / count;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 shadow(vec3 fragcolor, vec3 fragpos) {
|
||||||
|
for(int i = 0; i < LIGHT_COUNT; ++i)
|
||||||
|
{
|
||||||
|
vec4 shadowClip = ubo.lights[i].viewMatrix * vec4(fragpos, 1.0);
|
||||||
|
|
||||||
|
float shadowFactor;
|
||||||
|
#ifdef USE_PCF
|
||||||
|
shadowFactor= filterPCF(shadowClip, i);
|
||||||
|
#else
|
||||||
|
shadowFactor = textureProj(shadowClip, i, vec2(0.0));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fragcolor *= shadowFactor;
|
||||||
|
}
|
||||||
|
return fragcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// Get G-Buffer values
|
||||||
|
vec3 fragPos = texture(samplerposition, inUV).rgb;
|
||||||
|
vec3 normal = texture(samplerNormal, inUV).rgb;
|
||||||
|
vec4 albedo = texture(samplerAlbedo, inUV);
|
||||||
|
|
||||||
|
// Debug display
|
||||||
|
if (ubo.debugDisplayTarget > 0) {
|
||||||
|
switch (ubo.debugDisplayTarget) {
|
||||||
|
case 1:
|
||||||
|
outFragColor.rgb = shadow(vec3(1.0), fragPos).rgb;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
outFragColor.rgb = fragPos;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
outFragColor.rgb = normal;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
outFragColor.rgb = albedo.rgb;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
outFragColor.rgb = albedo.aaa;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
outFragColor.a = 1.0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ambient part
|
||||||
|
vec3 fragcolor = albedo.rgb * AMBIENT_LIGHT;
|
||||||
|
|
||||||
|
vec3 N = normalize(normal);
|
||||||
|
|
||||||
|
for(int i = 0; i < LIGHT_COUNT; ++i)
|
||||||
|
{
|
||||||
|
// Vector to light
|
||||||
|
vec3 L = ubo.lights[i].position.xyz - fragPos;
|
||||||
|
// Distance from light to fragment position
|
||||||
|
float dist = length(L);
|
||||||
|
L = normalize(L);
|
||||||
|
|
||||||
|
// Viewer to fragment
|
||||||
|
vec3 V = ubo.viewPos.xyz - fragPos;
|
||||||
|
V = normalize(V);
|
||||||
|
|
||||||
|
float lightCosInnerAngle = cos(radians(15.0));
|
||||||
|
float lightCosOuterAngle = cos(radians(25.0));
|
||||||
|
float lightRange = 100.0;
|
||||||
|
|
||||||
|
// Direction vector from source to target
|
||||||
|
vec3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz);
|
||||||
|
|
||||||
|
// Dual cone spot light with smooth transition between inner and outer angle
|
||||||
|
float cosDir = dot(L, dir);
|
||||||
|
float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir);
|
||||||
|
float heightAttenuation = smoothstep(lightRange, 0.0f, dist);
|
||||||
|
|
||||||
|
// Diffuse lighting
|
||||||
|
float NdotL = max(0.0, dot(N, L));
|
||||||
|
vec3 diff = vec3(NdotL);
|
||||||
|
|
||||||
|
// Specular lighting
|
||||||
|
vec3 R = reflect(-L, N);
|
||||||
|
float NdotR = max(0.0, dot(R, V));
|
||||||
|
vec3 spec = vec3(pow(NdotR, 16.0) * albedo.a * 2.5);
|
||||||
|
|
||||||
|
fragcolor += vec3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shadow calculations in a separate pass
|
||||||
|
if (ubo.useShadows > 0)
|
||||||
|
{
|
||||||
|
fragcolor = shadow(fragcolor, fragPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
outFragColor = vec4(fragcolor, 1.0);
|
||||||
|
}
|
69
Test/spv.debuginfo.glsl.geom
Normal file
69
Test/spv.debuginfo.glsl.geom
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_ARB_viewport_array : enable
|
||||||
|
|
||||||
|
layout (triangles, invocations = 2) in;
|
||||||
|
layout (triangle_strip, max_vertices = 3) out;
|
||||||
|
|
||||||
|
layout (binding = 0) uniform UBO
|
||||||
|
{
|
||||||
|
mat4 projection[2];
|
||||||
|
mat4 modelview[2];
|
||||||
|
vec4 lightPos;
|
||||||
|
} ubo;
|
||||||
|
|
||||||
|
layout (location = 0) in vec3 inNormal[];
|
||||||
|
layout (location = 1) in vec3 inColor[];
|
||||||
|
|
||||||
|
layout (location = 0) out vec3 outNormal;
|
||||||
|
layout (location = 1) out vec3 outColor;
|
||||||
|
layout (location = 2) out vec3 outViewVec;
|
||||||
|
layout (location = 3) out vec3 outLightVec;
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < gl_in.length(); i++)
|
||||||
|
{
|
||||||
|
outNormal = mat3(ubo.modelview[gl_InvocationID]) * inNormal[i];
|
||||||
|
outColor = inColor[i];
|
||||||
|
|
||||||
|
vec4 pos = gl_in[i].gl_Position;
|
||||||
|
vec4 worldPos = (ubo.modelview[gl_InvocationID] * pos);
|
||||||
|
|
||||||
|
vec3 lPos = vec3(ubo.modelview[gl_InvocationID] * ubo.lightPos);
|
||||||
|
outLightVec = lPos - worldPos.xyz;
|
||||||
|
outViewVec = -worldPos.xyz;
|
||||||
|
|
||||||
|
gl_Position = ubo.projection[gl_InvocationID] * worldPos;
|
||||||
|
|
||||||
|
// Set the viewport index that the vertex will be emitted to
|
||||||
|
gl_ViewportIndex = gl_InvocationID;
|
||||||
|
gl_PrimitiveID = gl_PrimitiveIDIn;
|
||||||
|
EmitVertex();
|
||||||
|
}
|
||||||
|
EndPrimitive();
|
||||||
|
}
|
140
Test/spv.debuginfo.glsl.tesc
Normal file
140
Test/spv.debuginfo.glsl.tesc
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
layout(set = 0, binding = 0) uniform UBO
|
||||||
|
{
|
||||||
|
mat4 projection;
|
||||||
|
mat4 modelview;
|
||||||
|
vec4 lightPos;
|
||||||
|
vec4 frustumPlanes[6];
|
||||||
|
float displacementFactor;
|
||||||
|
float tessellationFactor;
|
||||||
|
vec2 viewportDim;
|
||||||
|
float tessellatedEdgeSize;
|
||||||
|
} ubo;
|
||||||
|
|
||||||
|
layout(set = 0, binding = 1) uniform sampler2D samplerHeight;
|
||||||
|
|
||||||
|
layout (vertices = 4) out;
|
||||||
|
|
||||||
|
layout (location = 0) in vec3 inNormal[];
|
||||||
|
layout (location = 1) in vec2 inUV[];
|
||||||
|
|
||||||
|
layout (location = 0) out vec3 outNormal[4];
|
||||||
|
layout (location = 1) out vec2 outUV[4];
|
||||||
|
|
||||||
|
// Calculate the tessellation factor based on screen space
|
||||||
|
// dimensions of the edge
|
||||||
|
float screenSpaceTessFactor(vec4 p0, vec4 p1)
|
||||||
|
{
|
||||||
|
// Calculate edge mid point
|
||||||
|
vec4 midPoint = 0.5 * (p0 + p1);
|
||||||
|
// Sphere radius as distance between the control points
|
||||||
|
float radius = distance(p0, p1) / 2.0;
|
||||||
|
|
||||||
|
// View space
|
||||||
|
vec4 v0 = ubo.modelview * midPoint;
|
||||||
|
|
||||||
|
// Project into clip space
|
||||||
|
vec4 clip0 = (ubo.projection * (v0 - vec4(radius, vec3(0.0))));
|
||||||
|
vec4 clip1 = (ubo.projection * (v0 + vec4(radius, vec3(0.0))));
|
||||||
|
|
||||||
|
// Get normalized device coordinates
|
||||||
|
clip0 /= clip0.w;
|
||||||
|
clip1 /= clip1.w;
|
||||||
|
|
||||||
|
// Convert to viewport coordinates
|
||||||
|
clip0.xy *= ubo.viewportDim;
|
||||||
|
clip1.xy *= ubo.viewportDim;
|
||||||
|
|
||||||
|
// Return the tessellation factor based on the screen size
|
||||||
|
// given by the distance of the two edge control points in screen space
|
||||||
|
// and a reference (min.) tessellation size for the edge set by the application
|
||||||
|
return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checks the current's patch visibility against the frustum using a sphere check
|
||||||
|
// Sphere radius is given by the patch size
|
||||||
|
bool frustumCheck()
|
||||||
|
{
|
||||||
|
// Fixed radius (increase if patch size is increased in example)
|
||||||
|
const float radius = 8.0f;
|
||||||
|
vec4 pos = gl_in[gl_InvocationID].gl_Position;
|
||||||
|
pos.y -= textureLod(samplerHeight, inUV[0], 0.0).r * ubo.displacementFactor;
|
||||||
|
|
||||||
|
// Check sphere against frustum planes
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
if (gl_InvocationID == 0)
|
||||||
|
{
|
||||||
|
if (!frustumCheck())
|
||||||
|
{
|
||||||
|
gl_TessLevelInner[0] = 0.0;
|
||||||
|
gl_TessLevelInner[1] = 0.0;
|
||||||
|
gl_TessLevelOuter[0] = 0.0;
|
||||||
|
gl_TessLevelOuter[1] = 0.0;
|
||||||
|
gl_TessLevelOuter[2] = 0.0;
|
||||||
|
gl_TessLevelOuter[3] = 0.0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ubo.tessellationFactor > 0.0)
|
||||||
|
{
|
||||||
|
gl_TessLevelOuter[0] = screenSpaceTessFactor(gl_in[3].gl_Position, gl_in[0].gl_Position);
|
||||||
|
gl_TessLevelOuter[1] = screenSpaceTessFactor(gl_in[0].gl_Position, gl_in[1].gl_Position);
|
||||||
|
gl_TessLevelOuter[2] = screenSpaceTessFactor(gl_in[1].gl_Position, gl_in[2].gl_Position);
|
||||||
|
gl_TessLevelOuter[3] = screenSpaceTessFactor(gl_in[2].gl_Position, gl_in[3].gl_Position);
|
||||||
|
gl_TessLevelInner[0] = mix(gl_TessLevelOuter[0], gl_TessLevelOuter[3], 0.5);
|
||||||
|
gl_TessLevelInner[1] = mix(gl_TessLevelOuter[2], gl_TessLevelOuter[1], 0.5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Tessellation factor can be set to zero by example
|
||||||
|
// to demonstrate a simple passthrough
|
||||||
|
gl_TessLevelInner[0] = 1.0;
|
||||||
|
gl_TessLevelInner[1] = 1.0;
|
||||||
|
gl_TessLevelOuter[0] = 1.0;
|
||||||
|
gl_TessLevelOuter[1] = 1.0;
|
||||||
|
gl_TessLevelOuter[2] = 1.0;
|
||||||
|
gl_TessLevelOuter[3] = 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
|
||||||
|
outNormal[gl_InvocationID] = inNormal[gl_InvocationID];
|
||||||
|
outUV[gl_InvocationID] = inUV[gl_InvocationID];
|
||||||
|
}
|
78
Test/spv.debuginfo.glsl.tese
Normal file
78
Test/spv.debuginfo.glsl.tese
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
layout (set = 0, binding = 0) uniform UBO
|
||||||
|
{
|
||||||
|
mat4 projection;
|
||||||
|
mat4 modelview;
|
||||||
|
vec4 lightPos;
|
||||||
|
vec4 frustumPlanes[6];
|
||||||
|
float displacementFactor;
|
||||||
|
float tessellationFactor;
|
||||||
|
vec2 viewportDim;
|
||||||
|
float tessellatedEdgeSize;
|
||||||
|
} ubo;
|
||||||
|
|
||||||
|
layout (set = 0, binding = 1) uniform sampler2D displacementMap;
|
||||||
|
|
||||||
|
layout(quads, equal_spacing, cw) in;
|
||||||
|
|
||||||
|
layout (location = 0) in vec3 inNormal[];
|
||||||
|
layout (location = 1) in vec2 inUV[];
|
||||||
|
|
||||||
|
layout (location = 0) out vec3 outNormal;
|
||||||
|
layout (location = 1) out vec2 outUV;
|
||||||
|
layout (location = 2) out vec3 outViewVec;
|
||||||
|
layout (location = 3) out vec3 outLightVec;
|
||||||
|
layout (location = 4) out vec3 outEyePos;
|
||||||
|
layout (location = 5) out vec3 outWorldPos;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// Interpolate UV coordinates
|
||||||
|
vec2 uv1 = mix(inUV[0], inUV[1], gl_TessCoord.x);
|
||||||
|
vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x);
|
||||||
|
outUV = mix(uv1, uv2, gl_TessCoord.y);
|
||||||
|
|
||||||
|
vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x);
|
||||||
|
vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x);
|
||||||
|
outNormal = mix(n1, n2, gl_TessCoord.y);
|
||||||
|
|
||||||
|
// Interpolate positions
|
||||||
|
vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
|
||||||
|
vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x);
|
||||||
|
vec4 pos = mix(pos1, pos2, gl_TessCoord.y);
|
||||||
|
// Displace
|
||||||
|
pos.y -= textureLod(displacementMap, outUV, 0.0).r * ubo.displacementFactor;
|
||||||
|
// Perspective projection
|
||||||
|
gl_Position = ubo.projection * ubo.modelview * pos;
|
||||||
|
|
||||||
|
// Calculate vectors for lighting based on tessellated position
|
||||||
|
outViewVec = -pos.xyz;
|
||||||
|
outLightVec = normalize(ubo.lightPos.xyz + outViewVec);
|
||||||
|
outWorldPos = pos.xyz;
|
||||||
|
outEyePos = vec3(ubo.modelview * pos);
|
||||||
|
}
|
105
Test/spv.debuginfo.glsl.vert
Normal file
105
Test/spv.debuginfo.glsl.vert
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
// Vertex attributes
|
||||||
|
layout (location = 0) in vec3 inPos;
|
||||||
|
layout (location = 1) in vec3 inNormal;
|
||||||
|
layout (location = 2) in vec2 inUV;
|
||||||
|
layout (location = 3) in vec3 inColor;
|
||||||
|
|
||||||
|
// Instanced attributes
|
||||||
|
layout (location = 4) in vec3 instancePos;
|
||||||
|
layout (location = 5) in vec3 instanceRot;
|
||||||
|
layout (location = 6) in float instanceScale;
|
||||||
|
layout (location = 7) in int instanceTexIndex;
|
||||||
|
|
||||||
|
layout (binding = 0) uniform UBO
|
||||||
|
{
|
||||||
|
mat4 projection;
|
||||||
|
mat4 modelview;
|
||||||
|
vec4 lightPos;
|
||||||
|
float locSpeed;
|
||||||
|
float globSpeed;
|
||||||
|
} ubo;
|
||||||
|
|
||||||
|
layout (location = 0) out vec3 outNormal;
|
||||||
|
layout (location = 1) out vec3 outColor;
|
||||||
|
layout (location = 2) out vec3 outUV;
|
||||||
|
layout (location = 3) out vec3 outViewVec;
|
||||||
|
layout (location = 4) out vec3 outLightVec;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
outColor = inColor;
|
||||||
|
outUV = vec3(inUV, instanceTexIndex);
|
||||||
|
|
||||||
|
mat3 mx, my, mz;
|
||||||
|
|
||||||
|
// rotate around x
|
||||||
|
float s = sin(instanceRot.x + ubo.locSpeed);
|
||||||
|
float c = cos(instanceRot.x + ubo.locSpeed);
|
||||||
|
|
||||||
|
mx[0] = vec3(c, s, 0.0);
|
||||||
|
mx[1] = vec3(-s, c, 0.0);
|
||||||
|
mx[2] = vec3(0.0, 0.0, 1.0);
|
||||||
|
|
||||||
|
// rotate around y
|
||||||
|
s = sin(instanceRot.y + ubo.locSpeed);
|
||||||
|
c = cos(instanceRot.y + ubo.locSpeed);
|
||||||
|
|
||||||
|
my[0] = vec3(c, 0.0, s);
|
||||||
|
my[1] = vec3(0.0, 1.0, 0.0);
|
||||||
|
my[2] = vec3(-s, 0.0, c);
|
||||||
|
|
||||||
|
// rot around z
|
||||||
|
s = sin(instanceRot.z + ubo.locSpeed);
|
||||||
|
c = cos(instanceRot.z + ubo.locSpeed);
|
||||||
|
|
||||||
|
mz[0] = vec3(1.0, 0.0, 0.0);
|
||||||
|
mz[1] = vec3(0.0, c, s);
|
||||||
|
mz[2] = vec3(0.0, -s, c);
|
||||||
|
|
||||||
|
mat3 rotMat = mz * my * mx;
|
||||||
|
|
||||||
|
mat4 gRotMat;
|
||||||
|
s = sin(instanceRot.y + ubo.globSpeed);
|
||||||
|
c = cos(instanceRot.y + ubo.globSpeed);
|
||||||
|
gRotMat[0] = vec4(c, 0.0, s, 0.0);
|
||||||
|
gRotMat[1] = vec4(0.0, 1.0, 0.0, 0.0);
|
||||||
|
gRotMat[2] = vec4(-s, 0.0, c, 0.0);
|
||||||
|
gRotMat[3] = vec4(0.0, 0.0, 0.0, 1.0);
|
||||||
|
|
||||||
|
vec4 locPos = vec4(inPos.xyz * rotMat, 1.0);
|
||||||
|
vec4 pos = vec4((locPos.xyz * instanceScale) + instancePos, 1.0);
|
||||||
|
|
||||||
|
gl_Position = ubo.projection * ubo.modelview * gRotMat * pos;
|
||||||
|
outNormal = mat3(ubo.modelview * gRotMat) * inverse(rotMat) * inNormal;
|
||||||
|
|
||||||
|
pos = ubo.modelview * vec4(inPos.xyz + instancePos, 1.0);
|
||||||
|
vec3 lPos = mat3(ubo.modelview) * ubo.lightPos.xyz;
|
||||||
|
outLightVec = lPos - pos.xyz;
|
||||||
|
outViewVec = -pos.xyz;
|
||||||
|
}
|
184
Test/spv.debuginfo.hlsl.comp
Normal file
184
Test/spv.debuginfo.hlsl.comp
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct Particle {
|
||||||
|
float4 pos;
|
||||||
|
float4 vel;
|
||||||
|
float4 uv;
|
||||||
|
float4 normal;
|
||||||
|
float pinned;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[vk::binding(0)]]
|
||||||
|
StructuredBuffer<Particle> particleIn;
|
||||||
|
[[vk::binding(1)]]
|
||||||
|
RWStructuredBuffer<Particle> particleOut;
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float deltaT;
|
||||||
|
float particleMass;
|
||||||
|
float springStiffness;
|
||||||
|
float damping;
|
||||||
|
float restDistH;
|
||||||
|
float restDistV;
|
||||||
|
float restDistD;
|
||||||
|
float sphereRadius;
|
||||||
|
float4 spherePos;
|
||||||
|
float4 gravity;
|
||||||
|
int2 particleCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
cbuffer ubo : register(b2)
|
||||||
|
{
|
||||||
|
UBO params;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef GLSLANG
|
||||||
|
layout ( push_constant ) cbuffer PushConstants
|
||||||
|
{
|
||||||
|
uint calculateNormals;
|
||||||
|
} pushConstants;
|
||||||
|
#else
|
||||||
|
struct PushConstants
|
||||||
|
{
|
||||||
|
uint calculateNormals;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[vk::push_constant]]
|
||||||
|
PushConstants pushConstants;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
float3 springForce(float3 p0, float3 p1, float restDist)
|
||||||
|
{
|
||||||
|
float3 dist = p0 - p1;
|
||||||
|
return normalize(dist) * params.springStiffness * (length(dist) - restDist);
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(10, 10, 1)]
|
||||||
|
void main(uint3 id : SV_DispatchThreadID)
|
||||||
|
{
|
||||||
|
uint index = id.y * params.particleCount.x + id.x;
|
||||||
|
if (index > params.particleCount.x * params.particleCount.y)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Pinned?
|
||||||
|
if (particleIn[index].pinned == 1.0) {
|
||||||
|
particleOut[index].pos = particleOut[index].pos;
|
||||||
|
particleOut[index].vel = float4(0, 0, 0, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initial force from gravity
|
||||||
|
float3 force = params.gravity.xyz * params.particleMass;
|
||||||
|
|
||||||
|
float3 pos = particleIn[index].pos.xyz;
|
||||||
|
float3 vel = particleIn[index].vel.xyz;
|
||||||
|
|
||||||
|
// Spring forces from neighboring particles
|
||||||
|
// left
|
||||||
|
if (id.x > 0) {
|
||||||
|
force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH);
|
||||||
|
}
|
||||||
|
// right
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH);
|
||||||
|
}
|
||||||
|
// upper
|
||||||
|
if (id.y < params.particleCount.y - 1) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV);
|
||||||
|
}
|
||||||
|
// lower
|
||||||
|
if (id.y > 0) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV);
|
||||||
|
}
|
||||||
|
// upper-left
|
||||||
|
if ((id.x > 0) && (id.y < params.particleCount.y - 1)) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// lower-left
|
||||||
|
if ((id.x > 0) && (id.y > 0)) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// upper-right
|
||||||
|
if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) {
|
||||||
|
force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
// lower-right
|
||||||
|
if ((id.x < params.particleCount.x - 1) && (id.y > 0)) {
|
||||||
|
force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
|
||||||
|
}
|
||||||
|
|
||||||
|
force += (-params.damping * vel);
|
||||||
|
|
||||||
|
// Integrate
|
||||||
|
float3 f = force * (1.0 / params.particleMass);
|
||||||
|
particleOut[index].pos = float4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0);
|
||||||
|
particleOut[index].vel = float4(vel + f * params.deltaT, 0.0);
|
||||||
|
|
||||||
|
// Sphere collision
|
||||||
|
float3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz;
|
||||||
|
if (length(sphereDist) < params.sphereRadius + 0.01) {
|
||||||
|
// If the particle is inside the sphere, push it to the outer radius
|
||||||
|
particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01);
|
||||||
|
// Cancel out velocity
|
||||||
|
particleOut[index].vel = float4(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Normals
|
||||||
|
if (pushConstants.calculateNormals == 1) {
|
||||||
|
float3 normal = float3(0, 0, 0);
|
||||||
|
float3 a, b, c;
|
||||||
|
if (id.y > 0) {
|
||||||
|
if (id.x > 0) {
|
||||||
|
a = particleIn[index - 1].pos.xyz - pos;
|
||||||
|
b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index - params.particleCount.x].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
a = particleIn[index - params.particleCount.x].pos.xyz - pos;
|
||||||
|
b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index + 1].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (id.y < params.particleCount.y - 1) {
|
||||||
|
if (id.x > 0) {
|
||||||
|
a = particleIn[index + params.particleCount.x].pos.xyz - pos;
|
||||||
|
b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index - 1].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
if (id.x < params.particleCount.x - 1) {
|
||||||
|
a = particleIn[index + 1].pos.xyz - pos;
|
||||||
|
b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos;
|
||||||
|
c = particleIn[index + params.particleCount.x].pos.xyz - pos;
|
||||||
|
normal += cross(a,b) + cross(b,c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
particleOut[index].normal = float4(normalize(normal), 0.0f);
|
||||||
|
}
|
||||||
|
}
|
197
Test/spv.debuginfo.hlsl.frag
Normal file
197
Test/spv.debuginfo.hlsl.frag
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Texture2D textureposition : register(t1);
|
||||||
|
SamplerState samplerposition : register(s1);
|
||||||
|
Texture2D textureNormal : register(t2);
|
||||||
|
SamplerState samplerNormal : register(s2);
|
||||||
|
Texture2D textureAlbedo : register(t3);
|
||||||
|
SamplerState samplerAlbedo : register(s3);
|
||||||
|
// Depth from the light's point of view
|
||||||
|
//layout (binding = 5) uniform sampler2DShadow samplerShadowMap;
|
||||||
|
Texture2DArray textureShadowMap : register(t5);
|
||||||
|
SamplerState samplerShadowMap : register(s5);
|
||||||
|
|
||||||
|
#define LIGHT_COUNT 3
|
||||||
|
#define SHADOW_FACTOR 0.25
|
||||||
|
#define AMBIENT_LIGHT 0.1
|
||||||
|
#define USE_PCF
|
||||||
|
|
||||||
|
struct Light
|
||||||
|
{
|
||||||
|
float4 position;
|
||||||
|
float4 target;
|
||||||
|
float4 color;
|
||||||
|
float4x4 viewMatrix;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float4 viewPos;
|
||||||
|
Light lights[LIGHT_COUNT];
|
||||||
|
int useShadows;
|
||||||
|
int displayDebugTarget;
|
||||||
|
};
|
||||||
|
|
||||||
|
cbuffer ubo : register(b4) { UBO ubo; }
|
||||||
|
|
||||||
|
float textureProj(float4 P, float layer, float2 offset)
|
||||||
|
{
|
||||||
|
float shadow = 1.0;
|
||||||
|
float4 shadowCoord = P / P.w;
|
||||||
|
shadowCoord.xy = shadowCoord.xy * 0.5 + 0.5;
|
||||||
|
|
||||||
|
if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0)
|
||||||
|
{
|
||||||
|
float dist = textureShadowMap.Sample(samplerShadowMap, float3(shadowCoord.xy + offset, layer)).r;
|
||||||
|
if (shadowCoord.w > 0.0 && dist < shadowCoord.z)
|
||||||
|
{
|
||||||
|
shadow = SHADOW_FACTOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
float filterPCF(float4 sc, float layer)
|
||||||
|
{
|
||||||
|
int2 texDim; int elements; int levels;
|
||||||
|
textureShadowMap.GetDimensions(0, texDim.x, texDim.y, elements, levels);
|
||||||
|
float scale = 1.5;
|
||||||
|
float dx = scale * 1.0 / float(texDim.x);
|
||||||
|
float dy = scale * 1.0 / float(texDim.y);
|
||||||
|
|
||||||
|
float shadowFactor = 0.0;
|
||||||
|
int count = 0;
|
||||||
|
int range = 1;
|
||||||
|
|
||||||
|
for (int x = -range; x <= range; x++)
|
||||||
|
{
|
||||||
|
for (int y = -range; y <= range; y++)
|
||||||
|
{
|
||||||
|
shadowFactor += textureProj(sc, layer, float2(dx*x, dy*y));
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return shadowFactor / count;
|
||||||
|
}
|
||||||
|
|
||||||
|
float3 shadow(float3 fragcolor, float3 fragPos) {
|
||||||
|
for (int i = 0; i < LIGHT_COUNT; ++i)
|
||||||
|
{
|
||||||
|
float4 shadowClip = mul(ubo.lights[i].viewMatrix, float4(fragPos.xyz, 1.0));
|
||||||
|
|
||||||
|
float shadowFactor;
|
||||||
|
#ifdef USE_PCF
|
||||||
|
shadowFactor= filterPCF(shadowClip, i);
|
||||||
|
#else
|
||||||
|
shadowFactor = textureProj(shadowClip, i, float2(0.0, 0.0));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fragcolor *= shadowFactor;
|
||||||
|
}
|
||||||
|
return fragcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 main([[vk::location(0)]] float2 inUV : TEXCOORD0) : SV_TARGET
|
||||||
|
{
|
||||||
|
// Get G-Buffer values
|
||||||
|
float3 fragPos = textureposition.Sample(samplerposition, inUV).rgb;
|
||||||
|
float3 normal = textureNormal.Sample(samplerNormal, inUV).rgb;
|
||||||
|
float4 albedo = textureAlbedo.Sample(samplerAlbedo, inUV);
|
||||||
|
|
||||||
|
float3 fragcolor;
|
||||||
|
|
||||||
|
// Debug display
|
||||||
|
if (ubo.displayDebugTarget > 0) {
|
||||||
|
switch (ubo.displayDebugTarget) {
|
||||||
|
case 1:
|
||||||
|
fragcolor.rgb = shadow(float3(1.0, 1.0, 1.0), fragPos);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
fragcolor.rgb = fragPos;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
fragcolor.rgb = normal;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
fragcolor.rgb = albedo.rgb;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
fragcolor.rgb = albedo.aaa;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return float4(fragcolor, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ambient part
|
||||||
|
fragcolor = albedo.rgb * AMBIENT_LIGHT;
|
||||||
|
|
||||||
|
float3 N = normalize(normal);
|
||||||
|
|
||||||
|
for(int i = 0; i < LIGHT_COUNT; ++i)
|
||||||
|
{
|
||||||
|
// Vector to light
|
||||||
|
float3 L = ubo.lights[i].position.xyz - fragPos;
|
||||||
|
// Distance from light to fragment position
|
||||||
|
float dist = length(L);
|
||||||
|
L = normalize(L);
|
||||||
|
|
||||||
|
// Viewer to fragment
|
||||||
|
float3 V = ubo.viewPos.xyz - fragPos;
|
||||||
|
V = normalize(V);
|
||||||
|
|
||||||
|
float lightCosInnerAngle = cos(radians(15.0));
|
||||||
|
float lightCosOuterAngle = cos(radians(25.0));
|
||||||
|
float lightRange = 100.0;
|
||||||
|
|
||||||
|
// Direction vector from source to target
|
||||||
|
float3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz);
|
||||||
|
|
||||||
|
// Dual cone spot light with smooth transition between inner and outer angle
|
||||||
|
float cosDir = dot(L, dir);
|
||||||
|
float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir);
|
||||||
|
float heightAttenuation = smoothstep(lightRange, 0.0f, dist);
|
||||||
|
|
||||||
|
// Diffuse lighting
|
||||||
|
float NdotL = max(0.0, dot(N, L));
|
||||||
|
float3 diff = NdotL.xxx;
|
||||||
|
|
||||||
|
// Specular lighting
|
||||||
|
float3 R = reflect(-L, N);
|
||||||
|
float NdotR = max(0.0, dot(R, V));
|
||||||
|
float3 spec = (pow(NdotR, 16.0) * albedo.a * 2.5).xxx;
|
||||||
|
|
||||||
|
fragcolor += float3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shadow calculations in a separate pass
|
||||||
|
if (ubo.useShadows > 0)
|
||||||
|
{
|
||||||
|
fragcolor = shadow(fragcolor, fragPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
return float4(fragcolor, 1);
|
||||||
|
}
|
79
Test/spv.debuginfo.hlsl.geom
Normal file
79
Test/spv.debuginfo.hlsl.geom
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float4x4 projection[2];
|
||||||
|
float4x4 modelview[2];
|
||||||
|
float4 lightPos;
|
||||||
|
};
|
||||||
|
|
||||||
|
cbuffer ubo : register(b0) { UBO ubo; }
|
||||||
|
|
||||||
|
struct VSOutput
|
||||||
|
{
|
||||||
|
float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float3 Color : COLOR0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct GSOutput
|
||||||
|
{
|
||||||
|
float4 Pos : SV_POSITION;
|
||||||
|
uint ViewportIndex : SV_ViewportArrayIndex;
|
||||||
|
uint PrimitiveID : SV_PrimitiveID;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float3 Color : COLOR0;
|
||||||
|
[[vk::location(2)]] float3 ViewVec : TEXCOOR1;
|
||||||
|
[[vk::location(3)]] float3 LightVec : TEXCOOR2;
|
||||||
|
};
|
||||||
|
|
||||||
|
[maxvertexcount(3)]
|
||||||
|
[instance(2)]
|
||||||
|
void main(triangle VSOutput input[3], inout TriangleStream<GSOutput> outStream, uint InvocationID : SV_GSInstanceID, uint PrimitiveID : SV_PrimitiveID)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
GSOutput output = (GSOutput)0;
|
||||||
|
output.Normal = mul((float3x3)ubo.modelview[InvocationID], input[i].Normal);
|
||||||
|
output.Color = input[i].Color;
|
||||||
|
|
||||||
|
float4 pos = input[i].Pos;
|
||||||
|
float4 worldPos = mul(ubo.modelview[InvocationID], pos);
|
||||||
|
|
||||||
|
float3 lPos = mul(ubo.modelview[InvocationID], ubo.lightPos).xyz;
|
||||||
|
output.LightVec = lPos - worldPos.xyz;
|
||||||
|
output.ViewVec = -worldPos.xyz;
|
||||||
|
|
||||||
|
output.Pos = mul(ubo.projection[InvocationID], worldPos);
|
||||||
|
|
||||||
|
// Set the viewport index that the vertex will be emitted to
|
||||||
|
output.ViewportIndex = InvocationID;
|
||||||
|
output.PrimitiveID = PrimitiveID;
|
||||||
|
outStream.Append( output );
|
||||||
|
}
|
||||||
|
|
||||||
|
outStream.RestartStrip();
|
||||||
|
}
|
164
Test/spv.debuginfo.hlsl.tesc
Normal file
164
Test/spv.debuginfo.hlsl.tesc
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float4x4 projection;
|
||||||
|
float4x4 modelview;
|
||||||
|
float4 lightPos;
|
||||||
|
float4 frustumPlanes[6];
|
||||||
|
float displacementFactor;
|
||||||
|
float tessellationFactor;
|
||||||
|
float2 viewportDim;
|
||||||
|
float tessellatedEdgeSize;
|
||||||
|
};
|
||||||
|
cbuffer ubo : register(b0) { UBO ubo; };
|
||||||
|
|
||||||
|
Texture2D textureHeight : register(t1);
|
||||||
|
SamplerState samplerHeight : register(s1);
|
||||||
|
|
||||||
|
struct VSOutput
|
||||||
|
{
|
||||||
|
float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float2 UV : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HSOutput
|
||||||
|
{
|
||||||
|
[[vk::location(2)]] float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float2 UV : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ConstantsHSOutput
|
||||||
|
{
|
||||||
|
float TessLevelOuter[4] : SV_TessFactor;
|
||||||
|
float TessLevelInner[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Calculate the tessellation factor based on screen space
|
||||||
|
// dimensions of the edge
|
||||||
|
float screenSpaceTessFactor(float4 p0, float4 p1)
|
||||||
|
{
|
||||||
|
// Calculate edge mid point
|
||||||
|
float4 midPoint = 0.5 * (p0 + p1);
|
||||||
|
// Sphere radius as distance between the control points
|
||||||
|
float radius = distance(p0, p1) / 2.0;
|
||||||
|
|
||||||
|
// View space
|
||||||
|
float4 v0 = mul(ubo.modelview, midPoint);
|
||||||
|
|
||||||
|
// Project into clip space
|
||||||
|
float4 clip0 = mul(ubo.projection, (v0 - float4(radius, float3(0.0, 0.0, 0.0))));
|
||||||
|
float4 clip1 = mul(ubo.projection, (v0 + float4(radius, float3(0.0, 0.0, 0.0))));
|
||||||
|
|
||||||
|
// Get normalized device coordinates
|
||||||
|
clip0 /= clip0.w;
|
||||||
|
clip1 /= clip1.w;
|
||||||
|
|
||||||
|
// Convert to viewport coordinates
|
||||||
|
clip0.xy *= ubo.viewportDim;
|
||||||
|
clip1.xy *= ubo.viewportDim;
|
||||||
|
|
||||||
|
// Return the tessellation factor based on the screen size
|
||||||
|
// given by the distance of the two edge control points in screen space
|
||||||
|
// and a reference (min.) tessellation size for the edge set by the application
|
||||||
|
return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checks the current's patch visibility against the frustum using a sphere check
|
||||||
|
// Sphere radius is given by the patch size
|
||||||
|
bool frustumCheck(float4 Pos, float2 inUV)
|
||||||
|
{
|
||||||
|
// Fixed radius (increase if patch size is increased in example)
|
||||||
|
const float radius = 8.0f;
|
||||||
|
float4 pos = Pos;
|
||||||
|
pos.y -= textureHeight.SampleLevel(samplerHeight, inUV, 0.0).r * ubo.displacementFactor;
|
||||||
|
|
||||||
|
// Check sphere against frustum planes
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConstantsHSOutput ConstantsHS(InputPatch<VSOutput, 4> patch)
|
||||||
|
{
|
||||||
|
ConstantsHSOutput output = (ConstantsHSOutput)0;
|
||||||
|
|
||||||
|
if (!frustumCheck(patch[0].Pos, patch[0].UV))
|
||||||
|
{
|
||||||
|
output.TessLevelInner[0] = 0.0;
|
||||||
|
output.TessLevelInner[1] = 0.0;
|
||||||
|
output.TessLevelOuter[0] = 0.0;
|
||||||
|
output.TessLevelOuter[1] = 0.0;
|
||||||
|
output.TessLevelOuter[2] = 0.0;
|
||||||
|
output.TessLevelOuter[3] = 0.0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ubo.tessellationFactor > 0.0)
|
||||||
|
{
|
||||||
|
output.TessLevelOuter[0] = screenSpaceTessFactor(patch[3].Pos, patch[0].Pos);
|
||||||
|
output.TessLevelOuter[1] = screenSpaceTessFactor(patch[0].Pos, patch[1].Pos);
|
||||||
|
output.TessLevelOuter[2] = screenSpaceTessFactor(patch[1].Pos, patch[2].Pos);
|
||||||
|
output.TessLevelOuter[3] = screenSpaceTessFactor(patch[2].Pos, patch[3].Pos);
|
||||||
|
output.TessLevelInner[0] = lerp(output.TessLevelOuter[0], output.TessLevelOuter[3], 0.5);
|
||||||
|
output.TessLevelInner[1] = lerp(output.TessLevelOuter[2], output.TessLevelOuter[1], 0.5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Tessellation factor can be set to zero by example
|
||||||
|
// to demonstrate a simple passthrough
|
||||||
|
output.TessLevelInner[0] = 1.0;
|
||||||
|
output.TessLevelInner[1] = 1.0;
|
||||||
|
output.TessLevelOuter[0] = 1.0;
|
||||||
|
output.TessLevelOuter[1] = 1.0;
|
||||||
|
output.TessLevelOuter[2] = 1.0;
|
||||||
|
output.TessLevelOuter[3] = 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_cw")]
|
||||||
|
[outputcontrolpoints(4)]
|
||||||
|
[patchconstantfunc("ConstantsHS")]
|
||||||
|
[maxtessfactor(20.0f)]
|
||||||
|
HSOutput main(InputPatch<VSOutput, 4> patch, uint InvocationID : SV_OutputControlPointID)
|
||||||
|
{
|
||||||
|
HSOutput output = (HSOutput)0;
|
||||||
|
output.Pos = patch[InvocationID].Pos;
|
||||||
|
output.Normal = patch[InvocationID].Normal;
|
||||||
|
output.UV = patch[InvocationID].UV;
|
||||||
|
return output;
|
||||||
|
}
|
94
Test/spv.debuginfo.hlsl.tese
Normal file
94
Test/spv.debuginfo.hlsl.tese
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float4x4 projection;
|
||||||
|
float4x4 modelview;
|
||||||
|
float4 lightPos;
|
||||||
|
float4 frustumPlanes[6];
|
||||||
|
float displacementFactor;
|
||||||
|
float tessellationFactor;
|
||||||
|
float2 viewportDim;
|
||||||
|
float tessellatedEdgeSize;
|
||||||
|
};
|
||||||
|
cbuffer ubo : register(b0) { UBO ubo; };
|
||||||
|
|
||||||
|
Texture2D displacementMapTexture : register(t1);
|
||||||
|
SamplerState displacementMapSampler : register(s1);
|
||||||
|
|
||||||
|
struct HSOutput
|
||||||
|
{
|
||||||
|
[[vk::location(2)]] float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float2 UV : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ConstantsHSOutput
|
||||||
|
{
|
||||||
|
float TessLevelOuter[4] : SV_TessFactor;
|
||||||
|
float TessLevelInner[2] : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DSOutput
|
||||||
|
{
|
||||||
|
float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float2 UV : TEXCOORD0;
|
||||||
|
[[vk::location(2)]] float3 ViewVec : TEXCOORD1;
|
||||||
|
[[vk::location(3)]] float3 LightVec : TEXCOORD2;
|
||||||
|
[[vk::location(4)]] float3 EyePos : POSITION1;
|
||||||
|
[[vk::location(5)]] float3 WorldPos : POSITION0;
|
||||||
|
};
|
||||||
|
|
||||||
|
[domain("quad")]
|
||||||
|
DSOutput main(ConstantsHSOutput input, float2 TessCoord : SV_DomainLocation, const OutputPatch<HSOutput, 4> patch)
|
||||||
|
{
|
||||||
|
// Interpolate UV coordinates
|
||||||
|
DSOutput output = (DSOutput)0;
|
||||||
|
float2 uv1 = lerp(patch[0].UV, patch[1].UV, TessCoord.x);
|
||||||
|
float2 uv2 = lerp(patch[3].UV, patch[2].UV, TessCoord.x);
|
||||||
|
output.UV = lerp(uv1, uv2, TessCoord.y);
|
||||||
|
|
||||||
|
float3 n1 = lerp(patch[0].Normal, patch[1].Normal, TessCoord.x);
|
||||||
|
float3 n2 = lerp(patch[3].Normal, patch[2].Normal, TessCoord.x);
|
||||||
|
output.Normal = lerp(n1, n2, TessCoord.y);
|
||||||
|
|
||||||
|
// Interpolate positions
|
||||||
|
float4 pos1 = lerp(patch[0].Pos, patch[1].Pos, TessCoord.x);
|
||||||
|
float4 pos2 = lerp(patch[3].Pos, patch[2].Pos, TessCoord.x);
|
||||||
|
float4 pos = lerp(pos1, pos2, TessCoord.y);
|
||||||
|
// Displace
|
||||||
|
pos.y -= displacementMapTexture.SampleLevel(displacementMapSampler, output.UV, 0.0).r * ubo.displacementFactor;
|
||||||
|
// Perspective projection
|
||||||
|
output.Pos = mul(ubo.projection, mul(ubo.modelview, pos));
|
||||||
|
|
||||||
|
// Calculate vectors for lighting based on tessellated position
|
||||||
|
output.ViewVec = -pos.xyz;
|
||||||
|
output.LightVec = normalize(ubo.lightPos.xyz + output.ViewVec);
|
||||||
|
output.WorldPos = pos.xyz;
|
||||||
|
output.EyePos = mul(ubo.modelview, pos).xyz;
|
||||||
|
return output;
|
||||||
|
}
|
112
Test/spv.debuginfo.hlsl.vert
Normal file
112
Test/spv.debuginfo.hlsl.vert
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 Google LLC
|
||||||
|
Copyright (c) 2022 Sascha Willems
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct VSInput
|
||||||
|
{
|
||||||
|
[[vk::location(0)]] float3 Pos : POSITION0;
|
||||||
|
[[vk::location(1)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(2)]] float2 UV : TEXCOORD0;
|
||||||
|
[[vk::location(3)]] float3 Color : COLOR0;
|
||||||
|
|
||||||
|
// Instanced attributes
|
||||||
|
[[vk::location(4)]] float3 instancePos : POSITION1;
|
||||||
|
[[vk::location(5)]] float3 instanceRot : TEXCOORD1;
|
||||||
|
[[vk::location(6)]] float instanceScale : TEXCOORD2;
|
||||||
|
[[vk::location(7)]] int instanceTexIndex : TEXCOORD3;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UBO
|
||||||
|
{
|
||||||
|
float4x4 projection;
|
||||||
|
float4x4 modelview;
|
||||||
|
float4 lightPos;
|
||||||
|
float locSpeed;
|
||||||
|
float globSpeed;
|
||||||
|
};
|
||||||
|
|
||||||
|
cbuffer ubo : register(b0) { UBO ubo; }
|
||||||
|
|
||||||
|
struct VSOutput
|
||||||
|
{
|
||||||
|
float4 Pos : SV_POSITION;
|
||||||
|
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||||
|
[[vk::location(1)]] float3 Color : COLOR0;
|
||||||
|
[[vk::location(2)]] float3 UV : TEXCOORD0;
|
||||||
|
[[vk::location(3)]] float3 ViewVec : TEXCOORD1;
|
||||||
|
[[vk::location(4)]] float3 LightVec : TEXCOORD2;
|
||||||
|
};
|
||||||
|
|
||||||
|
VSOutput main(VSInput input)
|
||||||
|
{
|
||||||
|
VSOutput output = (VSOutput)0;
|
||||||
|
output.Color = input.Color;
|
||||||
|
output.UV = float3(input.UV, input.instanceTexIndex);
|
||||||
|
|
||||||
|
// rotate around x
|
||||||
|
float s = sin(input.instanceRot.x + ubo.locSpeed);
|
||||||
|
float c = cos(input.instanceRot.x + ubo.locSpeed);
|
||||||
|
|
||||||
|
float3x3 mx = { c, -s, 0.0,
|
||||||
|
s, c, 0.0,
|
||||||
|
0.0, 0.0, 1.0 };
|
||||||
|
|
||||||
|
// rotate around y
|
||||||
|
s = sin(input.instanceRot.y + ubo.locSpeed);
|
||||||
|
c = cos(input.instanceRot.y + ubo.locSpeed);
|
||||||
|
|
||||||
|
float3x3 my = { c, 0.0, -s,
|
||||||
|
0.0, 1.0, 0.0,
|
||||||
|
s, 0.0, c };
|
||||||
|
|
||||||
|
// rot around z
|
||||||
|
s = sin(input.instanceRot.z + ubo.locSpeed);
|
||||||
|
c = cos(input.instanceRot.z + ubo.locSpeed);
|
||||||
|
|
||||||
|
float3x3 mz = { 1.0, 0.0, 0.0,
|
||||||
|
0.0, c, -s,
|
||||||
|
0.0, s, c };
|
||||||
|
|
||||||
|
float3x3 rotMat = mul(mz, mul(my, mx));
|
||||||
|
|
||||||
|
float4x4 gRotMat;
|
||||||
|
s = sin(input.instanceRot.y + ubo.globSpeed);
|
||||||
|
c = cos(input.instanceRot.y + ubo.globSpeed);
|
||||||
|
gRotMat[0] = float4(c, 0.0, -s, 0.0);
|
||||||
|
gRotMat[1] = float4(0.0, 1.0, 0.0, 0.0);
|
||||||
|
gRotMat[2] = float4(s, 0.0, c, 0.0);
|
||||||
|
gRotMat[3] = float4(0.0, 0.0, 0.0, 1.0);
|
||||||
|
|
||||||
|
float4 locPos = float4(mul(rotMat, input.Pos.xyz), 1.0);
|
||||||
|
float4 pos = float4((locPos.xyz * input.instanceScale) + input.instancePos, 1.0);
|
||||||
|
|
||||||
|
output.Pos = mul(ubo.projection, mul(ubo.modelview, mul(gRotMat, pos)));
|
||||||
|
output.Normal = mul((float3x3)mul(ubo.modelview, gRotMat), mul(rotMat, input.Normal));
|
||||||
|
|
||||||
|
pos = mul(ubo.modelview, float4(input.Pos.xyz + input.instancePos, 1.0));
|
||||||
|
float3 lPos = mul((float3x3)ubo.modelview, ubo.lightPos.xyz);
|
||||||
|
output.LightVec = lPos - pos.xyz;
|
||||||
|
output.ViewVec = -pos.xyz;
|
||||||
|
return output;
|
||||||
|
}
|
@ -3428,7 +3428,7 @@ bool HlslGrammar::acceptCompoundStatement(TIntermNode*& retStatement)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (compoundStatement)
|
if (compoundStatement)
|
||||||
compoundStatement->setOperator(EOpSequence);
|
compoundStatement->setOperator(intermediate.getDebugInfo() ? EOpScope : EOpSequence);
|
||||||
|
|
||||||
retStatement = compoundStatement;
|
retStatement = compoundStatement;
|
||||||
|
|
||||||
|
@ -2442,6 +2442,11 @@ void HlslParseContext::remapNonEntryPointIO(TFunction& function)
|
|||||||
clearUniformInputOutput(function[i].type->getQualifier());
|
clearUniformInputOutput(function[i].type->getQualifier());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TIntermNode* HlslParseContext::handleDeclare(const TSourceLoc& loc, TIntermTyped* var)
|
||||||
|
{
|
||||||
|
return intermediate.addUnaryNode(EOpDeclare, var, loc, TType(EbtVoid));
|
||||||
|
}
|
||||||
|
|
||||||
// Handle function returns, including type conversions to the function return type
|
// Handle function returns, including type conversions to the function return type
|
||||||
// if necessary.
|
// if necessary.
|
||||||
TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
|
TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
|
||||||
@ -8035,11 +8040,16 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr
|
|||||||
if (flattenVar)
|
if (flattenVar)
|
||||||
flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel());
|
flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel());
|
||||||
|
|
||||||
if (initializer == nullptr)
|
TVariable* variable = symbol->getAsVariable();
|
||||||
return nullptr;
|
|
||||||
|
if (initializer == nullptr) {
|
||||||
|
if (intermediate.getDebugInfo())
|
||||||
|
return executeDeclaration(loc, variable);
|
||||||
|
else
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
// Deal with initializer
|
// Deal with initializer
|
||||||
TVariable* variable = symbol->getAsVariable();
|
|
||||||
if (variable == nullptr) {
|
if (variable == nullptr) {
|
||||||
error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
|
error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -8106,6 +8116,24 @@ TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TStrin
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return a declaration of a temporary variable
|
||||||
|
//
|
||||||
|
// This is used to force a variable to be declared in the correct scope
|
||||||
|
// when debug information is being generated.
|
||||||
|
|
||||||
|
TIntermNode* HlslParseContext::executeDeclaration(const TSourceLoc& loc, TVariable* variable)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Identifier must be of type temporary.
|
||||||
|
//
|
||||||
|
TStorageQualifier qualifier = variable->getType().getQualifier().storage;
|
||||||
|
if (qualifier != EvqTemporary)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc);
|
||||||
|
return handleDeclare(loc, intermSymbol);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Handle all types of initializers from the grammar.
|
// Handle all types of initializers from the grammar.
|
||||||
//
|
//
|
||||||
|
@ -87,6 +87,7 @@ public:
|
|||||||
void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
|
void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
|
||||||
void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector<TVariable*>& inputs, TVector<TVariable*>& outputs);
|
void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector<TVariable*>& inputs, TVector<TVariable*>& outputs);
|
||||||
void remapNonEntryPointIO(TFunction& function);
|
void remapNonEntryPointIO(TFunction& function);
|
||||||
|
TIntermNode* handleDeclare(const TSourceLoc&, TIntermTyped*);
|
||||||
TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
|
TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
|
||||||
void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg);
|
void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg);
|
||||||
TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
|
TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
|
||||||
@ -243,6 +244,7 @@ protected:
|
|||||||
TIntermSymbol* makeInternalVariableNode(const TSourceLoc&, const char* name, const TType&) const;
|
TIntermSymbol* makeInternalVariableNode(const TSourceLoc&, const char* name, const TType&) const;
|
||||||
TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track);
|
TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track);
|
||||||
void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track);
|
void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track);
|
||||||
|
TIntermNode* executeDeclaration(const TSourceLoc&, TVariable* variable);
|
||||||
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
|
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
|
||||||
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
|
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
|
||||||
bool isScalarConstructor(const TIntermNode*);
|
bool isScalarConstructor(const TIntermNode*);
|
||||||
|
@ -207,6 +207,8 @@ typedef struct glslang_spv_options_s {
|
|||||||
bool optimize_size;
|
bool optimize_size;
|
||||||
bool disassemble;
|
bool disassemble;
|
||||||
bool validate;
|
bool validate;
|
||||||
|
bool emit_nonsemantic_shader_debug_info;
|
||||||
|
bool emit_nonsemantic_shader_debug_source;
|
||||||
} glslang_spv_options_t;
|
} glslang_spv_options_t;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -67,6 +67,7 @@ class TIntermediate;
|
|||||||
enum TOperator {
|
enum TOperator {
|
||||||
EOpNull, // if in a node, should only mean a node is still being built
|
EOpNull, // if in a node, should only mean a node is still being built
|
||||||
EOpSequence, // denotes a list of statements, or parameters, etc.
|
EOpSequence, // denotes a list of statements, or parameters, etc.
|
||||||
|
EOpScope, // Used by debugging to denote a scoped list of statements
|
||||||
EOpLinkerObjects, // for aggregate node of objects the linker may need, if not reference by the rest of the AST
|
EOpLinkerObjects, // for aggregate node of objects the linker may need, if not reference by the rest of the AST
|
||||||
EOpFunctionCall,
|
EOpFunctionCall,
|
||||||
EOpFunction, // For function definition
|
EOpFunction, // For function definition
|
||||||
@ -91,6 +92,8 @@ enum TOperator {
|
|||||||
|
|
||||||
EOpCopyObject,
|
EOpCopyObject,
|
||||||
|
|
||||||
|
EOpDeclare, // Used by debugging to force declaration of variable in correct scope
|
||||||
|
|
||||||
// (u)int* -> bool
|
// (u)int* -> bool
|
||||||
EOpConvInt8ToBool,
|
EOpConvInt8ToBool,
|
||||||
EOpConvUint8ToBool,
|
EOpConvUint8ToBool,
|
||||||
|
@ -2733,10 +2733,10 @@ TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* init
|
|||||||
TIntermAggregate* loopSequence = (initializer == nullptr ||
|
TIntermAggregate* loopSequence = (initializer == nullptr ||
|
||||||
initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc)
|
initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc)
|
||||||
: initializer->getAsAggregate();
|
: initializer->getAsAggregate();
|
||||||
if (loopSequence != nullptr && loopSequence->getOp() == EOpSequence)
|
if (loopSequence != nullptr && (loopSequence->getOp() == EOpSequence || loopSequence->getOp() == EOpScope))
|
||||||
loopSequence->setOp(EOpNull);
|
loopSequence->setOp(EOpNull);
|
||||||
loopSequence = growAggregate(loopSequence, node);
|
loopSequence = growAggregate(loopSequence, node);
|
||||||
loopSequence->setOperator(EOpSequence);
|
loopSequence->setOperator(getDebugInfo() ? EOpScope : EOpSequence);
|
||||||
|
|
||||||
return loopSequence;
|
return loopSequence;
|
||||||
}
|
}
|
||||||
|
@ -1839,6 +1839,7 @@ void TShader::setOverrideVersion(int version)
|
|||||||
overrideVersion = version;
|
overrideVersion = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TShader::setDebugInfo(bool debugInfo) { intermediate->setDebugInfo(debugInfo); }
|
||||||
void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); }
|
void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); }
|
||||||
void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); }
|
void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); }
|
||||||
void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); }
|
void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); }
|
||||||
|
@ -3726,7 +3726,7 @@ compound_statement
|
|||||||
}
|
}
|
||||||
RIGHT_BRACE {
|
RIGHT_BRACE {
|
||||||
if ($3 && $3->getAsAggregate())
|
if ($3 && $3->getAsAggregate())
|
||||||
$3->getAsAggregate()->setOperator(EOpSequence);
|
$3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
|
||||||
$$ = $3;
|
$$ = $3;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -151,7 +151,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
|
|||||||
|
|
||||||
%parse-param {glslang::TParseContext* pParseContext}
|
%parse-param {glslang::TParseContext* pParseContext}
|
||||||
%lex-param {parseContext}
|
%lex-param {parseContext}
|
||||||
%pure-parser // enable thread safety
|
%define api.pure // enable thread safety
|
||||||
%expect 1 // One shift reduce conflict because of if | else
|
%expect 1 // One shift reduce conflict because of if | else
|
||||||
|
|
||||||
%token <lex> CONST BOOL INT UINT FLOAT
|
%token <lex> CONST BOOL INT UINT FLOAT
|
||||||
@ -3726,7 +3726,7 @@ compound_statement
|
|||||||
}
|
}
|
||||||
RIGHT_BRACE {
|
RIGHT_BRACE {
|
||||||
if ($3 && $3->getAsAggregate())
|
if ($3 && $3->getAsAggregate())
|
||||||
$3->getAsAggregate()->setOperator(EOpSequence);
|
$3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
|
||||||
$$ = $3;
|
$$ = $3;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -11085,7 +11085,7 @@ yyreduce:
|
|||||||
#line 3727 "MachineIndependent/glslang.y"
|
#line 3727 "MachineIndependent/glslang.y"
|
||||||
{
|
{
|
||||||
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
|
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
|
||||||
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
|
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
|
||||||
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
|
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
|
||||||
}
|
}
|
||||||
#line 11092 "MachineIndependent/glslang_tab.cpp"
|
#line 11092 "MachineIndependent/glslang_tab.cpp"
|
||||||
|
@ -665,6 +665,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
|||||||
|
|
||||||
case EOpConstructReference: out.debug << "Construct reference type"; break;
|
case EOpConstructReference: out.debug << "Construct reference type"; break;
|
||||||
|
|
||||||
|
case EOpDeclare: out.debug << "Declare"; break;
|
||||||
|
|
||||||
#ifndef GLSLANG_WEB
|
#ifndef GLSLANG_WEB
|
||||||
case EOpSpirvInst: out.debug << "spirv_instruction"; break;
|
case EOpSpirvInst: out.debug << "spirv_instruction"; break;
|
||||||
#endif
|
#endif
|
||||||
@ -692,6 +694,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
|||||||
|
|
||||||
switch (node->getOp()) {
|
switch (node->getOp()) {
|
||||||
case EOpSequence: out.debug << "Sequence\n"; return true;
|
case EOpSequence: out.debug << "Sequence\n"; return true;
|
||||||
|
case EOpScope: out.debug << "Scope\n"; return true;
|
||||||
case EOpLinkerObjects: out.debug << "Linker Objects\n"; return true;
|
case EOpLinkerObjects: out.debug << "Linker Objects\n"; return true;
|
||||||
case EOpComma: out.debug << "Comma"; break;
|
case EOpComma: out.debug << "Comma"; break;
|
||||||
case EOpFunction: out.debug << "Function Definition: " << node->getName(); break;
|
case EOpFunction: out.debug << "Function Definition: " << node->getName(); break;
|
||||||
@ -1107,7 +1110,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
|||||||
default: out.debug.message(EPrefixError, "Bad aggregation op");
|
default: out.debug.message(EPrefixError, "Bad aggregation op");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node->getOp() != EOpSequence && node->getOp() != EOpParameters)
|
if (node->getOp() != EOpSequence && node->getOp() != EOpScope && node->getOp() != EOpParameters)
|
||||||
out.debug << " (" << node->getCompleteString() << ")";
|
out.debug << " (" << node->getCompleteString() << ")";
|
||||||
|
|
||||||
out.debug << "\n";
|
out.debug << "\n";
|
||||||
|
@ -319,6 +319,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit)
|
|||||||
MERGE_TRUE(autoMapLocations);
|
MERGE_TRUE(autoMapLocations);
|
||||||
MERGE_TRUE(invertY);
|
MERGE_TRUE(invertY);
|
||||||
MERGE_TRUE(dxPositionW);
|
MERGE_TRUE(dxPositionW);
|
||||||
|
MERGE_TRUE(debugInfo);
|
||||||
MERGE_TRUE(flattenUniformArrays);
|
MERGE_TRUE(flattenUniformArrays);
|
||||||
MERGE_TRUE(useUnknownFormat);
|
MERGE_TRUE(useUnknownFormat);
|
||||||
MERGE_TRUE(hlslOffsets);
|
MERGE_TRUE(hlslOffsets);
|
||||||
|
@ -292,6 +292,7 @@ public:
|
|||||||
invertY(false),
|
invertY(false),
|
||||||
dxPositionW(false),
|
dxPositionW(false),
|
||||||
enhancedMsgs(false),
|
enhancedMsgs(false),
|
||||||
|
debugInfo(false),
|
||||||
useStorageBuffer(false),
|
useStorageBuffer(false),
|
||||||
invariantAll(false),
|
invariantAll(false),
|
||||||
nanMinMaxClamp(false),
|
nanMinMaxClamp(false),
|
||||||
@ -461,6 +462,12 @@ public:
|
|||||||
const std::string& getEntryPointName() const { return entryPointName; }
|
const std::string& getEntryPointName() const { return entryPointName; }
|
||||||
const std::string& getEntryPointMangledName() const { return entryPointMangledName; }
|
const std::string& getEntryPointMangledName() const { return entryPointMangledName; }
|
||||||
|
|
||||||
|
void setDebugInfo(bool debuginfo)
|
||||||
|
{
|
||||||
|
debugInfo = debuginfo;
|
||||||
|
}
|
||||||
|
bool getDebugInfo() const { return debugInfo; }
|
||||||
|
|
||||||
void setInvertY(bool invert)
|
void setInvertY(bool invert)
|
||||||
{
|
{
|
||||||
invertY = invert;
|
invertY = invert;
|
||||||
@ -1109,6 +1116,7 @@ protected:
|
|||||||
bool invertY;
|
bool invertY;
|
||||||
bool dxPositionW;
|
bool dxPositionW;
|
||||||
bool enhancedMsgs;
|
bool enhancedMsgs;
|
||||||
|
bool debugInfo;
|
||||||
bool useStorageBuffer;
|
bool useStorageBuffer;
|
||||||
bool invariantAll;
|
bool invariantAll;
|
||||||
bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN
|
bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN
|
||||||
|
@ -472,6 +472,7 @@ public:
|
|||||||
GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&);
|
GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&);
|
||||||
GLSLANG_EXPORT void setUniqueId(unsigned long long id);
|
GLSLANG_EXPORT void setUniqueId(unsigned long long id);
|
||||||
GLSLANG_EXPORT void setOverrideVersion(int version);
|
GLSLANG_EXPORT void setOverrideVersion(int version);
|
||||||
|
GLSLANG_EXPORT void setDebugInfo(bool debugInfo);
|
||||||
|
|
||||||
// IO resolver binding data: see comments in ShaderLang.cpp
|
// IO resolver binding data: see comments in ShaderLang.cpp
|
||||||
GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base);
|
GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base);
|
||||||
|
@ -65,6 +65,7 @@ using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPoint
|
|||||||
using HlslDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
using HlslDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||||
using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||||
using HlslLegalDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
using HlslLegalDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||||
|
using HlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
|
||||||
|
|
||||||
// Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected
|
// Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected
|
||||||
// to successfully generate both AST and SPIR-V.
|
// to successfully generate both AST and SPIR-V.
|
||||||
@ -136,6 +137,13 @@ TEST_P(HlslLegalDebugTest, FromFile)
|
|||||||
"/baseResults/", true, true);
|
"/baseResults/", true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_P(HlslNonSemanticShaderDebugInfoTest, FromFile)
|
||||||
|
{
|
||||||
|
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
|
||||||
|
Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
|
||||||
|
Target::Spv, true, GetParam().entryPoint, "/baseResults/", false, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
ToSpirv, HlslCompileTest,
|
ToSpirv, HlslCompileTest,
|
||||||
@ -527,7 +535,21 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
}),
|
}),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
);
|
);
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
|
ToSpirv, HlslNonSemanticShaderDebugInfoTest,
|
||||||
|
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
|
||||||
|
{"spv.debuginfo.hlsl.vert", "main"},
|
||||||
|
{"spv.debuginfo.hlsl.frag", "main"},
|
||||||
|
{"spv.debuginfo.hlsl.comp", "main"},
|
||||||
|
{"spv.debuginfo.hlsl.geom", "main"},
|
||||||
|
{"spv.debuginfo.hlsl.tesc", "main"},
|
||||||
|
{"spv.debuginfo.hlsl.tese", "main"},
|
||||||
|
}),
|
||||||
|
FileNameAsCustomTestSuffix
|
||||||
|
);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
@ -80,6 +80,7 @@ using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::st
|
|||||||
using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
|
using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>;
|
using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
|
using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
|
using CompileVulkanToNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<std::string>>;
|
||||||
|
|
||||||
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
|
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
|
||||||
// generate SPIR-V.
|
// generate SPIR-V.
|
||||||
@ -229,6 +230,13 @@ TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile)
|
|||||||
Target::Spv);
|
Target::Spv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile)
|
||||||
|
{
|
||||||
|
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
|
||||||
|
Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
|
||||||
|
Target::Spv, true, "", "/baseResults/", false, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
Glsl, CompileVulkanToSpirvTest,
|
Glsl, CompileVulkanToSpirvTest,
|
||||||
@ -812,6 +820,7 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
})),
|
})),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
);
|
);
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
|
Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
|
||||||
::testing::ValuesIn(std::vector<std::string>({
|
::testing::ValuesIn(std::vector<std::string>({
|
||||||
@ -819,6 +828,19 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
})),
|
})),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
);
|
);
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
|
Glsl, CompileVulkanToNonSemanticShaderDebugInfoTest,
|
||||||
|
::testing::ValuesIn(std::vector<std::string>({
|
||||||
|
"spv.debuginfo.glsl.vert",
|
||||||
|
"spv.debuginfo.glsl.frag",
|
||||||
|
"spv.debuginfo.glsl.comp",
|
||||||
|
"spv.debuginfo.glsl.geom",
|
||||||
|
"spv.debuginfo.glsl.tesc",
|
||||||
|
"spv.debuginfo.glsl.tese"
|
||||||
|
})),
|
||||||
|
FileNameAsCustomTestSuffix
|
||||||
|
);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
@ -217,6 +217,7 @@ public:
|
|||||||
EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
|
EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
|
||||||
bool enableOptimizer = false,
|
bool enableOptimizer = false,
|
||||||
bool enableDebug = false,
|
bool enableDebug = false,
|
||||||
|
bool enableNonSemanticShaderDebugInfo = false,
|
||||||
bool automap = true)
|
bool automap = true)
|
||||||
{
|
{
|
||||||
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
|
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
|
||||||
@ -263,6 +264,8 @@ public:
|
|||||||
std::vector<uint32_t> spirv_binary;
|
std::vector<uint32_t> spirv_binary;
|
||||||
options().disableOptimizer = !enableOptimizer;
|
options().disableOptimizer = !enableOptimizer;
|
||||||
options().generateDebugInfo = enableDebug;
|
options().generateDebugInfo = enableDebug;
|
||||||
|
options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo;
|
||||||
|
options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo;
|
||||||
glslang::GlslangToSpv(*program.getIntermediate(stage),
|
glslang::GlslangToSpv(*program.getIntermediate(stage),
|
||||||
spirv_binary, &logger, &options());
|
spirv_binary, &logger, &options());
|
||||||
|
|
||||||
@ -448,7 +451,8 @@ public:
|
|||||||
const std::string& entryPointName="",
|
const std::string& entryPointName="",
|
||||||
const std::string& baseDir="/baseResults/",
|
const std::string& baseDir="/baseResults/",
|
||||||
const bool enableOptimizer = false,
|
const bool enableOptimizer = false,
|
||||||
const bool enableDebug = false)
|
const bool enableDebug = false,
|
||||||
|
const bool enableNonSemanticShaderDebugInfo = false)
|
||||||
{
|
{
|
||||||
const std::string inputFname = testDir + "/" + testName;
|
const std::string inputFname = testDir + "/" + testName;
|
||||||
const std::string expectedOutputFname =
|
const std::string expectedOutputFname =
|
||||||
@ -464,7 +468,8 @@ public:
|
|||||||
if (enableDebug)
|
if (enableDebug)
|
||||||
controls = static_cast<EShMessages>(controls | EShMsgDebugInfo);
|
controls = static_cast<EShMessages>(controls | EShMsgDebugInfo);
|
||||||
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion,
|
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion,
|
||||||
targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, automap);
|
targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug,
|
||||||
|
enableNonSemanticShaderDebugInfo, automap);
|
||||||
|
|
||||||
// Generate the hybrid output in the way of glslangValidator.
|
// Generate the hybrid output in the way of glslangValidator.
|
||||||
std::ostringstream stream;
|
std::ostringstream stream;
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
"SPIRV/GLSL.*.h",
|
"SPIRV/GLSL.*.h",
|
||||||
"SPIRV/NonSemanticDebugPrintf.h",
|
"SPIRV/NonSemanticDebugPrintf.h",
|
||||||
|
"SPIRV/NonSemanticShaderDebugInfo100.h",
|
||||||
"SPIRV/spirv.hpp"
|
"SPIRV/spirv.hpp"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user