forked from TimLee9024/MCglTF
-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
As I mentioned at here, displayed colors(or textures) of entities become white if the frustum of client catches a gltf model entity. See below:
I had researched about this issue little bit and found that RenderedModel#COLOR_MAP_INDEX,RenderedModel#NORMAL_MAP_INDEX,RenderedModel#SPECULAR_MAP_INDEX and RenderedModel#mc_midTexcoord, RenderedModel#at_tangent mismatches with Iris Shaders.
For example, at RenderedGltfModel
static {
if(FabricLoader.getInstance().isModLoaded("iris")) {
mc_midTexCoord = 7; // but iris accepts only 12!
at_tangent = 8; // but iris accepts only 13!As IrisRenderingHook#setupAndRender utilizes variables above, I suspect this function has key of the issue.
if(normals != -1) {
RenderedGltfModel.NORMAL_MAP_INDEX = GL13.GL_TEXTURE2 + GL20.glGetUniformi(currentProgram, normals);
if(specular != -1) {
RenderedGltfModel.SPECULAR_MAP_INDEX = GL13.GL_TEXTURE1 + GL20.glGetUniformi(currentProgram, specular);
GL13.glActiveTexture(RenderedGltfModel.NORMAL_MAP_INDEX);
int currentTextureNormal = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
GL13.glActiveTexture(RenderedGltfModel.SPECULAR_MAP_INDEX);
int currentTextureSpecular = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
currentTextureColor = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
commands.forEach(Runnable::run);
GL13.glActiveTexture(RenderedGltfModel.NORMAL_MAP_INDEX);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, currentTextureNormal);
GL13.glActiveTexture(RenderedGltfModel.SPECULAR_MAP_INDEX);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, currentTextureSpecular);
}
else {
RenderedGltfModel.SPECULAR_MAP_INDEX = -1;
GL13.glActiveTexture(RenderedGltfModel.NORMAL_MAP_INDEX);
int currentTextureNormal = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
currentTextureColor = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
commands.forEach(Runnable::run);
GL13.glActiveTexture(RenderedGltfModel.NORMAL_MAP_INDEX);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, currentTextureNormal);
}
}
else {
RenderedGltfModel.NORMAL_MAP_INDEX = -1;
if(specular != -1) {
RenderedGltfModel.SPECULAR_MAP_INDEX = GL13.GL_TEXTURE1 + GL20.glGetUniformi(currentProgram, specular);
GL13.glActiveTexture(RenderedGltfModel.SPECULAR_MAP_INDEX);
int currentTextureSpecular = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
currentTextureColor = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
commands.forEach(Runnable::run);
GL13.glActiveTexture(RenderedGltfModel.SPECULAR_MAP_INDEX);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, currentTextureSpecular);
}
else {
RenderedGltfModel.SPECULAR_MAP_INDEX = -1;
GL13.glActiveTexture(GL13.GL_TEXTURE0);
currentTextureColor = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
commands.forEach(Runnable::run);
}
}
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, currentTextureColor);
}Sadly I couldn't have resolved the issue. I hope someone to solve it.
Protoxy22
Metadata
Metadata
Assignees
Labels
No labels
