summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp')
-rw-r--r--src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp372
1 files changed, 196 insertions, 176 deletions
diff --git a/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp b/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp
index 0789d51..cfa6cff 100644
--- a/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp
+++ b/src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp
@@ -395,7 +395,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
void AddLocalVariable(IShaderStageGenerator &inGenerator, const char8_t *inName,
const char8_t *inType)
{
- inGenerator << "\t" << inType << " " << inName << ";" << Endl;
+ inGenerator << " " << inType << " " << inName << ";" << Endl;
}
void AddLocalVariable(IShaderStageGenerator &inGenerator, const TStrType &inName,
@@ -414,41 +414,44 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
SetupTexCoordVariableName(uvSet);
fragmentShader.AddUniform(m_ImageSampler, "sampler2D");
vertexShader.AddUniform(m_ImageOffsets, "vec3");
- fragmentShader.AddUniform(m_ImageOffsets, "vec3");
vertexShader.AddUniform(m_ImageRotations, "vec4");
- fragmentShader.AddUniform(m_ImageRotations, "vec4");
if (image.m_Image.m_MappingMode == ImageMappingModes::Normal) {
- vertexShader << "\tuTransform = vec3( " << m_ImageRotations << ".x, "
+ vertexShader << " uTransform = vec3( " << m_ImageRotations << ".x, "
<< m_ImageRotations << ".y, " << m_ImageOffsets << ".x );" << Endl;
- vertexShader << "\tvTransform = vec3( " << m_ImageRotations << ".z, "
+ vertexShader << " vTransform = vec3( " << m_ImageRotations << ".z, "
<< m_ImageRotations << ".w, " << m_ImageOffsets << ".y );" << Endl;
vertexShader.AddOutgoing(m_ImageFragCoords, "vec2");
addFunction(vertexShader, "getTransformedUVCoords");
vertexShader.GenerateUVCoords(uvSet);
m_ImageTemp = m_ImageFragCoords;
m_ImageTemp.append("temp");
- vertexShader << "\tvec2 " << m_ImageTemp << " = getTransformedUVCoords( vec3( "
+ vertexShader << " vec2 " << m_ImageTemp << " = getTransformedUVCoords( vec3( "
<< m_TexCoordTemp << ", 1.0), uTransform, vTransform );" << Endl;
- if (image.m_Image.m_TextureData.m_TextureFlags.IsInvertUVCoords())
- vertexShader << "\t" << m_ImageTemp << ".y = 1.0 - " << m_ImageFragCoords << ".y;"
+ if (image.m_Image.m_TextureData.m_TextureFlags.IsInvertUVCoords()) {
+ vertexShader << " " << m_ImageTemp << ".y = 1.0 - " << m_ImageTemp << ".y;"
<< Endl;
+ }
vertexShader.AssignOutput(m_ImageFragCoords.c_str(), m_ImageTemp.c_str());
} else {
- fragmentShader << "\tuTransform = vec3( " << m_ImageRotations << ".x, "
+ fragmentShader.AddUniform(m_ImageOffsets, "vec3");
+ fragmentShader.AddUniform(m_ImageRotations, "vec4");
+ fragmentShader << " uTransform = vec3( " << m_ImageRotations << ".x, "
<< m_ImageRotations << ".y, " << m_ImageOffsets << ".x );" << Endl;
- fragmentShader << "\tvTransform = vec3( " << m_ImageRotations << ".z, "
+ fragmentShader << " vTransform = vec3( " << m_ImageRotations << ".z, "
<< m_ImageRotations << ".w, " << m_ImageOffsets << ".y );" << Endl;
vertexShader.GenerateEnvMapReflection();
addFunction(fragmentShader, "getTransformedUVCoords");
- fragmentShader << "\tvec2 " << m_ImageFragCoords
+ fragmentShader << " vec2 " << m_ImageFragCoords
<< " = getTransformedUVCoords( environment_map_reflection, uTransform, "
"vTransform );"
<< Endl;
- if (image.m_Image.m_TextureData.m_TextureFlags.IsInvertUVCoords())
- fragmentShader << "\t" << m_ImageFragCoords << ".y = 1.0 - " << m_ImageFragCoords
+
+ if (image.m_Image.m_TextureData.m_TextureFlags.IsInvertUVCoords()) {
+ fragmentShader << " " << m_ImageFragCoords << ".y = 1.0 - " << m_ImageFragCoords
<< ".y;" << Endl;
+ }
}
}
@@ -466,19 +469,19 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
inShader.AddUniform(m_ImageOffsets, "vec3");
inShader.AddUniform(m_ImageRotations, "vec4");
- inShader << "\tuTransform = vec3( " << m_ImageRotations << ".x, " << m_ImageRotations
+ inShader << " uTransform = vec3( " << m_ImageRotations << ".x, " << m_ImageRotations
<< ".y, " << m_ImageOffsets << ".x );" << Endl;
- inShader << "\tvTransform = vec3( " << m_ImageRotations << ".z, " << m_ImageRotations
+ inShader << " vTransform = vec3( " << m_ImageRotations << ".z, " << m_ImageRotations
<< ".w, " << m_ImageOffsets << ".y );" << Endl;
- inShader << "\tvec2 " << m_ImageFragCoords << ";" << Endl;
+ inShader << " vec2 " << m_ImageFragCoords << ";" << Endl;
addFunction(inShader, "getTransformedUVCoords");
inShader.GenerateUVCoords();
inShader
- << "\t" << m_ImageFragCoords
+ << " " << m_ImageFragCoords
<< " = getTransformedUVCoords( vec3( varTexCoord0, 1.0), uTransform, vTransform );"
<< Endl;
if (image.m_Image.m_TextureData.m_TextureFlags.IsInvertUVCoords())
- inShader << "\t" << m_ImageFragCoords << ".y = 1.0 - " << m_ImageFragCoords << ".y;"
+ inShader << " " << m_ImageFragCoords << ".y = 1.0 - " << m_ImageFragCoords << ".y;"
<< Endl;
}
}
@@ -491,7 +494,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
case DefaultMaterialSpecularModel::KGGX: {
fragmentShader.AddInclude("defaultMaterialPhysGlossyBSDF.glsllib");
fragmentShader.AddUniform("material_specular", "vec4");
- fragmentShader << "\tglobal_specular_light.rgb += lightAttenuation * specularAmount * "
+ fragmentShader << " global_specular_light.rgb += lightAttenuation * specularAmount * "
"specularColor * kggxGlossyDefaultMtl( "
<< "world_normal, tangent, -" << inLightDir << ".xyz, view_vector, "
<< inLightSpecColor
@@ -502,7 +505,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
case DefaultMaterialSpecularModel::KWard: {
fragmentShader.AddInclude("defaultMaterialPhysGlossyBSDF.glsllib");
fragmentShader.AddUniform("material_specular", "vec4");
- fragmentShader << "\tglobal_specular_light.rgb += lightAttenuation * specularAmount * "
+ fragmentShader << " global_specular_light.rgb += lightAttenuation * specularAmount * "
"specularColor * wardGlossyDefaultMtl( "
<< "world_normal, tangent, -" << inLightDir << ".xyz, view_vector, "
<< inLightSpecColor
@@ -512,11 +515,11 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
} break;
default:
addFunction(fragmentShader, "specularBSDF");
- fragmentShader << "\tglobal_specular_light.rgb += lightAttenuation * specularAmount * "
+ fragmentShader << " global_specular_light.rgb += lightAttenuation * specularAmount * "
"specularColor * specularBSDF( "
<< "world_normal, -" << inLightDir << ".xyz, view_vector, "
- << inLightSpecColor << ".rgb, 1.0, 2.56 / (roughnessAmount + "
- "0.01), vec3(1.0), scatter_reflect ).rgb;"
+ << inLightSpecColor << ".rgb, 2.56 / (roughnessAmount + "
+ "0.01)).rgb;"
<< Endl;
break;
}
@@ -527,7 +530,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
{
m_NormalizedDirection = inLightPrefix + "_areaDir";
AddLocalVariable(infragmentShader, m_NormalizedDirection, "vec3");
- infragmentShader << "\tlightAttenuation = calculateDiffuseAreaOld( " << m_LightDirection
+ infragmentShader << " lightAttenuation = calculateDiffuseAreaOld( " << m_LightDirection
<< ".xyz, " << m_LightPos << ".xyz, " << m_LightUp << ", " << m_LightRt
<< ", " << inPos << ", " << m_NormalizedDirection << " );" << Endl;
}
@@ -542,7 +545,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
"specularAmount * sampleAreaGlossyDefault( tanFrame, "
<< inPos << ", " << m_NormalizedDirection << ", " << m_LightPos << ".xyz, "
<< m_LightRt << ".w, " << m_LightUp << ".w, " << inView
- << ", roughnessAmount, roughnessAmount ).rgb;" << Endl;
+ << ", roughnessAmount).rgb;" << Endl;
}
void AddTranslucencyIrradiance(IShaderStageGenerator &infragmentShader, SRenderableImage *image,
@@ -553,13 +556,13 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
addFunction(infragmentShader, "diffuseReflectionWrapBSDF");
if (areaLight) {
- infragmentShader << "\tglobal_diffuse_light.rgb += lightAttenuation * "
+ infragmentShader << " global_diffuse_light.rgb += lightAttenuation * "
"translucent_thickness_exp * diffuseReflectionWrapBSDF( "
"-world_normal, "
<< m_NormalizedDirection << ", " << m_LightColor
<< ".rgb, diffuseLightWrap ).rgb;" << Endl;
} else {
- infragmentShader << "\tglobal_diffuse_light.rgb += lightAttenuation * "
+ infragmentShader << " global_diffuse_light.rgb += lightAttenuation * "
"translucent_thickness_exp * diffuseReflectionWrapBSDF( "
"-world_normal, "
<< "-" << m_NormalizedDirection << ", " << m_LightColor
@@ -601,7 +604,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if ( inType == RenderLightTypes::Area )
{
inLightShader << "vec2 " << m_ShadowCoordStem << ";" << Endl;
- inLightShader << "\tshadow_map_occl = sampleParaboloid( " << m_ShadowMapStem << ", "
+ inLightShader << " shadow_map_occl = sampleParaboloid( " << m_ShadowMapStem << ", "
<< m_ShadowControlStem << ", "
<<
m_ShadowMatrixStem << ", varWorldPos, vec2(1.0, " << m_ShadowControlStem << ".z), "
@@ -610,12 +613,12 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
else */
if (inType != RenderLightTypes::Directional) {
- inLightShader << "\tshadow_map_occl = sampleCubemap( " << m_ShadowCubeStem << ", "
+ inLightShader << " shadow_map_occl = sampleCubemap( " << m_ShadowCubeStem << ", "
<< m_ShadowControlStem << ", " << m_ShadowMatrixStem << ", " << m_LightPos
<< ".xyz, varWorldPos, vec2(1.0, " << m_ShadowControlStem << ".z) );"
<< Endl;
} else
- inLightShader << "\tshadow_map_occl = sampleOrthographic( " << m_ShadowMapStem << ", "
+ inLightShader << " shadow_map_occl = sampleOrthographic( " << m_ShadowMapStem << ", "
<< m_ShadowControlStem << ", " << m_ShadowMatrixStem
<< ", varWorldPos, vec2(1.0, " << m_ShadowControlStem << ".z) );" << Endl;
}
@@ -630,18 +633,18 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
inShader.AddUniform("displacementMap_offset", "vec3");
inShader.AddInclude("defaultMaterialFileDisplacementTexture.glsllib");
- inShader.Append("\tvec3 uTransform = vec3( displacementMap_rot.x, displacementMap_rot.y, "
+ inShader.Append(" vec3 uTransform = vec3( displacementMap_rot.x, displacementMap_rot.y, "
"displacementMap_offset.x );");
- inShader.Append("\tvec3 vTransform = vec3( displacementMap_rot.z, displacementMap_rot.w, "
+ inShader.Append(" vec3 vTransform = vec3( displacementMap_rot.z, displacementMap_rot.w, "
"displacementMap_offset.y );");
addFunction(inShader, "getTransformedUVCoords");
- inShader.Append("\tvec2 uv_coords = attr_uv0;");
- inShader << "\tuv_coords = getTransformedUVCoords( vec3( uv_coords, 1.0), uTransform, "
+ inShader.Append(" vec2 uv_coords = attr_uv0;");
+ inShader << " uv_coords = getTransformedUVCoords( vec3( uv_coords, 1.0), uTransform, "
"vTransform );\n";
- inShader << "\tvec3 displacedPos = defaultMaterialFileDisplacementTexture( "
+ inShader << " vec3 displacedPos = defaultMaterialFileDisplacementTexture( "
"displacementSampler , displaceAmount, uv_coords , attr_norm, attr_pos );"
<< Endl;
- inShader.Append("\tgl_Position = model_view_projection * vec4(displacedPos, 1.0);");
+ inShader.Append(" gl_Position = model_view_projection * vec4(displacedPos, 1.0);");
}
void AddDisplacementImageUniforms(IShaderStageGenerator &inGenerator,
@@ -663,15 +666,15 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
{
if (m_DefaultMaterialShaderKeyProperties.m_FresnelEnabled.GetValue(inKey)) {
if (inFragmentHasSpecularAmount == false)
- fragmentShader << "\tfloat specularAmount = 1.0;" << Endl;
+ fragmentShader << " float specularAmount = 1.0;" << Endl;
inFragmentHasSpecularAmount = true;
fragmentShader.AddInclude("defaultMaterialFresnel.glsllib");
fragmentShader.AddUniform("fresnelPower", "float");
fragmentShader.AddUniform("material_specular", "vec4");
- fragmentShader << "\tfloat fresnelRatio = defaultMaterialSimpleFresnel( world_normal, "
+ fragmentShader << " float fresnelRatio = defaultMaterialSimpleFresnel( world_normal, "
"view_vector, material_specular.w, fresnelPower );"
<< Endl;
- fragmentShader << "\tspecularAmount *= fresnelRatio;" << Endl;
+ fragmentShader << " specularAmount *= fresnelRatio;" << Endl;
}
return inFragmentHasSpecularAmount;
}
@@ -742,18 +745,18 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
inShader.AddUniform("displacementMap_offset", "vec3");
inShader.AddInclude("defaultMaterialFileDisplacementTexture.glsllib");
- inShader.Append("\tvec3 uTransform = vec3( displacementMap_rot.x, displacementMap_rot.y, "
+ inShader.Append(" vec3 uTransform = vec3( displacementMap_rot.x, displacementMap_rot.y, "
"displacementMap_offset.x );");
- inShader.Append("\tvec3 vTransform = vec3( displacementMap_rot.z, displacementMap_rot.w, "
+ inShader.Append(" vec3 vTransform = vec3( displacementMap_rot.z, displacementMap_rot.w, "
"displacementMap_offset.y );");
addFunction(inShader, "getTransformedUVCoords");
inShader.GenerateUVCoords();
- inShader << "\tvarTexCoord0 = getTransformedUVCoords( vec3( varTexCoord0, 1.0), "
+ inShader << " varTexCoord0 = getTransformedUVCoords( vec3( varTexCoord0, 1.0), "
"uTransform, vTransform );\n";
- inShader << "\tvec3 displacedPos = defaultMaterialFileDisplacementTexture( "
+ inShader << " vec3 displacedPos = defaultMaterialFileDisplacementTexture( "
"displacementSampler , displaceAmount, varTexCoord0 , attr_norm, attr_pos );"
<< Endl;
- inShader.Append("\tgl_Position = model_view_projection * vec4(displacedPos, 1.0);");
+ inShader.Append(" gl_Position = model_view_projection * vec4(displacedPos, 1.0);");
}
void GenerateTextureSwizzle(NVRenderTextureSwizzleMode::Enum swizzleMode,
@@ -859,6 +862,12 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
inImage.m_Image.m_HorizontalTilingMode);
inImage.m_Image.m_TextureData.m_Texture->SetTextureWrapT(
inImage.m_Image.m_VerticalTilingMode);
+ if (inImage.m_Image.m_MinFilter > NVRenderTextureMinifyingOp::Linear
+ && inImage.m_Image.m_TextureData.m_Texture->GetNumMipmaps() == 0) {
+ inImage.m_Image.m_TextureData.m_Texture->GenerateMipmaps();
+ }
+ inImage.m_Image.m_TextureData.m_Texture->SetMinFilter(inImage.m_Image.m_MinFilter);
+ inImage.m_Image.m_TextureData.m_Texture->SetMagFilter(inImage.m_Image.m_MagFilter);
theShaderProps.m_Sampler.Set(imageTexture);
theShaderProps.m_Offsets.Set(offsets);
theShaderProps.m_Rotations.Set(rotations);
@@ -875,14 +884,14 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
/*
VertexGenerator().AddUniform( m_ShadowMatrixStem, "mat4" );
VertexGenerator().AddOutgoing( m_ShadowCoordStem, "vec4" );
- VertexGenerator() << "\tvec4 local_" << m_ShadowCoordStem << " = " << m_ShadowMatrixStem
+ VertexGenerator() << " vec4 local_" << m_ShadowCoordStem << " = " << m_ShadowMatrixStem
<< " * vec4(local_model_world_position, 1.0);" << Endl;
m_TempStr.assign( "local_" );
m_TempStr.append( m_ShadowCoordStem );
VertexGenerator().AssignOutput( m_ShadowCoordStem.c_str(), m_TempStr.c_str() );
*/
} else {
- FragmentGenerator() << "\tshadow_map_occl = 1.0;" << Endl;
+ FragmentGenerator() << " shadow_map_occl = 1.0;" << Endl;
}
}
@@ -1035,9 +1044,9 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
// generated.
// we rely on the linker to strip out what isn't necessary instead of explicitly stripping
// it for code simplicity.
- if (hasImage) {
- fragmentShader.Append("\tvec3 uTransform;");
- fragmentShader.Append("\tvec3 vTransform;");
+ if (hasImage || hasLighting || hasLightmaps) {
+ fragmentShader.Append(" vec3 uTransform;");
+ fragmentShader.Append(" vec3 vTransform;");
}
if (includeSSAOSSDOVars || hasSpecMap || hasLighting || hasEnvMap || enableFresnel
@@ -1052,7 +1061,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if (vertexColorsEnabled)
vertexShader.GenerateVertexColor();
else
- fragmentShader.Append("\tvec3 vertColor = vec3(1.0);");
+ fragmentShader.Append(" vec3 vertColor = vec3(1.0);");
// You do bump or normal mapping but not both
if (bumpImage != nullptr) {
@@ -1061,41 +1070,41 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
fragmentShader.AddUniform(m_ImageSamplerSize, "vec2");
fragmentShader.AddInclude("defaultMaterialBumpNoLod.glsllib");
- fragmentShader << "\tworld_normal = defaultMaterialBumpNoLod( " << m_ImageSampler
+ fragmentShader << " world_normal = defaultMaterialBumpNoLod( " << m_ImageSampler
<< ", bumpAmount, " << m_ImageFragCoords
<< ", tangent, binormal, world_normal, "
<< m_ImageSamplerSize << ");" << Endl;
// Do gram schmidt
- fragmentShader << "\tbinormal = normalize(cross(world_normal, tangent) );\n";
- fragmentShader << "\ttangent = normalize(cross(binormal, world_normal) );\n";
+ fragmentShader << " binormal = normalize(cross(world_normal, tangent) );\n";
+ fragmentShader << " tangent = normalize(cross(binormal, world_normal) );\n";
} else if (normalImage != nullptr) {
GenerateImageUVCoordinates(normalImageIdx, *normalImage);
- fragmentShader.AddInclude("defaultMaterialFileNormalTexture.glsllib");
+ fragmentShader.AddFunction("sampleNormalTexture");
fragmentShader.AddUniform("bumpAmount", "float");
- fragmentShader << "\tworld_normal = defaultMaterialFileNormalTexture( "
+ fragmentShader << " world_normal = sampleNormalTexture( "
<< m_ImageSampler << ", bumpAmount, " << m_ImageFragCoords
- << ", tangent, binormal );" << Endl;
+ << ", tangent, binormal, world_normal);" << Endl;
}
if (includeSSAOSSDOVars || specularEnabled || hasIblProbe || enableBumpNormal)
- fragmentShader << "\tmat3 tanFrame = mat3(tangent, binormal, world_normal);" << Endl;
+ fragmentShader << " mat3 tanFrame = mat3(tangent, binormal, world_normal);" << Endl;
bool fragmentHasSpecularAmount = false;
if (hasEmissiveMap) {
- fragmentShader.Append("\tvec3 global_emission = material_diffuse.rgb;");
+ fragmentShader.Append(" vec3 global_emission = material_diffuse.rgb;");
}
if (hasLighting) {
fragmentShader.AddUniform("light_ambient_total", "vec3");
fragmentShader.Append(
- "\tvec4 global_diffuse_light = vec4(light_ambient_total.xyz, 1.0);");
- fragmentShader.Append("\tvec3 global_specular_light = vec3(0.0, 0.0, 0.0);");
- fragmentShader.Append("\tfloat shadow_map_occl = 1.0;");
+ " vec4 global_diffuse_light = vec4(light_ambient_total.xyz, 1.0);");
+ fragmentShader.Append(" vec3 global_specular_light = vec3(0.0, 0.0, 0.0);");
+ fragmentShader.Append(" float shadow_map_occl = 1.0;");
if (specularEnabled) {
vertexShader.GenerateViewVector();
@@ -1104,24 +1113,24 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if (lightmapIndirectImage != nullptr) {
GenerateImageUVCoordinates(lightmapIndirectImageIdx, *lightmapIndirectImage, 1);
- fragmentShader << "\tvec4 indirect_light = texture2D( " << m_ImageSampler << ", "
+ fragmentShader << " vec4 indirect_light = texture2D( " << m_ImageSampler << ", "
<< m_ImageFragCoords << ");" << Endl;
- fragmentShader << "\tglobal_diffuse_light += indirect_light;" << Endl;
+ fragmentShader << " global_diffuse_light += indirect_light;" << Endl;
if (specularEnabled) {
fragmentShader
- << "\tglobal_specular_light += indirect_light.rgb * material_properties.x;"
+ << " global_specular_light += indirect_light.rgb * material_properties.x;"
<< Endl;
}
}
if (lightmapRadiosityImage != nullptr) {
GenerateImageUVCoordinates(lightmapRadiosityImageIdx, *lightmapRadiosityImage, 1);
- fragmentShader << "\tvec4 direct_light = texture2D( " << m_ImageSampler << ", "
+ fragmentShader << " vec4 direct_light = texture2D( " << m_ImageSampler << ", "
<< m_ImageFragCoords << ");" << Endl;
- fragmentShader << "\tglobal_diffuse_light += direct_light;" << Endl;
+ fragmentShader << " global_diffuse_light += direct_light;" << Endl;
if (specularEnabled) {
fragmentShader
- << "\tglobal_specular_light += direct_light.rgb * material_properties.x;"
+ << " global_specular_light += direct_light.rgb * material_properties.x;"
<< Endl;
}
}
@@ -1132,52 +1141,52 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
GenerateImageUVCoordinates(translucencyImageIdx, *translucencyImage);
- fragmentShader << "\tvec4 translucent_depth_range = texture2D( " << m_ImageSampler
+ fragmentShader << " vec4 translucent_depth_range = texture2D( " << m_ImageSampler
<< ", " << m_ImageFragCoords << ");" << Endl;
- fragmentShader << "\tfloat translucent_thickness = translucent_depth_range.r * "
+ fragmentShader << " float translucent_thickness = translucent_depth_range.r * "
"translucent_depth_range.r;"
<< Endl;
- fragmentShader << "\tfloat translucent_thickness_exp = exp( translucent_thickness "
+ fragmentShader << " float translucent_thickness_exp = exp( translucent_thickness "
"* translucentFalloff);"
<< Endl;
}
- fragmentShader.Append("\tfloat lightAttenuation = 1.0;");
+ fragmentShader.Append(" float lightAttenuation = 1.0;");
AddLocalVariable(fragmentShader, "aoFactor", "float");
if (hasLighting && enableSSAO)
- fragmentShader.Append("\taoFactor = customMaterialAO();");
+ fragmentShader.Append(" aoFactor = customMaterialAO();");
else
- fragmentShader.Append("\taoFactor = 1.0;");
+ fragmentShader.Append(" aoFactor = 1.0;");
AddLocalVariable(fragmentShader, "shadowFac", "float");
if (specularEnabled) {
- fragmentShader << "\tfloat specularAmount = material_properties.x;" << Endl;
+ fragmentShader << " float specularAmount = material_properties.x;" << Endl;
fragmentHasSpecularAmount = true;
}
// Fragment lighting means we can perhaps attenuate the specular amount by a texture
// lookup.
- fragmentShader << "\tvec3 specularColor = vec3(1.0);" << Endl;
+ fragmentShader << " vec3 specularColor = vec3(1.0);" << Endl;
if (specularAmountImage) {
if (!specularEnabled)
- fragmentShader << "\tfloat specularAmount = 1.0;" << Endl;
+ fragmentShader << " float specularAmount = 1.0;" << Endl;
GenerateImageUVCoordinates(specularAmountImageIdx, *specularAmountImage);
- fragmentShader << "\tspecularColor = texture2D( "
+ fragmentShader << " specularColor = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << " ).xyz;" << Endl;
fragmentHasSpecularAmount = true;
}
- fragmentShader << "\tfloat roughnessAmount = material_properties.y;" << Endl;
+ fragmentShader << " float roughnessAmount = material_properties.y;" << Endl;
if (roughnessImage) {
GenerateImageUVCoordinates(roughnessImageIdx, *roughnessImage);
- fragmentShader << "\tfloat sampledRoughness = texture2D( "
+ fragmentShader << " float sampledRoughness = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << " ).x;" << Endl;
//The roughness sampled from roughness textures is Disney roughness
//which has to be squared to get the proper value
- fragmentShader << "\troughnessAmount = roughnessAmount * "
+ fragmentShader << " roughnessAmount = roughnessAmount * "
<< "sampledRoughness * sampledRoughness;" << Endl;
}
@@ -1199,8 +1208,8 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
m_TempStr.assign("light");
m_TempStr.append(buf);
- fragmentShader << "\t//Light " << buf << Endl;
- fragmentShader << "\tlightAttenuation = 1.0;" << Endl;
+ fragmentShader << " //Light " << buf << Endl;
+ fragmentShader << " lightAttenuation = 1.0;" << Endl;
if (isDirectional) {
if (m_LightsAsSeparateUniforms) {
@@ -1209,22 +1218,22 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
if (enableSSDO) {
- fragmentShader << "\tshadowFac = customMaterialShadow( " << m_LightDirection
+ fragmentShader << " shadowFac = customMaterialShadow( " << m_LightDirection
<< ".xyz, varWorldPos );" << Endl;
} else {
- fragmentShader << "\tshadowFac = 1.0;" << Endl;
+ fragmentShader << " shadowFac = 1.0;" << Endl;
}
GenerateShadowMapOcclusion(lightIdx, enableShadowMaps && isShadow,
lightNode->m_LightType);
if (specularEnabled && enableShadowMaps && isShadow)
- fragmentShader << "\tlightAttenuation *= shadow_map_occl;" << Endl;
+ fragmentShader << " lightAttenuation *= shadow_map_occl;" << Endl;
- fragmentShader << "\tglobal_diffuse_light.rgb += shadowFac * shadow_map_occl * "
+ fragmentShader << " global_diffuse_light.rgb += shadowFac * shadow_map_occl * "
"diffuseReflectionBSDF( world_normal, "
- << "-" << m_LightDirection << ".xyz, view_vector, "
- << m_LightColor << ".rgb, 0.0 ).rgb;" << Endl;
+ << "-" << m_LightDirection << ".xyz, "
+ << m_LightColor << ".rgb).rgb;" << Endl;
if (specularEnabled) {
if (m_LightsAsSeparateUniforms)
@@ -1250,7 +1259,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
// Debug measure to make sure paraboloid sampling was projecting to the right
// location
- // fragmentShader << "\tglobal_diffuse_light.rg += " << m_ShadowCoordStem << ";"
+ // fragmentShader << " global_diffuse_light.rg += " << m_ShadowCoordStem << ";"
// << Endl;
m_NormalizedDirection = m_TempStr;
m_NormalizedDirection.append("_Frame");
@@ -1261,10 +1270,10 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
<< Endl;
if (enableSSDO) {
- fragmentShader << "\tshadowFac = shadow_map_occl * customMaterialShadow( "
+ fragmentShader << " shadowFac = shadow_map_occl * customMaterialShadow( "
<< m_LightDirection << ".xyz, varWorldPos );" << Endl;
} else {
- fragmentShader << "\tshadowFac = shadow_map_occl;" << Endl;
+ fragmentShader << " shadowFac = shadow_map_occl;" << Endl;
}
if (specularEnabled) {
@@ -1276,14 +1285,14 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
OutputDiffuseAreaLighting(fragmentShader, "varWorldPos", m_TempStr);
- fragmentShader << "\tlightAttenuation *= shadowFac;" << Endl;
+ fragmentShader << " lightAttenuation *= shadowFac;" << Endl;
AddTranslucencyIrradiance(fragmentShader, translucencyImage, m_TempStr, true);
- fragmentShader << "\tglobal_diffuse_light.rgb += lightAttenuation * "
+ fragmentShader << " global_diffuse_light.rgb += lightAttenuation * "
"diffuseReflectionBSDF( world_normal, "
- << m_NormalizedDirection << ", view_vector, " << m_LightColor
- << ".rgb, 0.0 ).rgb;" << Endl;
+ << m_NormalizedDirection << ", " << m_LightColor
+ << ".rgb).rgb;" << Endl;
} else {
vertexShader.GenerateWorldPosition();
@@ -1304,19 +1313,19 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
m_RelativeDistance = m_TempStr;
m_RelativeDistance.append("_distance");
- fragmentShader << "\tvec3 " << m_RelativeDirection << " = varWorldPos - "
+ fragmentShader << " vec3 " << m_RelativeDirection << " = varWorldPos - "
<< m_LightPos << ".xyz;" << Endl;
- fragmentShader << "\tfloat " << m_RelativeDistance << " = length( "
+ fragmentShader << " float " << m_RelativeDistance << " = length( "
<< m_RelativeDirection << " );" << Endl;
- fragmentShader << "\tvec3 " << m_NormalizedDirection << " = "
+ fragmentShader << " vec3 " << m_NormalizedDirection << " = "
<< m_RelativeDirection << " / " << m_RelativeDistance << ";"
<< Endl;
if (enableSSDO) {
- fragmentShader << "\tshadowFac = shadow_map_occl * customMaterialShadow( "
+ fragmentShader << " shadowFac = shadow_map_occl * customMaterialShadow( "
<< m_NormalizedDirection << ", varWorldPos );" << Endl;
} else {
- fragmentShader << "\tshadowFac = shadow_map_occl;" << Endl;
+ fragmentShader << " shadowFac = shadow_map_occl;" << Endl;
}
addFunction(fragmentShader, "calculatePointLightAttenuation");
@@ -1324,13 +1333,13 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if (m_LightsAsSeparateUniforms) {
fragmentShader.AddUniform(m_LightAttenuation, "vec3");
fragmentShader
- << "\tlightAttenuation = shadowFac * calculatePointLightAttenuation("
+ << " lightAttenuation = shadowFac * calculatePointLightAttenuation("
<< "vec3( " << m_LightAttenuation << ".x, " << m_LightAttenuation
<< ".y, " << m_LightAttenuation << ".z), " << m_RelativeDistance
<< ");" << Endl;
} else {
fragmentShader
- << "\tlightAttenuation = shadowFac * calculatePointLightAttenuation("
+ << " lightAttenuation = shadowFac * calculatePointLightAttenuation("
<< "vec3( " << m_LightConstantAttenuation << ", "
<< m_LightLinearAttenuation << ", " << m_LightQuadraticAttenuation
<< "), " << m_RelativeDistance << ");"
@@ -1341,10 +1350,10 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
AddTranslucencyIrradiance(fragmentShader, translucencyImage, m_TempStr, false);
- fragmentShader << "\tglobal_diffuse_light.rgb += lightAttenuation * "
+ fragmentShader << " global_diffuse_light.rgb += lightAttenuation * "
"diffuseReflectionBSDF( world_normal, "
- << "-" << m_NormalizedDirection << ", view_vector, "
- << m_LightColor << ".rgb, 0.0 ).rgb;" << Endl;
+ << "-" << m_NormalizedDirection << ", "
+ << m_LightColor << ".rgb).rgb;" << Endl;
if (specularEnabled) {
if (m_LightsAsSeparateUniforms)
@@ -1363,14 +1372,14 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
// Furthermore object_opacity is something that may come from the vertex pipeline or
// somewhere else.
// We leave it up to the vertex pipeline to figure it out.
- fragmentShader << "\tglobal_diffuse_light = vec4(global_diffuse_light.xyz * aoFactor, "
+ fragmentShader << " global_diffuse_light = vec4(global_diffuse_light.xyz * aoFactor, "
"object_opacity);"
- << Endl << "\tglobal_specular_light = vec3(global_specular_light.xyz);"
+ << Endl << " global_specular_light = vec3(global_specular_light.xyz);"
<< Endl;
} else // no lighting.
{
- fragmentShader << "\tvec4 global_diffuse_light = vec4(0.0, 0.0, 0.0, object_opacity);"
- << Endl << "\tvec3 global_specular_light = vec3(0.0, 0.0, 0.0);" << Endl;
+ fragmentShader << " vec4 global_diffuse_light = vec4(0.0, 0.0, 0.0, object_opacity);"
+ << Endl << " vec3 global_specular_light = vec3(0.0, 0.0, 0.0);" << Endl;
// We still have specular maps and such that could potentially use the fresnel variable.
fragmentHasSpecularAmount =
@@ -1379,19 +1388,19 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if (!hasEmissiveMap)
fragmentShader
- << "\tglobal_diffuse_light.rgb += diffuse_color.rgb * material_diffuse.rgb;"
+ << " global_diffuse_light.rgb += diffuse_color.rgb * material_diffuse.rgb;"
<< Endl;
// since we already modulate our material diffuse color
// into the light color we will miss it entirely if no IBL
// or light is used
if (hasLightmaps && !(m_Lights.size() || hasIblProbe))
- fragmentShader << "\tglobal_diffuse_light.rgb *= diffuse_color.rgb;" << Endl;
+ fragmentShader << " global_diffuse_light.rgb *= diffuse_color.rgb;" << Endl;
if (hasLighting && hasIblProbe) {
vertexShader.GenerateWorldNormal();
- fragmentShader << "\tglobal_diffuse_light.rgb += diffuse_color.rgb * aoFactor * "
+ fragmentShader << " global_diffuse_light.rgb += diffuse_color.rgb * aoFactor * "
"sampleDiffuse( tanFrame ).xyz;"
<< Endl;
@@ -1399,7 +1408,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
fragmentShader.AddUniform("material_specular", "vec4");
- fragmentShader << "\tglobal_specular_light.xyz += specularAmount * specularColor * "
+ fragmentShader << " global_specular_light.xyz += specularAmount * specularColor * "
"vec3(material_specular.xyz) * sampleGlossy( tanFrame, "
"view_vector, roughnessAmount ).xyz;"
<< Endl;
@@ -1407,7 +1416,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
if (hasImage) {
- fragmentShader.Append("\tvec4 texture_color;");
+ fragmentShader.Append(" vec4 texture_color;");
QT3DSU32 idx = 0;
for (SRenderableImage *image = m_FirstImage; image; image = image->m_NextImage, ++idx) {
// Various maps are handled on a different locations
@@ -1431,18 +1440,18 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
lookupSwizzle);
if (texLodStr.empty()) {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << " = texture2D( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << " = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ")"
<< lookupSwizzle.c_str() << ";" << Endl;
} else {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << "= textureLod( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << "= textureLod( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ", "
<< texLodStr.c_str() << " )" << lookupSwizzle.c_str() << ";"
<< Endl;
}
if (image->m_Image.m_TextureData.m_TextureFlags.IsPreMultiplied() == true)
- fragmentShader << "\ttexture_color.rgb = texture_color.a > 0.0 ? "
+ fragmentShader << " texture_color.rgb = texture_color.a > 0.0 ? "
"texture_color.rgb / texture_color.a : vec3( 0, 0, 0 );"
<< Endl;
@@ -1454,27 +1463,38 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
// not premultiplied textures.
// If Z is 1, then we assume the incoming texture is already premultiplied, else
// we just read the rgb value.
- fragmentShader.Append("\tglobal_diffuse_light *= texture_color;");
+ fragmentShader.Append(" global_diffuse_light *= texture_color;");
break;
case ImageMapTypes::Specular:
-
fragmentShader.AddUniform("material_specular", "vec4");
- if (fragmentHasSpecularAmount) {
- fragmentShader.Append("\tglobal_specular_light.xyz += specularAmount * "
- "specularColor * texture_color.xyz * "
- "material_specular.xyz;");
+ if (image->m_Image.m_TextureData.m_Texture->GetTextureDetails().m_Format != NVRenderTextureFormats::RGBE8) {
+ if (fragmentHasSpecularAmount) {
+ fragmentShader.Append(" global_specular_light.xyz += specularAmount * "
+ "specularColor * texture_color.xyz * "
+ "material_specular.xyz;");
+ } else {
+ fragmentShader.Append(" global_specular_light.xyz += texture_color.xyz * "
+ "material_specular.xyz;");
+ }
+ fragmentShader.Append(" global_diffuse_light.a *= texture_color.a;");
} else {
- fragmentShader.Append("\tglobal_specular_light.xyz += texture_color.xyz * "
- "material_specular.xyz;");
+ // RGBE map
+ if (fragmentHasSpecularAmount) {
+ fragmentShader.Append(" global_specular_light.xyz += specularAmount * "
+ "specularColor * texture_color.xyz * pow(2.0, texture_color.a * 255.0 - 128.0);"
+ "material_specular.xyz;");
+ } else {
+ fragmentShader.Append(" global_specular_light.xyz += texture_color.xyz * "
+ "material_specular.xyz * pow(2.0, texture_color.a * 255.0 - 128.0);");
+ }
}
- fragmentShader.Append("\tglobal_diffuse_light.a *= texture_color.a;");
break;
case ImageMapTypes::Opacity:
- fragmentShader.Append("\tglobal_diffuse_light.a *= texture_color.a;");
+ fragmentShader.Append(" global_diffuse_light.a *= texture_color.a;");
break;
case ImageMapTypes::Emissive:
fragmentShader.Append(
- "\tglobal_emission *= texture_color.xyz * texture_color.a;");
+ " global_emission *= texture_color.xyz * texture_color.a;");
break;
default:
QT3DS_ASSERT(false); // fallthrough intentional
@@ -1486,27 +1506,27 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
if (enableAlphaTest) {
fragmentShader.AddUniform("alphaOpRef", "vec2");
fragmentShader.Append(
- "\tif (dot(vec2(global_diffuse_light.a, 1.0), alphaOpRef) <= 0.0)\n"
- "\t\tdiscard;");
+ " if (dot(vec2(global_diffuse_light.a, 1.0), alphaOpRef) <= 0.0)\n"
+ " discard;");
}
if (hasEmissiveMap) {
- fragmentShader.Append("\tglobal_diffuse_light.rgb += global_emission.rgb;");
+ fragmentShader.Append(" global_diffuse_light.rgb += global_emission.rgb;");
}
// Ensure the rgb colors are in range.
- fragmentShader.Append("\tfragOutput = vec4( clamp( vertColor * global_diffuse_light.xyz + "
+ fragmentShader.Append(" fragOutput = vec4( clamp( vertColor * global_diffuse_light.xyz + "
"global_specular_light.xyz, 0.0, 65519.0 ), global_diffuse_light.a "
");");
if (VertexGenerator().HasActiveWireframe()) {
fragmentShader.Append("vec3 edgeDistance = varEdgeDistance * gl_FragCoord.w;");
fragmentShader.Append(
- "\tfloat d = min(min(edgeDistance.x, edgeDistance.y), edgeDistance.z);");
- fragmentShader.Append("\tfloat mixVal = smoothstep(0.0, 1.0, d);"); // line width 1.0
+ " float d = min(min(edgeDistance.x, edgeDistance.y), edgeDistance.z);");
+ fragmentShader.Append(" float mixVal = smoothstep(0.0, 1.0, d);"); // line width 1.0
fragmentShader.Append(
- "\tfragOutput = mix( vec4(0.0, 1.0, 0.0, 1.0), fragOutput, mixVal);");
+ " fragOutput = mix( vec4(0.0, 1.0, 0.0, 1.0), fragOutput, mixVal);");
}
}
@@ -1552,13 +1572,13 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
vertexShader.AddIncoming("attr_pos", "vec3");
vertexShader.AddUniform("model_view_projection", "mat4");
vertexShader.Append("void main() {");
- vertexShader.Append("\tgl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
- vertexShader.Append("\tvec3 uTransform;");
- vertexShader.Append("\tvec3 vTransform;");
+ vertexShader.Append(" gl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
+ vertexShader.Append(" vec3 uTransform;");
+ vertexShader.Append(" vec3 vTransform;");
- fragmentShader << "\tfloat global_opacity = object_opacity;" << Endl;
+ fragmentShader << " float global_opacity = object_opacity;" << Endl;
- fragmentShader.Append("\tvec4 texture_color;");
+ fragmentShader.Append(" vec4 texture_color;");
QT3DSU32 idx = 0;
for (SRenderableImage *image = m_FirstImage; image; image = image->m_NextImage, ++idx) {
// Various maps are handled on a different locations
@@ -1583,11 +1603,11 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
lookupSwizzle);
if (texLodStr.empty()) {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << " = texture2D( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << " = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ")"
<< lookupSwizzle.c_str() << ";" << Endl;
} else {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << "= textureLod( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << "= textureLod( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ", "
<< texLodStr.c_str() << " )" << lookupSwizzle.c_str() << ";"
<< Endl;
@@ -1598,7 +1618,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
case ImageMapTypes::LightmapShadow:
case ImageMapTypes::Specular:
case ImageMapTypes::Opacity:
- fragmentShader.Append("\tglobal_opacity *= texture_color.a;");
+ fragmentShader.Append(" global_opacity *= texture_color.a;");
break;
default:
break;
@@ -1606,9 +1626,9 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
fragmentShader.AddUniform("alphaOpRef", "vec2");
- fragmentShader.Append("\tif (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
- "\t\tdiscard;");
- fragmentShader.Append("\tfragOutput = vec4(0.0);");
+ fragmentShader.Append(" if (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
+ " discard;");
+ fragmentShader.Append(" fragOutput = vec4(0.0);");
fragmentShader.Append("}");
vertexShader.Append("}");
@@ -1663,16 +1683,16 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
vertexShader.AddOutgoing("world_pos", "vec4");
vertexShader.Append("void main() {");
- vertexShader.Append("\tvec3 uTransform;");
- vertexShader.Append("\tvec3 vTransform;");
- vertexShader.Append("\tworld_pos = model_matrix * vec4( attr_pos, 1.0 );");
- vertexShader.Append("\tworld_pos /= world_pos.w;");
- vertexShader.Append("\tgl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
- vertexShader.Append("\traw_pos = vec4( attr_pos, 1.0 );");
+ vertexShader.Append(" vec3 uTransform;");
+ vertexShader.Append(" vec3 vTransform;");
+ vertexShader.Append(" world_pos = model_matrix * vec4( attr_pos, 1.0 );");
+ vertexShader.Append(" world_pos /= world_pos.w;");
+ vertexShader.Append(" gl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
+ vertexShader.Append(" raw_pos = vec4( attr_pos, 1.0 );");
- fragmentShader << "\tfloat global_opacity = object_opacity;" << Endl;
+ fragmentShader << " float global_opacity = object_opacity;" << Endl;
- fragmentShader.Append("\tvec4 texture_color;");
+ fragmentShader.Append(" vec4 texture_color;");
QT3DSU32 idx = 0;
for (SRenderableImage *image = m_FirstImage; image; image = image->m_NextImage, ++idx) {
// Various maps are handled on different locations
@@ -1697,11 +1717,11 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
lookupSwizzle);
if (texLodStr.empty()) {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << " = texture2D( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << " = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ")"
<< lookupSwizzle.c_str() << ";" << Endl;
} else {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << "= textureLod( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << "= textureLod( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ", "
<< texLodStr.c_str() << " )" << lookupSwizzle.c_str() << ";"
<< Endl;
@@ -1712,7 +1732,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
case ImageMapTypes::LightmapShadow:
case ImageMapTypes::Specular:
case ImageMapTypes::Opacity:
- fragmentShader.Append("\tglobal_opacity *= texture_color.a;");
+ fragmentShader.Append(" global_opacity *= texture_color.a;");
break;
default:
break;
@@ -1721,14 +1741,14 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
fragmentShader.AddUniform("camera_position", "vec3");
fragmentShader.AddUniform("camera_properties", "vec2");
- fragmentShader.Append("\tvec3 camPos = vec3(camera_position.x, camera_position.y, "
+ fragmentShader.Append(" vec3 camPos = vec3(camera_position.x, camera_position.y, "
"-camera_position.z);");
- fragmentShader.Append("\tfloat dist = length(world_pos.xyz - camPos);");
- fragmentShader.Append("\tdist = max((dist - 1.0) / (camera_properties.y - 1.0), 0.0);");
+ fragmentShader.Append(" float dist = length(world_pos.xyz - camPos);");
+ fragmentShader.Append(" dist = max((dist - 1.0) / (camera_properties.y - 1.0), 0.0);");
fragmentShader.AddUniform("alphaOpRef", "vec2");
- fragmentShader.Append("\tif (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
- "\t\tdist = 1.0;");
- fragmentShader.Append("\tfragOutput = vec4(dist);");
+ fragmentShader.Append(" if (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
+ " dist = 1.0;");
+ fragmentShader.Append(" fragOutput = vec4(dist);");
fragmentShader.Append("}");
vertexShader.Append("}");
@@ -1781,14 +1801,14 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
vertexShader.AddOutgoing("outDepth", "vec3");
vertexShader.Append("void main() {");
- vertexShader.Append("\tvec3 uTransform;");
- vertexShader.Append("\tvec3 vTransform;");
- vertexShader.Append("\tgl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
- vertexShader.Append("\toutDepth.x = gl_Position.z / gl_Position.w;");
+ vertexShader.Append(" vec3 uTransform;");
+ vertexShader.Append(" vec3 vTransform;");
+ vertexShader.Append(" gl_Position = model_view_projection * vec4( attr_pos, 1.0 );");
+ vertexShader.Append(" outDepth.x = gl_Position.z / gl_Position.w;");
- fragmentShader << "\tfloat global_opacity = object_opacity;" << Endl;
+ fragmentShader << " float global_opacity = object_opacity;" << Endl;
- fragmentShader.Append("\tvec4 texture_color;");
+ fragmentShader.Append(" vec4 texture_color;");
QT3DSU32 idx = 0;
for (SRenderableImage *image = m_FirstImage; image; image = image->m_NextImage, ++idx) {
// Various maps are handled on different locations
@@ -1813,11 +1833,11 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
lookupSwizzle);
if (texLodStr.empty()) {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << " = texture2D( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << " = texture2D( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ")"
<< lookupSwizzle.c_str() << ";" << Endl;
} else {
- fragmentShader << "\ttexture_color" << texSwizzle.c_str() << "= textureLod( "
+ fragmentShader << " texture_color" << texSwizzle.c_str() << "= textureLod( "
<< m_ImageSampler << ", " << m_ImageFragCoords << ", "
<< texLodStr.c_str() << " )" << lookupSwizzle.c_str() << ";"
<< Endl;
@@ -1828,7 +1848,7 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
case ImageMapTypes::LightmapShadow:
case ImageMapTypes::Specular:
case ImageMapTypes::Opacity:
- fragmentShader.Append("\tglobal_opacity *= texture_color.a;");
+ fragmentShader.Append(" global_opacity *= texture_color.a;");
break;
default:
break;
@@ -1836,10 +1856,10 @@ struct SShaderGenerator : public IDefaultMaterialShaderGenerator
}
fragmentShader.AddUniform("alphaOpRef", "vec2");
- fragmentShader.Append("\tfloat depth = (outDepth.x + 1.0) * 0.5;");
- fragmentShader.Append("\tif (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
- "\t\tdepth = 1.0;");
- fragmentShader.Append("\tfragOutput = vec4(depth);");
+ fragmentShader.Append(" float depth = (outDepth.x + 1.0) * 0.5;");
+ fragmentShader.Append(" if (dot(vec2(global_opacity, 1.0), alphaOpRef) <= 0.0)\n"
+ " depth = 1.0;");
+ fragmentShader.Append(" fragOutput = vec4(depth);");
fragmentShader.Append("}");
vertexShader.Append("}");