Culling issue concernant les entités semi-transparents (alpha entre 0 et 1)



  • Bonjour/bonsoir chère communauté de MFF, je m'adresse à vous aujourd'hui afin d'avoir votre avis, une idée, une piste ou voire même une solution concernant ce screenshot. Ce souci m'handicape quelque soit la version (testé jusqu'en 1.12.2, je doute que les dernières le corrige, hmm ?), puisque j'ai moi même une entité possèdant des shapes semi-transparentes, et qui font disparaître toute entité se baladant derrière, une idée ? Personne du forum anglophone n'a de solution, ou plutôt que les meilleurs ne se sont pas encore donnés la peine de répondre :x
    Bref merci par-avance !



  • Pour info, en 1.11.2, je n'ai pas le problème avec les entités, mais avec les blocks :
    [EDIT] : ça fait la même chose pour les tile entities


  • Moddeurs confirmés Rédacteurs

    Ourten a suggéré de dessiner pendant la render pass 1



  • Mouais bon je vais réessayer, j'avais déjà testé un truc dans le genre, rien de bien changeant. Merci Ourten de ta réponse !
    EDIT:

    
        @Override
        protected int shouldRenderPass(EntityLivingBase par1EntitySlime, int par2, float par3)
        {
            if(par2 == 1)
            {
                glEnable(GL_NORMALIZE);
                glEnable(GL_BLEND);
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    
                glPushMatrix();
                    glTranslated(-0.5F, 3.0F, -4.5F);
                    glScalef(0.25F, 0.25F, 0.25F);
                    glRotatef(180, 1, 0, 0);
                    this.model.renderGroup("Fenster_front");
                    this.model.renderGroup("aFenster_interior");
                glPopMatrix();
    
                glDisable(GL_BLEND);
    
                return -1;
            }
            return -1;
        }
    
    

    En effet, rien de merveilleux, le résultat est le même, qu'aurais-je mal fait par-hasard ?

    EEDIT: Toujours pas, j'ai ceci désormais dans Model#render après avoir retiré le shouldRenderPass du Render:

    
            glPushMatrix();
                glEnable(GL_BLEND);
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    //            glEnable(GL_DEPTH_TEST);
    //            glAlphaFunc(GL_GREATER, 0.1f);
    //            glDepthMask(true);
    
                glTranslated(-0.5F, 3.0F, -4.5F);
    //            glScalef(0.001F, 0.001F, 0.001F);
                glScalef(0.25F, 0.25F, 0.25F);
                glRotatef(180, 1, 0, 0);
                if(MinecraftForgeClient.getRenderPass() == 1)
                {
                    this.model.renderGroup("Fenster_front");
                    this.model.renderGroup("aFenster_interior");
                }
                else
                    this.model.renderGroup("aWagenkasten");
    
    //            this.model.regenerateNormals();
    //            this.model.render();
    
    //            glDepthMask(false);
    //            glDisable(GL_DEPTH_TEST);
                glDisable(GL_BLEND);
            glPopMatrix();
    
    

    EEEdit: Okay, je pense avoir enfin compris avec le shouldRenderInPass à add dans la classe de l'entité, j'essaierai demain.


Log in to reply