gltfio: fix occlusion strength

Fixes #6106
This commit is contained in:
Philip Rideout
2022-09-28 17:02:28 -07:00
parent f151f56a2e
commit de7bca7ef8
6 changed files with 11 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ A new header is inserted each time a *tag* is created.
- engine: LiSPSM is now a user settable option
- Java: Fix TransformManager.getChildren()
- Metal: newer devices are no longer limited to 16 samplers per Material.
- gltfio: fix interpretation of occlusion strength
## v1.27.2

View File

@@ -163,8 +163,8 @@ fragment {
if (materialParams.aoIndex > -1) {
highp float2 uv = uvs[materialParams.aoIndex];
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
material.ambientOcclusion = texture(materialParams_occlusionMap, uv).r *
materialParams.aoStrength;
float occlusion = texture(materialParams_occlusionMap, uv).r;
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
}
if (materialParams.emissiveIndex > -1) {
highp float2 uv = uvs[materialParams.emissiveIndex];

View File

@@ -127,8 +127,8 @@ fragment {
if (materialParams.aoIndex > -1) {
highp float2 uv = uvs[materialParams.aoIndex];
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
material.ambientOcclusion = texture(materialParams_occlusionMap, uv).r *
materialParams.aoStrength;
float occlusion = texture(materialParams_occlusionMap, uv).r;
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
}
if (materialParams.emissiveIndex > -1) {
highp float2 uv = uvs[materialParams.emissiveIndex];

View File

@@ -117,8 +117,8 @@ fragment {
if (materialParams.aoIndex > -1) {
highp float2 uv = uvs[materialParams.aoIndex];
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
material.ambientOcclusion = texture(materialParams_occlusionMap, uv).r *
materialParams.aoStrength;
float occlusion = texture(materialParams_occlusionMap, uv).r;
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
}
if (materialParams.emissiveIndex > -1) {
highp float2 uv = uvs[materialParams.emissiveIndex];

View File

@@ -133,8 +133,8 @@ fragment {
if (materialParams.aoIndex > -1) {
highp float2 uv = uvs[materialParams.aoIndex];
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
material.ambientOcclusion = texture(materialParams_occlusionMap, uv).r *
materialParams.aoStrength;
float occlusion = texture(materialParams_occlusionMap, uv).r;
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
}
if (materialParams.emissiveIndex > -1) {
highp float2 uv = uvs[materialParams.emissiveIndex];

View File

@@ -194,8 +194,8 @@ std::string shaderFromKey(const MaterialKey& config) {
shader += "aoUV = (vec3(aoUV, 1.0) * materialParams.occlusionUvMatrix).xy;\n";
}
shader += R"SHADER(
material.ambientOcclusion = texture(materialParams_occlusionMap, aoUV).r *
materialParams.aoStrength;
float occlusion = texture(materialParams_occlusionMap, aoUV).r;
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
)SHADER";
}
if (config.hasEmissiveTexture) {