jPCT - a 3d engine for Java > Support
Texture Splatting with 4 textures but using 5 sampler2D uniform variables
Lima:
Hello!
I'm trying to reproduce something I did using blender nodes. I have 5 textures, but one of them is a map. I use its RGBA channels as the factors to mix the textures with black and then, finally add them up.
This is my Fragment Shader:
--- Code: ---varying vec2 texCoord;
uniform sampler2D textureUnit0;
uniform sampler2D textureUnit1;
uniform sampler2D textureUnit2;
uniform sampler2D textureUnit3;
uniform sampler2D textureUnit4;
const vec3 BLACK = vec3(0.0,0.0,0.0);
const vec3 YELLOW = vec3(0.5,0.5,0.0);
void main (){
vec2 newTexCoords = texCoord * 20.0;
vec4 map = texture2D(textureUnit0, texCoord);
vec4 asphalt = texture2D(textureUnit1, newTexCoords);
vec4 grass = texture2D(textureUnit2, newTexCoords);
vec4 ground = texture2D(textureUnit3, newTexCoords);
vec4 wall = texture2D(textureUnit4, newTexCoords);
vec3 a = mix(BLACK, asphalt.rgb, map.r);
vec3 b = mix(BLACK, grass.rgb, map.g);
vec3 c = mix(BLACK, ground.rgb, map.b);
vec3 d = mix(BLACK, wall.rgb, map.a);
vec3 result = a+b+c+d;
gl_FragColor = vec4(result,1.0);
}
--- End code ---
This is the result:
https://drive.google.com/file/d/1DHwsnlmv_Htm43qofuhufOIMA8vHlSWv/view?usp=drive_link
Just by changing the line:
--- Code: ---vec3 result = a+b+c+d;
--- End code ---
to
--- Code: ---vec3 result = a+b+c+mix(BLACK, YELLOW, map.a);
--- End code ---
I almost got what I want:
https://drive.google.com/file/d/1Bqms-MgMFlo6VSv2Ualm0A6MSS4Qdshn/view?usp=drive_link
But in this case I'm not really using my 4 textures, just 3 and a color created inside the shader.
The problem seems to be in textureUnit4 I think it's not being passed to the shader and thus, it results in a black color, which makes no difference in the final sum. How many textures can I add to a TextureInfo object? If the maximum is 4, then, that must be the reason why my fifth sampler2D uniform is ignored.
p.s. I even wrote this before initalizing my FrameBuffer
--- Code: ---Config.maxTextureLayers = 10;
--- End code ---
but no success, unfortunately.
Lima:
I'm very sorry! The information was clear in the docs. I really don't know why I didn't understand it when I read it at first. TextureInfo objects can only receive 4 images. It just ignores the rest if you add more. :'(
EgonOlsen:
Is this using jPCT or jPCT-AE?
Lima:
I was using JPCT, but just for quick tests. I intend to use jpct-ae in the end.
AeroShark333:
--- Quote from: Lima on July 19, 2023, 02:14:49 am ---I'm very sorry! The information was clear in the docs. I really don't know why I didn't understand it when I read it at first. TextureInfo objects can only receive 4 images. It just ignores the rest if you add more. :'(
--- End quote ---
I think jPCT-AE supports more than 4 texture units (up to 8 max.) due to the suggestion I made last year or two years ago. ;)
I'm not sure about jPCT (PC) version, however... Might still be limited to 4 there
EDIT: https://www.jpct.net/forum2/index.php/topic,5153.0.html
Navigation
[0] Message Index
[#] Next page
Go to full version