|
@@ -7,6 +7,10 @@
|
|
#import "Common/ShaderLib/TriPlanarUtils.glsllib"
|
|
#import "Common/ShaderLib/TriPlanarUtils.glsllib"
|
|
|
|
|
|
#ifdef ENABLE_PBRTerrainUtils_readPBRTerrainLayers
|
|
#ifdef ENABLE_PBRTerrainUtils_readPBRTerrainLayers
|
|
|
|
+
|
|
|
|
+ #ifndef NORMAL_TYPE
|
|
|
|
+ #define NORMAL_TYPE 1.0
|
|
|
|
+ #endif
|
|
|
|
|
|
#ifdef USE_TEXTURE_ARRAYS
|
|
#ifdef USE_TEXTURE_ARRAYS
|
|
//texture arrays:
|
|
//texture arrays:
|
|
@@ -23,6 +27,7 @@
|
|
uniform float m_AlbedoMap_$i_scale;
|
|
uniform float m_AlbedoMap_$i_scale;
|
|
uniform vec4 m_EmissiveColor_$i;
|
|
uniform vec4 m_EmissiveColor_$i;
|
|
|
|
|
|
|
|
+
|
|
#ifdef USE_TEXTURE_ARRAYS
|
|
#ifdef USE_TEXTURE_ARRAYS
|
|
uniform int m_AlbedoMap_$i;
|
|
uniform int m_AlbedoMap_$i;
|
|
#ifdef NORMALMAP_$i
|
|
#ifdef NORMALMAP_$i
|
|
@@ -139,6 +144,7 @@
|
|
// normal:
|
|
// normal:
|
|
void PBRTerrainUtils_readNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
|
|
void PBRTerrainUtils_readNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
|
|
vec4 packedNormalParallaxVec = texture2D(tex, texCoord * scale);
|
|
vec4 packedNormalParallaxVec = texture2D(tex, texCoord * scale);
|
|
|
|
+ packedNormalParallaxVec.xyz *= normalize(vec3(2.0, NORMAL_TYPE * 2.0, 2.0) - vec3(1.0, NORMAL_TYPE * 1.0, 1.0));
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
}
|
|
}
|
|
// metallicRoughnessAoEi:
|
|
// metallicRoughnessAoEi:
|
|
@@ -157,6 +163,7 @@
|
|
// Triplanar normal:
|
|
// Triplanar normal:
|
|
void PBRTerrainUtils_readTriPlanarNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
|
|
void PBRTerrainUtils_readTriPlanarNormalTexture(in sampler2D tex, in float scale, inout PBRTerrainTextureLayer layer){
|
|
vec4 packedNormalParallaxVec = getTriPlanarNormalBlend(lPosition, tex, scale);
|
|
vec4 packedNormalParallaxVec = getTriPlanarNormalBlend(lPosition, tex, scale);
|
|
|
|
+ packedNormalParallaxVec.xyz *= normalize(vec3(2.0, NORMAL_TYPE * 2.0, 2.0) - vec3(1.0, NORMAL_TYPE * 1.0, 1.0));
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
}
|
|
}
|
|
// TriPlanar metallicRoughnessAoEi:
|
|
// TriPlanar metallicRoughnessAoEi:
|
|
@@ -175,6 +182,7 @@
|
|
// Normal TextureArray:
|
|
// Normal TextureArray:
|
|
void PBRTerrainUtils_readNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
|
|
void PBRTerrainUtils_readNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
|
|
vec4 packedNormalParallaxVec = texture2DArray(texArray, vec3(texCoord * scale, indexInTexArray));
|
|
vec4 packedNormalParallaxVec = texture2DArray(texArray, vec3(texCoord * scale, indexInTexArray));
|
|
|
|
+ packedNormalParallaxVec.xyz *= normalize(vec3(2.0, NORMAL_TYPE * 2.0, 2.0) - vec3(1.0, NORMAL_TYPE * 1.0, 1.0));
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
}
|
|
}
|
|
// metallicRoughnessAoEi TextureArray:
|
|
// metallicRoughnessAoEi TextureArray:
|
|
@@ -193,6 +201,7 @@
|
|
// Triplanar normal TextureArray:
|
|
// Triplanar normal TextureArray:
|
|
void PBRTerrainUtils_readTriPlanarNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
|
|
void PBRTerrainUtils_readTriPlanarNormalTexArray(in int indexInTexArray, in float scale, in sampler2DArray texArray, inout PBRTerrainTextureLayer layer){
|
|
vec4 packedNormalParallaxVec = getTriPlanarNormalBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
|
|
vec4 packedNormalParallaxVec = getTriPlanarNormalBlendFromTexArray(lPosition, indexInTexArray, scale, texArray);
|
|
|
|
+ packedNormalParallaxVec.xyz *= normalize(vec3(2.0, NORMAL_TYPE * 2.0, 2.0) - vec3(1.0, NORMAL_TYPE * 1.0, 1.0));
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
updateLayerFromPackedNormalParallaxVec(packedNormalParallaxVec, layer);
|
|
}
|
|
}
|
|
// TriPlanar metallicRoughnessAoEi TextureArray:
|
|
// TriPlanar metallicRoughnessAoEi TextureArray:
|