jPCT - a 3d engine for Java > Support

Texture Splatting with 4 textures but using 5 sampler2D uniform variables

(1/2) > >>

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