![]() |
Qt 6.x
The Qt SDK
|
#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 |
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 477 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 326 of file qssgvertexpipelineimpl_p.h.
References activeStage(), QSSGStageGeneratorBase::addConstantBuffer(), and layout.
|
inline |
Definition at line 331 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addConstantBufferParam().
|
inline |
Definition at line 336 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addDefinition().
Referenced by generateFragmentShader().
|
inline |
Definition at line 317 of file qssgvertexpipelineimpl_p.h.
References addInclude(), QListSpecialMethodsBase< T >::contains(), m_addedFunctions, and QList< T >::push_back().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 315 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addInclude().
Referenced by addFunction().
|
inline |
Definition at line 307 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addIncoming().
void QSSGMaterialVertexPipeline::addInterpolationParameter | ( | const QByteArray & | inParamName, |
const QByteArray & | inParamType | ||
) |
Definition at line 470 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addIncoming(), QSSGStageGeneratorBase::addOutgoing(), fragment(), QHash< Key, T >::insert(), m_interpolationParameters, and vertex().
Referenced by addOutgoing(), generateDepth(), generateEnvMapReflection(), generateLightmapUVCoords(), generateObjectNormal(), generateShadowWorldPosition(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), generateWorldNormal(), and generateWorldPosition().
|
inline |
Definition at line 309 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 311 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addUniform().
Referenced by generateImageUVCoordinates().
|
inline |
Definition at line 313 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::addUniformArray().
|
inline |
Definition at line 347 of file qssgvertexpipelineimpl_p.h.
References activeStage(), and QSSGStageGeneratorBase::append().
void QSSGMaterialVertexPipeline::assignOutput | ( | const QByteArray & | inVarName, |
const QByteArray & | inVarValueExpr | ||
) |
Definition at line 380 of file qssgvertexpipelineimpl.cpp.
References vertex().
Referenced by generateImageUVCoordinates(), and generateWorldPosition().
void QSSGMaterialVertexPipeline::beginFragmentGeneration | ( | QSSGShaderLibraryManager & | shaderLibraryManager | ) |
Definition at line 349 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addUniform(), QSSGShaderMaterialAdapter::customShaderSnippet(), QSSGShaderCache::Fragment, fragment(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), insertAmbientLightProcessorArgs(), insertDirectionalLightProcessorArgs(), insertFragmentMainArgs(), insertIblProbeProcessorArgs(), insertPointLightProcessorArgs(), insertPostProcessorArgs(), insertSpecularLightProcessorArgs(), insertSpotLightProcessorArgs(), QSSGShaderMaterialAdapter::isUnshaded(), 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 QSSGStageGeneratorBase::addInclude(), QSSGStageGeneratorBase::addIncoming(), QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::addUniformArray(), QSSGStageGeneratorBase::append(), QSSGProgramGenerator::beginProgram(), QSSGShaderKeyVertexAttribute::Binormal, QSSGShaderKeyVertexAttribute::Color, customMainCallWithArguments(), QSSGShaderMaterialAdapter::customShaderSnippet(), QSSGProgramGenerator::defaultFlags(), defaultMaterialShaderKeyProperties, QSSGShaderFeatures::DepthPass, QSSGShaderCache::Fragment, QSSGShaderKeyVertexAttribute::getBitValue(), QSSGShaderKeyBoolean::getValue(), QSSGShaderKeyUnsigned< TBitWidth >::getValue(), hasCustomShadedMain, QSSGShaderMaterialAdapter::hasCustomShaderFunction(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), insertVertexInstancedMainArgs(), insertVertexMainArgs(), QSSGShaderFeatures::isSet(), QSSGShaderMaterialAdapter::isUnshaded(), QSSGShaderMaterialAdapter::isVertexColorsEnabled(), 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_vertexAttributes, 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().
Referenced by QSSGMaterialShaderGenerator::generateMaterialRhiShader().
void QSSGMaterialVertexPipeline::doGenerateVarBinormal | ( | const QSSGShaderDefaultMaterialKey & | inKey | ) |
Definition at line 430 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 410 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 385 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::addUniform(), QSSGStageGeneratorBase::append(), defaultMaterialShaderKeyProperties, QSSGShaderKeyBoolean::getValue(), m_hasMorphing, m_hasSkinning, QSSGShaderDefaultMaterialKeyProperties::m_usesInstancing, usesInstancing, and vertex().
Referenced by generateWorldNormal().
void QSSGMaterialVertexPipeline::endFragmentGeneration | ( | ) |
Definition at line 462 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::append(), QSSGShaderCache::Fragment, fragment(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), QSSGShaderMaterialAdapter::isUnshaded(), materialAdapter, and skipCustomFragmentSnippet.
Referenced by QSSGMaterialShaderGenerator::generateMaterialRhiShader().
void QSSGMaterialVertexPipeline::endVertexGeneration | ( | ) |
Definition at line 455 of file qssgvertexpipelineimpl.cpp.
References QSSGStageGeneratorBase::append(), customMainCallWithArguments(), QSSGShaderMaterialAdapter::hasCustomShaderSnippet(), QSSGShaderMaterialAdapter::isUnshaded(), materialAdapter, usesInstancing, QSSGShaderCache::Vertex, and vertex().
Referenced by QSSGMaterialShaderGenerator::generateMaterialRhiShader().
|
inline |
Definition at line 84 of file qssgvertexpipelineimpl_p.h.
References Fragment, QSSGProgramGenerator::getStage(), and programGenerator().
Referenced by addInterpolationParameter(), beginFragmentGeneration(), endFragmentGeneration(), generateEnvMapReflection(), generateLightmapUVCoords(), QSSGMaterialShaderGenerator::generateMaterialRhiShader(), generateObjectNormal(), generateUVCoords(), generateVarTangentAndBinormal(), generateVertexColor(), generateViewVector(), and generateWorldNormal().
|
inline |
Definition at line 227 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(), QSSGStageGeneratorBase::addInclude(), addInterpolationParameter(), QSSGStageGeneratorBase::append(), EnvMapReflection, fragment(), generateWorldNormal(), generateWorldPosition(), 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 197 of file qssgvertexpipelineimpl_p.h.
References addInterpolationParameter(), QSSGStageGeneratorBase::append(), fragment(), ObjectNormal, setCode(), and vertex().
|
inline |
Definition at line 236 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(), generateImageUVCoordinates(), and generateImageUVSampler().
|
inline |
Definition at line 256 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 285 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, setCode(), usesInstancing, vertex(), and VertexColor.
Referenced by generateFragmentShader().
|
inline |
Definition at line 164 of file qssgvertexpipelineimpl_p.h.
References activeStage(), QSSGStageGeneratorBase::addUniform(), fragment(), generateWorldPosition(), setCode(), and ViewVector.
Referenced by generateFragmentShader().
|
inline |
Definition at line 180 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 207 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 449 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 341 of file qssgvertexpipelineimpl_p.h.
References activeStage().
|
inline |
Definition at line 78 of file qssgvertexpipelineimpl_p.h.
References m_programGenerator.
Referenced by beginVertexGeneration(), fragment(), QSSGMaterialShaderGenerator::generateMaterialRhiShader(), 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 349 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(), 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 54 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().
TStrTableStrMap QSSGMaterialVertexPipeline::m_interpolationParameters |
Definition at line 53 of file qssgvertexpipelineimpl_p.h.
Referenced by addInterpolationParameter().
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.
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().