Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include <qssgvertexpipelineimpl_p.h>
Public Types | |
enum class | GenerationFlag { UVCoords = 1 , EnvMapReflection = 1 << 1 , ViewVector = 1 << 2 , WorldNormal = 1 << 3 , ObjectNormal = 1 << 4 , WorldPosition = 1 << 5 , TangentBinormal = 1 << 6 , UVCoords1 = 1 << 7 , VertexColor = 1 << 8 , PerspDivDepth = 1 << 9 , PerspDivWorldPos = 1 << 10 } |
typedef QHash< QByteArray, QByteArray > | TStrTableStrMap |
typedef TStrTableStrMap::const_iterator | TParamIter |
typedef QFlags< GenerationFlag > | GenerationFlags |
Public Attributes | |
QSSGProgramGenerator * | m_programGenerator = nullptr |
QString | m_tempString |
GenerationFlags | m_generationFlags |
bool | m_hasSkinning |
bool | m_hasMorphing |
QList< QByteArray > | m_addedFunctions |
int | m_viewCount = 1 |
const QSSGShaderDefaultMaterialKeyProperties & | defaultMaterialShaderKeyProperties |
QSSGShaderMaterialAdapter * | materialAdapter |
bool | useFloatJointIndices |
bool | hasCustomShadedMain |
bool | usesInstancing |
bool | skipCustomFragmentSnippet |
Definition at line 26 of file qssgvertexpipelineimpl_p.h.
Definition at line 45 of file qssgvertexpipelineimpl_p.h.
Definition at line 44 of file qssgvertexpipelineimpl_p.h.
Definition at line 43 of file qssgvertexpipelineimpl_p.h.
|
strong |
Enumerator | |
---|---|
UVCoords | |
EnvMapReflection | |
ViewVector | |
WorldNormal | |
ObjectNormal | |
WorldPosition | |
TangentBinormal | |
UVCoords1 | |
VertexColor | |
PerspDivDepth | |
PerspDivWorldPos |
Definition at line 28 of file qssgvertexpipelineimpl_p.h.
QT_BEGIN_NAMESPACE QSSGMaterialVertexPipeline::QSSGMaterialVertexPipeline | ( | QSSGProgramGenerator & | inProgram, |
const QSSGShaderDefaultMaterialKeyProperties & | materialProperties, | ||
QSSGShaderMaterialAdapter * | materialAdapter ) |
Definition at line 18 of file qssgvertexpipelineimpl.cpp.
|
default |
QSSGStageGeneratorBase & QSSGMaterialVertexPipeline::activeStage | ( | ) |
Definition at line 522 of file qssgvertexpipelineimpl.cpp.
References vertex().
Referenced by addConstantBuffer(), addConstantBufferParam(), addDefinition(), addInclude(), addIncoming(), addUniform(), addUniformArray(), append(), generateEnvMapReflection(), generateShadowWorldPosition(), generateViewVector(), generateWorldPosition(), operator<<(), and stage().
|
inline |
Definition at line 348 of file qssgvertexpipelineimpl_p.h.
References activeStage(), QSSGStageGeneratorBase::addConstantBuffer(), and layout.
|
inline |
Definition at line 353 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addConstantBufferParam().
|
inline |
Definition at line 358 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addDefinition().
Referenced by generateFragmentShader().
void QSSGMaterialVertexPipeline::addFlatParameter | ( | const QByteArray & | inParamName, |
const QByteArray & | inParamType ) |
Definition at line 516 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addFlatIncoming(), QSSGStageGeneratorBase::addFlatOutgoing(), fragment(), and vertex().
Referenced by beginVertexGeneration().
|
inline |
Definition at line 339 of file qssgvertexpipelineimpl_p.h.
References addInclude(), QListSpecialMethodsBase< T >::contains(), m_addedFunctions, and QList< T >::push_back().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 337 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addInclude().
Referenced by addFunction().
|
inline |
Definition at line 329 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addIncoming().
void QSSGMaterialVertexPipeline::addInterpolationParameter | ( | const QByteArray & | inParamName, |
const QByteArray & | inParamType ) |
Definition at line 510 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addIncoming(), QSSGStageGeneratorBase::addOutgoing(), fragment(), and vertex().
Referenced by addOutgoing(), generateDepth(), generateEnvMapReflection(), generateLightmapUVCoords(), generateObjectNormal(), generateShadowWorldPosition(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), generateWorldNormal(), and generateWorldPosition().
|
inline |
Definition at line 331 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 333 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addUniform().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 335 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addUniformArray().
|
inline |
Definition at line 369 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::append().
void QSSGMaterialVertexPipeline::assignOutput | ( | const QByteArray & | inVarName, |
const QByteArray & | inVarValueExpr ) |
Definition at line 420 of file qssgvertexpipelineimpl.cpp.
References vertex().
Referenced by generateImageUVCoordinates(), and generateWorldPosition().
void QSSGMaterialVertexPipeline::beginFragmentGeneration | ( | QSSGShaderLibraryManager & | shaderLibraryManager | ) |
Definition at line 388 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addUniform(), QSSGShaderMaterialAdapter::customShaderSnippet(), QSSGShaderCache::Fragment, fragment(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), insertAmbientLightProcessorArgs(), insertDirectionalLightProcessorArgs(), insertFragmentMainArgs(), insertIblProbeProcessorArgs(), insertPointLightProcessorArgs(), insertPostProcessorArgs(), insertSpecularLightProcessorArgs(), insertSpotLightProcessorArgs(), QSSGShaderMaterialAdapter::isUnshaded(), m_viewCount, materialAdapter, skipCustomFragmentSnippet, and QSSGShaderMaterialAdapter::usesSharedVariables().
Referenced by generateFragmentShader().
void QSSGMaterialVertexPipeline::beginVertexGeneration | ( | const QSSGShaderDefaultMaterialKey & | inKey, |
const QSSGShaderFeatures & | inFeatureSet, | ||
QSSGShaderLibraryManager & | shaderLibraryManager ) |
Definition at line 101 of file qssgvertexpipelineimpl.cpp.
References addFlatParameter(), QSSGStageGeneratorBase::addInclude(), QSSGStageGeneratorBase::addIncoming(), QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::addUniformArray(), QSSGStageGeneratorBase::append(), QSSGProgramGenerator::beginProgram(), QSSGShaderKeyVertexAttribute::Binormal, QSSGShaderKeyVertexAttribute::Color, customMainCallWithArguments(), QSSGShaderMaterialAdapter::customShaderSnippet(), QSSGProgramGenerator::defaultFlags(), defaultMaterialShaderKeyProperties, QSSGShaderFeatures::DepthPass, QSSGShaderFeatures::DisableMultiView, QSSGShaderCache::Fragment, QSSGShaderKeyVertexAttribute::getBitValue(), QSSGShaderKeyBoolean::getValue(), QSSGShaderKeyUnsigned< TBitWidth >::getValue(), hasCustomShadedMain, QSSGShaderMaterialAdapter::hasCustomShaderFunction(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), insertVertexInstancedMainArgs(), insertVertexMainArgs(), QSSGShaderMaterialAdapter::isUnshaded(), QSSGShaderKeyVertexAttribute::JointAndWeight, QSSGShaderDefaultMaterialKeyProperties::m_blendParticles, QSSGShaderDefaultMaterialKeyProperties::m_boneCount, m_hasMorphing, m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_overridesPosition, QSSGShaderDefaultMaterialKeyProperties::m_targetCount, QSSGShaderDefaultMaterialKeyProperties::m_usesFloatJointIndices, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, QSSGShaderDefaultMaterialKeyProperties::m_usesInverseProjectionMatrix, QSSGShaderDefaultMaterialKeyProperties::m_usesPointsTopology, QSSGShaderDefaultMaterialKeyProperties::m_usesProjectionMatrix, QSSGShaderDefaultMaterialKeyProperties::m_usesViewIndex, QSSGShaderDefaultMaterialKeyProperties::m_vertexAttributes, QSSGShaderDefaultMaterialKeyProperties::m_viewCount, m_viewCount, materialAdapter, QSSGShaderKeyVertexAttribute::Normal, QSSGShaderFeatures::OpaqueDepthPrePass, programGenerator(), QByteArrayLiteral, skipCustomFragmentSnippet, QSSGShaderKeyVertexAttribute::Tangent, QSSGShaderKeyVertexAttribute::TexCoord0, QSSGShaderKeyVertexAttribute::TexCoord1, QSSGShaderKeyVertexAttribute::TexCoordLightmap, QSSGShaderMaterialAdapter::usesCustomMorphing(), QSSGShaderMaterialAdapter::usesCustomSkinning(), usesInstancing, QSSGShaderCache::Vertex, and vertex().
void QSSGMaterialVertexPipeline::doGenerateVarBinormal | ( | const QSSGShaderDefaultMaterialKey & | inKey | ) |
Definition at line 470 of file qssgvertexpipelineimpl.cpp.
References defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasMorphing, m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, usesInstancing, and vertex().
Referenced by generateVarTangentAndBinormal().
void QSSGMaterialVertexPipeline::doGenerateVarTangent | ( | const QSSGShaderDefaultMaterialKey & | inKey | ) |
Definition at line 450 of file qssgvertexpipelineimpl.cpp.
References defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasMorphing, m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, usesInstancing, and vertex().
Referenced by generateVarTangentAndBinormal().
void QSSGMaterialVertexPipeline::doGenerateWorldNormal | ( | const QSSGShaderDefaultMaterialKey & | inKey | ) |
Definition at line 425 of file qssgvertexpipelineimpl.cpp.
References defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasMorphing, m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, usesInstancing, and vertex().
Referenced by generateWorldNormal().
void QSSGMaterialVertexPipeline::endFragmentGeneration | ( | ) |
Definition at line 502 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::append(), QSSGShaderCache::Fragment, fragment(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), QSSGShaderMaterialAdapter::isUnshaded(), materialAdapter, and skipCustomFragmentSnippet.
void QSSGMaterialVertexPipeline::endVertexGeneration | ( | ) |
Definition at line 495 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::append(), customMainCallWithArguments(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), QSSGShaderMaterialAdapter::isUnshaded(), materialAdapter, usesInstancing, QSSGShaderCache::Vertex, and vertex().
|
inline |
Definition at line 84 of file qssgvertexpipelineimpl_p.h.
References Fragment, QSSGProgramGenerator::getStage(), and programGenerator().
Referenced by addFlatParameter(), addInterpolationParameter(), beginFragmentGeneration(), endFragmentGeneration(), generateEnvMapReflection(), generateLightmapUVCoords(), generateObjectNormal(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), generateViewVector(), and generateWorldNormal().
|
inline |
Definition at line 238 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), PerspDivDepth, setCode(), and vertex().
Referenced by generateFragmentShader().
|
inline |
Definition at line 145 of file qssgvertexpipelineimpl_p.h.
References activeStage(), addInterpolationParameter(), QSSGStageGeneratorBase::append(), EnvMapReflection, fragment(), generateWorldNormal(), generateWorldPosition(), m_viewCount, and setCode().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 133 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), fragment(), hasAttributeInKey(), QSSGShaderKeyVertexAttribute::TexCoordLightmap, and vertex().
Referenced by generateFragmentShader().
|
inline |
Definition at line 208 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), fragment(), ObjectNormal, setCode(), and vertex().
|
inline |
Definition at line 247 of file qssgvertexpipelineimpl_p.h.
References activeStage(), addInterpolationParameter(), QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::append(), defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, PerspDivWorldPos, setCode(), usesInstancing, and vertex().
Referenced by generateFragmentShader().
|
inline |
Generates UV coordinates in shader code.
[in] | inUVSet | index of UV data set |
Definition at line 96 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), fragment(), hasAttributeInKey(), hasCustomShadedMain, m_hasMorphing, Q_ASSERT, setCode(), QSSGShaderKeyVertexAttribute::TexCoord0, QSSGShaderKeyVertexAttribute::TexCoord1, UVCoords, UVCoords1, and vertex().
Referenced by generateFragmentShader(), and generateImageUVCoordinates().
|
inline |
Definition at line 267 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGShaderKeyVertexAttribute::Binormal, doGenerateVarBinormal(), doGenerateVarTangent(), fragment(), hasAttributeInKey(), hasCustomShadedMain, setCode(), QSSGShaderKeyVertexAttribute::Tangent, and TangentBinormal.
Referenced by generateFragmentShader().
|
inline |
Definition at line 296 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), QSSGShaderKeyVertexAttribute::Color, defaultMaterialShaderKeyProperties, fragment(), QSSGShaderKeyBoolean::getValue(), hasAttributeInKey(), QSSGShaderDefaultMaterialKeyProperties::m_blendParticles, m_hasMorphing, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, QSSGShaderDefaultMaterialKeyProperties::m_usesVarColor, QSSGShaderDefaultMaterialKeyProperties::m_vertexColorsEnabled, QSSGShaderDefaultMaterialKeyProperties::m_vertexColorsMaskEnabled, setCode(), usesInstancing, vertex(), and VertexColor.
Referenced by generateFragmentShader().
|
inline |
Definition at line 170 of file qssgvertexpipelineimpl_p.h.
References activeStage(), QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::addUniformArray(), fragment(), generateWorldPosition(), m_viewCount, setCode(), and ViewVector.
Referenced by generateFragmentShader().
|
inline |
Definition at line 190 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), doGenerateWorldNormal(), fragment(), generateWorldPosition(), hasAttributeInKey(), hasCustomShadedMain, QSSGShaderKeyVertexAttribute::Normal, setCode(), and WorldNormal.
Referenced by generateEnvMapReflection(), and generateFragmentShader().
|
inline |
Definition at line 218 of file qssgvertexpipelineimpl_p.h.
References activeStage(), addInterpolationParameter(), QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::append(), assignOutput(), defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, setCode(), usesInstancing, vertex(), and WorldPosition.
Referenced by generateDirections(), generateEnvMapReflection(), generateFragmentShader(), generateShadowMapOcclusion(), generateViewVector(), and generateWorldNormal().
bool QSSGMaterialVertexPipeline::hasAttributeInKey | ( | QSSGShaderKeyVertexAttribute::VertexAttributeBits | inAttr, |
const QSSGShaderDefaultMaterialKey & | inKey ) |
Definition at line 489 of file qssgvertexpipelineimpl.cpp.
References defaultMaterialShaderKeyProperties, QSSGShaderKeyVertexAttribute::getBitValue(), and QSSGShaderDefaultMaterialKeyProperties::m_vertexAttributes.
Referenced by generateLightmapUVCoords(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), and generateWorldNormal().
|
inline |
Definition at line 77 of file qssgvertexpipelineimpl_p.h.
References m_generationFlags.
|
inline |
Definition at line 363 of file qssgvertexpipelineimpl_p.h.
References activeStage().
|
inline |
Definition at line 78 of file qssgvertexpipelineimpl_p.h.
References m_programGenerator.
Referenced by beginVertexGeneration(), fragment(), and vertex().
|
inline |
Definition at line 70 of file qssgvertexpipelineimpl_p.h.
References m_generationFlags.
Referenced by generateDepth(), generateEnvMapReflection(), generateObjectNormal(), generateShadowWorldPosition(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), generateViewVector(), generateWorldNormal(), and generateWorldPosition().
|
inline |
Definition at line 371 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::stage().
|
inline |
Definition at line 80 of file qssgvertexpipelineimpl_p.h.
References QSSGProgramGenerator::getStage(), programGenerator(), and Vertex.
Referenced by activeStage(), addFlatParameter(), addInterpolationParameter(), assignOutput(), beginVertexGeneration(), doGenerateVarBinormal(), doGenerateVarTangent(), doGenerateWorldNormal(), endVertexGeneration(), generateDepth(), generateLightmapUVCoords(), generateObjectNormal(), generateShadowWorldPosition(), generateUVCoords(), generateVertexColor(), and generateWorldPosition().
const QSSGShaderDefaultMaterialKeyProperties& QSSGMaterialVertexPipeline::defaultMaterialShaderKeyProperties |
Definition at line 56 of file qssgvertexpipelineimpl_p.h.
Referenced by beginVertexGeneration(), doGenerateVarBinormal(), doGenerateVarTangent(), doGenerateWorldNormal(), generateShadowWorldPosition(), generateVertexColor(), generateWorldPosition(), and hasAttributeInKey().
bool QSSGMaterialVertexPipeline::hasCustomShadedMain |
Definition at line 59 of file qssgvertexpipelineimpl_p.h.
Referenced by beginVertexGeneration(), generateUVCoords(), generateVarTangentAndBinormal(), and generateWorldNormal().
QList<QByteArray> QSSGMaterialVertexPipeline::m_addedFunctions |
Definition at line 53 of file qssgvertexpipelineimpl_p.h.
Referenced by addFunction().
GenerationFlags QSSGMaterialVertexPipeline::m_generationFlags |
Definition at line 50 of file qssgvertexpipelineimpl_p.h.
bool QSSGMaterialVertexPipeline::m_hasMorphing |
Definition at line 52 of file qssgvertexpipelineimpl_p.h.
Referenced by beginVertexGeneration(), doGenerateVarBinormal(), doGenerateVarTangent(), doGenerateWorldNormal(), generateUVCoords(), and generateVertexColor().
bool QSSGMaterialVertexPipeline::m_hasSkinning |
Definition at line 51 of file qssgvertexpipelineimpl_p.h.
Referenced by beginVertexGeneration(), doGenerateVarBinormal(), doGenerateVarTangent(), doGenerateWorldNormal(), generateShadowWorldPosition(), and generateWorldPosition().
QSSGProgramGenerator* QSSGMaterialVertexPipeline::m_programGenerator = nullptr |
Definition at line 47 of file qssgvertexpipelineimpl_p.h.
Referenced by programGenerator().
QString QSSGMaterialVertexPipeline::m_tempString |
Definition at line 48 of file qssgvertexpipelineimpl_p.h.
int QSSGMaterialVertexPipeline::m_viewCount = 1 |
Definition at line 54 of file qssgvertexpipelineimpl_p.h.
Referenced by beginFragmentGeneration(), beginVertexGeneration(), generateEnvMapReflection(), and generateViewVector().
QSSGShaderMaterialAdapter* QSSGMaterialVertexPipeline::materialAdapter |
Definition at line 57 of file qssgvertexpipelineimpl_p.h.
Referenced by beginFragmentGeneration(), beginVertexGeneration(), endFragmentGeneration(), and endVertexGeneration().
bool QSSGMaterialVertexPipeline::skipCustomFragmentSnippet |
Definition at line 61 of file qssgvertexpipelineimpl_p.h.
Referenced by beginFragmentGeneration(), beginVertexGeneration(), and endFragmentGeneration().
bool QSSGMaterialVertexPipeline::useFloatJointIndices |
Definition at line 58 of file qssgvertexpipelineimpl_p.h.
bool QSSGMaterialVertexPipeline::usesInstancing |
Definition at line 60 of file qssgvertexpipelineimpl_p.h.
Referenced by beginVertexGeneration(), doGenerateVarBinormal(), doGenerateVarTangent(), doGenerateWorldNormal(), endVertexGeneration(), generateShadowWorldPosition(), generateVertexColor(), and generateWorldPosition().