Рендер изображений на небе.

1,057
50
234
Добрый день.

Как отрендерить изображение по кругу?

Допустим у меня есть изображение Млечного Пути. Мне его надо отрендерить на 360 градусов.
Как "завернуть" изображение?
 
1,087
2
Хм. Тебе надо в определённом биоме или определённом измерении?
[merge_posts_bbcode]Добавлено: 29.11.2015 11:54:18[/merge_posts_bbcode]

Код:
public class RenderSkyFirstWorld extends IRenderHandler{
    
    private static final ResourceLocation locationMoonPhasesPng = new ResourceLocation("textures/environment/moon_phases.png"); //Луна в небе. Необязательно.
    private static final ResourceLocation locationSunPng = new ResourceLocation("textures/environment/sun.png"); //Солнце в небе. Необязательно.
    private static final ResourceLocation locationEndSkyPng = new ResourceLocation("textures/environment/end_sky.png"); //Путь к изображению неба.
    
    public RenderSkyFirstWorld()
    {
        
    }

    @Override
    public void render(float partialTicks, WorldClient world, Minecraft mc) {
        int colorDay = 0x213141;
         GL11.glDisable(GL11.GL_FOG);
         GL11.glDisable(GL11.GL_ALPHA_TEST);
         GL11.glEnable(GL11.GL_BLEND);
         OpenGlHelper.glBlendFunc(770, 771, 1, 0);
         RenderHelper.disableStandardItemLighting();
         GL11.glDepthMask(false);
         Minecraft.getMinecraft().renderEngine.bindTexture(locationEndSkyPng);
         Tessellator tessellator = Tessellator.instance;

         for (int i = 0; i < 6; ++i)
         {
             GL11.glPushMatrix();

             if (i == 1)
             {
                 GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
             }

             if (i == 2)
             {
                 GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
             }

             if (i == 3)
             {
                 GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
             }

             if (i == 4)
             {
                 GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
             }

             if (i == 5)
             {
                 GL11.glRotatef(-90.0F, 0.0F, 0.0F, 1.0F);
             }

             tessellator.startDrawingQuads();
             tessellator.setColorOpaque_I(colorDay);
             tessellator.addVertexWithUV(-100.0D, -100.0D, -100.0D, 0.0D, 0.0D);
             tessellator.addVertexWithUV(-100.0D, -100.0D, 100.0D, 0.0D, 16.0D);
             tessellator.addVertexWithUV(100.0D, -100.0D, 100.0D, 16.0D, 16.0D);
             tessellator.addVertexWithUV(100.0D, -100.0D, -100.0D, 16.0D, 0.0D);
             tessellator.draw();
             GL11.glPopMatrix();
         }
         GL11.glDepthMask(true);
         GL11.glEnable(GL11.GL_TEXTURE_2D);
         GL11.glEnable(GL11.GL_ALPHA_TEST);
         
         GL11.glDisable(GL11.GL_TEXTURE_2D);
         Vec3 vec3 = world.getSkyColor(mc.renderViewEntity, partialTicks);
         float f1 = (float)vec3.xCoord;
         float f2 = (float)vec3.yCoord;
         float f3 = (float)vec3.zCoord;
         float f6;

         if (mc.gameSettings.anaglyph)
         {
             float f4 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
             float f5 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
             f6 = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
             f1 = f4;
             f2 = f5;
             f3 = f6;
         }

         GL11.glColor3f(f1, f2, f3);
         Tessellator tessellator1 = Tessellator.instance;
         GL11.glDepthMask(false);
         GL11.glEnable(GL11.GL_FOG);
         GL11.glColor3f(f1, f2, f3);
         //GL11.glCallList(this.glSkyList);
         GL11.glDisable(GL11.GL_FOG);
         GL11.glDisable(GL11.GL_ALPHA_TEST);
         GL11.glEnable(GL11.GL_BLEND);
         OpenGlHelper.glBlendFunc(770, 771, 1, 0);
         RenderHelper.disableStandardItemLighting();
         float[] afloat = world.provider.calcSunriseSunsetColors(world.getCelestialAngle(partialTicks), partialTicks);
         float f7;
         float f8;
         float f9;
         float f10;

         if (afloat != null)
         {
             GL11.glDisable(GL11.GL_TEXTURE_2D);
             GL11.glShadeModel(GL11.GL_SMOOTH);
             GL11.glPushMatrix();
             GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
             GL11.glRotatef(MathHelper.sin(world.getCelestialAngleRadians(partialTicks)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F);
             GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
             f6 = afloat[0];
             f7 = afloat[1];
             f8 = afloat[2];
             float f11;

             if (mc.gameSettings.anaglyph)
             {
                 f9 = (f6 * 30.0F + f7 * 59.0F + f8 * 11.0F) / 100.0F;
                 f10 = (f6 * 30.0F + f7 * 70.0F) / 100.0F;
                 f11 = (f6 * 30.0F + f8 * 70.0F) / 100.0F;
                 f6 = f9;
                 f7 = f10;
                 f8 = f11;
             }

             tessellator1.startDrawing(6);
             tessellator1.setColorRGBA_F(f6, f7, f8, afloat[3]);
             tessellator1.addVertex(0.0D, 100.0D, 0.0D);
             byte b0 = 16;
             tessellator1.setColorRGBA_F(afloat[0], afloat[1], afloat[2], 0.0F);

             for (int j = 0; j <= b0; ++j)
             {
                 f11 = (float)j * (float)Math.PI * 2.0F / (float)b0;
                 float f12 = MathHelper.sin(f11);
                 float f13 = MathHelper.cos(f11);
                 tessellator1.addVertex((double)(f12 * 120.0F), (double)(f13 * 120.0F), (double)(-f13 * 40.0F * afloat[3]));
             }

             tessellator1.draw();
             GL11.glPopMatrix();
             GL11.glShadeModel(GL11.GL_FLAT);
         }

         GL11.glEnable(GL11.GL_TEXTURE_2D);
         OpenGlHelper.glBlendFunc(770, 1, 1, 0);
         GL11.glPushMatrix();
         f6 = 1.0F - world.getRainStrength(partialTicks);
         f7 = 0.0F;
         f8 = 0.0F;
         f9 = 0.0F;
         GL11.glColor4f(1.0F, 1.0F, 1.0F, f6);
         GL11.glTranslatef(f7, f8, f9);
         Random sunRnd = new Random(54263524L);
         boolean b = ECUtils.isEventActive("ec3.event.sunArray");
         int mod = 1;
         if(b) mod = 3;
         if(!ECUtils.isEventActive("ec3.event.darkness"))
             for(int i = 0; i < 10*mod; ++i)
             {
                 GL11.glPushMatrix();
                 GL11.glRotatef(-90.0F+i*30F, 0.0F+i*i, i-1.0F/i/i, 1.0F*i*i);
                 GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F * i, 1.0F, 0.0F, 0.0F);
                 f10 = sunRnd.nextFloat()*20;
                 mc.renderEngine.bindTexture(locationSunPng);
                 for(int x = 0; x < i+5; ++x)
                 {
                     tessellator1.startDrawingQuads();
                     tessellator1.setColorOpaque_I(sunRnd.nextInt());
                     tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)(-f10), 0.0D, 0.0D);
                     tessellator1.addVertexWithUV((double)f10, 100.0D, (double)(-f10), 1.0D, 0.0D);
                     tessellator1.addVertexWithUV((double)f10, 100.0D, (double)f10, 1.0D, 1.0D);
                     tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)f10, 0.0D, 1.0D);
                     tessellator1.draw();
                 }
                 GL11.glPopMatrix();
             }
             Random moonRnd = new Random(23564637563453L);
             if(!ECUtils.isEventActive("ec3.event.darkness"))
                 for(int i = 0; i < 6; ++i)
                 {
                     GL11.glPushMatrix();
                     GL11.glRotatef(-90.0F+i*30F, 0.0F+i*i, i-1.0F/i/i, 1.0F*i*i);
                     GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F * i, 1.0F, 0.0F, 0.0F);
                     f10 = moonRnd.nextFloat()*30F;
                     mc.renderEngine.bindTexture(locationMoonPhasesPng);            
                     for(int x = 0; x < 2*i; ++x)
                     {
                         int k = moonRnd.nextInt(8);
                         int l = k % 4;
                         int i1 = k / 4 % 2;
                         float f14 = (float)(l + 0) / 4.0F;
                         float f15 = (float)(i1 + 0) / 2.0F;
                         float f16 = (float)(l + 1) / 4.0F;
                         float f17 = (float)(i1 + 1) / 2.0F;
                         tessellator1.startDrawingQuads();
                         tessellator1.setColorRGBA(moonRnd.nextInt(), moonRnd.nextInt(), moonRnd.nextInt(), (int)(moonRnd.nextFloat()*255F));
                         tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)f10, (double)f16, (double)f17);
                         tessellator1.addVertexWithUV((double)f10, -100.0D, (double)f10, (double)f14, (double)f17);
                         tessellator1.addVertexWithUV((double)f10, -100.0D, (double)(-f10), (double)f14, (double)f15);
                         tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)(-f10), (double)f16, (double)f15);
                         tessellator1.draw();
                     }
                     GL11.glPopMatrix();
                 }
         GL11.glDisable(GL11.GL_TEXTURE_2D);
         float f18 = world.getStarBrightness(partialTicks) * f6;

         if (f18 > 0.0F)
         {
             GL11.glColor4f(f18, f18, f18, f18);
            // GL11.glCallList(this.starGLCallList);
         }

         GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
         GL11.glDisable(GL11.GL_BLEND);
         GL11.glEnable(GL11.GL_ALPHA_TEST);
         GL11.glEnable(GL11.GL_FOG);
         GL11.glPopMatrix();
         GL11.glDisable(GL11.GL_TEXTURE_2D);
         GL11.glColor3f(0.0F, 0.0F, 0.0F);
         double d0 = mc.thePlayer.getPosition(partialTicks).yCoord - world.getHorizon();

         if (d0 < 0.0D)
         {
             GL11.glPushMatrix();
             GL11.glTranslatef(0.0F, 12.0F, 0.0F);
             //GL11.glCallList(this.glSkyList2);
             GL11.glPopMatrix();
             f8 = 1.0F;
             f9 = -((float)(d0 + 65.0D));
             f10 = -f8;
             tessellator1.startDrawingQuads();
             tessellator1.setColorRGBA_I(0, 255);
             tessellator1.addVertex((double)(-f8), (double)f9, (double)f8);
             tessellator1.addVertex((double)f8, (double)f9, (double)f8);
             tessellator1.addVertex((double)f8, (double)f10, (double)f8);
             tessellator1.addVertex((double)(-f8), (double)f10, (double)f8);
             tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8));
             tessellator1.addVertex((double)f8, (double)f10, (double)(-f8));
             tessellator1.addVertex((double)f8, (double)f9, (double)(-f8));
             tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8));
             tessellator1.addVertex((double)f8, (double)f10, (double)(-f8));
             tessellator1.addVertex((double)f8, (double)f10, (double)f8);
             tessellator1.addVertex((double)f8, (double)f9, (double)f8);
             tessellator1.addVertex((double)f8, (double)f9, (double)(-f8));
             tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8));
             tessellator1.addVertex((double)(-f8), (double)f9, (double)f8);
             tessellator1.addVertex((double)(-f8), (double)f10, (double)f8);
             tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8));
             tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8));
             tessellator1.addVertex((double)(-f8), (double)f10, (double)f8);
             tessellator1.addVertex((double)f8, (double)f10, (double)f8);
             tessellator1.addVertex((double)f8, (double)f10, (double)(-f8));
             tessellator1.draw();
         }

         if (world.provider.isSkyColored())
         {
             GL11.glColor3f(f1 * 0.2F + 0.04F, f2 * 0.2F + 0.04F, f3 * 0.6F + 0.1F);
         }
         else
         {
             GL11.glColor3f(f1, f2, f3);
         }

         GL11.glPushMatrix();
         GL11.glTranslatef(0.0F, -((float)(d0 - 16.0D)), 0.0F);
         //GL11.glCallList(this.glSkyList2);
         GL11.glPopMatrix();
         GL11.glEnable(GL11.GL_TEXTURE_2D);
         GL11.glDepthMask(true);
     }

}
Это пример того как можно сделать небо из ~5 лун и ~4 солнца.
 
1,087
2
BlesseNtumble написал(а):
В определенном дименсе.
Тогда мой вариант подойдёт.
[merge_posts_bbcode]Добавлено: 29.11.2015 11:57:25[/merge_posts_bbcode]

В прокси клиентском нужно вписать это:
Код:
    @SideOnly(Side.CLIENT)
    private static IRenderHandler skyedRenderer = new RenderSkyFirstWorld();

    public Object getRenderer(int index)
    {
        if(index == 0)
            return skyedRenderer;
        //else
        //    return cloudedRenderer;
    }
И будет нормально.

[merge_posts_bbcode]Добавлено: 29.11.2015 11:59:58[/merge_posts_bbcode]

Код:
    @SideOnly(Side.CLIENT)
    public IRenderHandler getSkyRenderer()
    {
        return (IRenderHandler) MAIN.proxy.getRenderer(0);
    }
    
    @SideOnly(Side.CLIENT)
    public IRenderHandler getCloudRenderer()
    {
        return (IRenderHandler) MAIN.proxy.getRenderer(1);
    }
Привязка неба в WorldProvider

[merge_posts_bbcode]Добавлено: 29.11.2015 12:01:29[/merge_posts_bbcode]

Думаю ты поймёшь что да как. Кое какие частички кода лишние

[merge_posts_bbcode]Добавлено: 29.11.2015 12:03:39[/merge_posts_bbcode]

Главное - удали то, что тебе не нужно и замени на то, что тебе нужно, а то будут вопросы "А чё у меня столько солнц и лун?", "А чё всё не так".
 
1,057
50
234
FanKar написал(а):
BlesseNtumble написал(а):
В определенном дименсе.
Тогда мой вариант подойдёт.
[merge_posts_bbcode]Добавлено: 29.11.2015 11:57:25[/merge_posts_bbcode]

В прокси клиентском нужно вписать это:
Код:
    @SideOnly(Side.CLIENT)
    private static IRenderHandler skyedRenderer = new RenderSkyFirstWorld();

    public Object getRenderer(int index)
    {
        if(index == 0)
            return skyedRenderer;
        //else
        //    return cloudedRenderer;
    }
И будет нормально.
Это я все знаю.
vzvev985fh2m.png


Я лишь не могу понять, как лучше всего отрендерить изображение на 360 градусов. Т.е по всему X.
[merge_posts_bbcode]Добавлено: 29.11.2015 18:12:24[/merge_posts_bbcode]

[youtube]K61Typ5zmHY[/youtube]
Отрендерить как на видео.
 
1,087
2
А... Да вроде в моём способе есть поворот. Это зависит от того каак ты сделал изображение неба. А потом идёт анимация. Или я тебя не понимаю.
 
1,057
50
234
Ну изображения я рендерю вот таким способом:​
Код:
public class SkyProviderACentauriBb extends IRenderHandler
{
    private static final ResourceLocation sunTexture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/gui/celestialbodies/aCentauri/CentauriA.png");
    private static final ResourceLocation sun1Texture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/gui/celestialbodies/aCentauri/CentauriB.png");
    private static final ResourceLocation sun2Texture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/gui/celestialbodies/aCentauri/Proxima.png");
    private static final ResourceLocation lmcTexture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/environment/background/LMC.png");
    private static final ResourceLocation smcTexture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/environment/background/SMC.png");
    private static final ResourceLocation andromedaTexture = new ResourceLocation(GalaxySpace.ASSET_PREFIX, "textures/environment/background/Andromeda.png");
    
    
    public int starList;
    public int glSkyList;
    public int glSkyList2;
    private float sunSize;

    public SkyProviderACentauriBb()
    {
            
     int displayLists = GLAllocation.generateDisplayLists(3);
        this.starList = displayLists;
        this.glSkyList = displayLists + 1;
        this.glSkyList2 = displayLists + 2;

        // Bind stars to display list
        GL11.glPushMatrix();
        GL11.glNewList(this.starList, GL11.GL_COMPILE);
        this.renderStars();
        GL11.glEndList();
        GL11.glPopMatrix();

        final Tessellator tessellator = Tessellator.instance;
        GL11.glNewList(this.glSkyList, GL11.GL_COMPILE);
        final byte byte2 = 64;
        final int i = 256 / byte2 + 2;
        float f = 16F;

        for (int j = -byte2 * i; j <= byte2 * i; j += byte2)
        {
            for (int l = -byte2 * i; l <= byte2 * i; l += byte2)
            {
                tessellator.startDrawingQuads();
                tessellator.addVertex(j + 0, f, l + 0);
                tessellator.addVertex(j + byte2, f, l + 0);
                tessellator.addVertex(j + byte2, f, l + byte2);
                tessellator.addVertex(j + 0, f, l + byte2);
                tessellator.draw();
            }
        }

        GL11.glEndList();
        GL11.glNewList(this.glSkyList2, GL11.GL_COMPILE);
        f = -16F;
        tessellator.startDrawingQuads();

        for (int k = -byte2 * i; k <= byte2 * i; k += byte2)
        {
            for (int i1 = -byte2 * i; i1 <= byte2 * i; i1 += byte2)
            {
                tessellator.addVertex(k + byte2, f, i1 + 0);
                tessellator.addVertex(k + 0, f, i1 + 0);
                tessellator.addVertex(k + 0, f, i1 + byte2);
                tessellator.addVertex(k + byte2, f, i1 + byte2);
            }
        }

        tessellator.draw();
        GL11.glEndList();
    }

    @Override
    public void render(float partialTicks, WorldClient world, Minecraft mc)
    {
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        Vec3 vec3 = world.getSkyColor(mc.renderViewEntity, partialTicks);
        float f1 = (float) vec3.xCoord;
        float f2 = (float) vec3.yCoord;
        float f3 = (float) vec3.zCoord;
        float f6;

        if (mc.gameSettings.anaglyph)
        {
            float f4 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
            float f5 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
            f6 = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
            f1 = f4;
            f2 = f5;
            f3 = f6;
        }

        GL11.glColor3f(f1, f2, f3);
        Tessellator tessellator1 = Tessellator.instance;
        GL11.glDepthMask(false);
        GL11.glEnable(GL11.GL_FOG);
        GL11.glColor3f(f1, f2, f3);
        GL11.glCallList(this.glSkyList);
        GL11.glDisable(GL11.GL_FOG);
        GL11.glDisable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        OpenGlHelper.glBlendFunc(770, 771, 1, 0);
        RenderHelper.disableStandardItemLighting();
        float f7;
        float f8;
        float f9;
        float f10;

        float f18 = world.getStarBrightness(partialTicks);

        if (f18 > 0.0F)
        {
            GL11.glColor4f(f18, f18, f18, f18);
            GL11.glCallList(this.starList);
        }

        float[] afloat = new float[4];
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glShadeModel(GL11.GL_SMOOTH);
        GL11.glPushMatrix();
        GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F);
        afloat[0] = 240 / 255.0F;
        afloat[1] = 220 / 255.0F;
        afloat[2] = 220 / 255.0F;
        afloat[3] = 0.3F;
        f6 = afloat[0];
        f7 = afloat[1];
        f8 = afloat[2];
        float f11;

        if (mc.gameSettings.anaglyph)
        {
            f9 = (f6 * 30.0F + f7 * 59.0F + f8 * 11.0F) / 100.0F;
            f10 = (f6 * 30.0F + f7 * 70.0F) / 100.0F;
            f11 = (f6 * 30.0F + f8 * 70.0F) / 100.0F;
            f6 = f9;
            f7 = f10;
            f8 = f11;
        }

        f18 = 1.0F - f18;

        tessellator1.startDrawing(GL11.GL_TRIANGLE_FAN);
        tessellator1.setColorRGBA_F(f6 * f18, f7 * f18, f8 * f18, afloat[3] * 2 / f18);
        tessellator1.addVertex(0.0D, 100.0D, 0.0D);
        byte b0 = 16;
        tessellator1.setColorRGBA_F(afloat[0] * f18, afloat[1] * f18, afloat[2] * f18, 0.0F);

        // Render sun aura
        f10 = 15.0F;
        tessellator1.addVertex(-f10, 100.0D, -f10);
        tessellator1.addVertex(0, 100.0D, (double) -f10 * 1.5F);
        tessellator1.addVertex(f10, 100.0D, -f10);
        tessellator1.addVertex((double) f10 * 1.5F, 100.0D, 0);
        tessellator1.addVertex(f10, 100.0D, f10);
        tessellator1.addVertex(0, 100.0D, (double) f10 * 1.5F);
        tessellator1.addVertex(-f10, 100.0D, f10);
        tessellator1.addVertex((double) -f10 * 1.5F, 100.0D, 0);
        tessellator1.addVertex(-f10, 100.0D, -f10);

        tessellator1.draw();
        tessellator1.startDrawing(GL11.GL_TRIANGLE_FAN);
        tessellator1.setColorRGBA_F(f6 * f18, f7 * f18, f8 * f18, afloat[3] * f18);
        tessellator1.addVertex(0.0D, 100.0D, 0.0D);
        tessellator1.setColorRGBA_F(afloat[0] * f18, afloat[1] * f18, afloat[2] * f18, 0.0F);

        // Render larger sun aura
        f10 = 30.0F;
        tessellator1.addVertex(-f10, 100.0D, -f10);
        tessellator1.addVertex(0, 100.0D, (double) -f10 * 1.5F);
        tessellator1.addVertex(f10, 100.0D, -f10);
        tessellator1.addVertex((double) f10 * 1.5F, 100.0D, 0);
        tessellator1.addVertex(f10, 100.0D, f10);
        tessellator1.addVertex(0, 100.0D, (double) f10 * 1.5F);
        tessellator1.addVertex(-f10, 100.0D, f10);
        tessellator1.addVertex((double) -f10 * 1.5F, 100.0D, 0);
        tessellator1.addVertex(-f10, 100.0D, -f10);

        tessellator1.draw();
        
        GL11.glPopMatrix();
        GL11.glShadeModel(GL11.GL_FLAT);

        GL11.glEnable(GL11.GL_TEXTURE_2D);
        OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE, GL11.GL_ZERO);
        GL11.glPushMatrix();

        f7 = 0.0F;
        f8 = 0.0F;
        f9 = 0.0F;
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glTranslatef(f7, f8, f9);
        GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F);
        // Render sun
        f10 = 5.5F;
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.sunTexture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, 100.0D, -f10, 0.0D, 0.0D);
        tessellator1.addVertexWithUV(f10, 100.0D, -f10, 1.0D, 0.0D);
        tessellator1.addVertexWithUV(f10, 100.0D, f10, 1.0D, 1.0D);
        tessellator1.addVertexWithUV(-f10, 100.0D, f10, 0.0D, 1.0D);
        tessellator1.draw();
        
        // Render sun 1
        f10 = 2.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        GL11.glRotatef(-180.0F, 10.0F, 1.0F, 0.0F);
        GL11.glRotatef(360.0F, 1.0F, 0.0F, 0.0F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.sun1Texture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();
        
     // Render sun 1
        f10 = 2.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        GL11.glRotatef(20.0F, 58.0F, 45.0F, 0.0F);
        GL11.glRotatef(360.0F, 1.0F, 0.0F, 0.0F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.sun2Texture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();
        
        GL11.glPopMatrix();
        GL11.glPushMatrix();
        
        // Render Large Magellanic Cloud
        f10 = 15.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(-105F, 1.0F, 0.0F, 0.0F);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.lmcTexture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();
     
        GL11.glPopMatrix();
        GL11.glPushMatrix();
        
     // Render Small Magellanic Cloud
        f10 = 5.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F); //Расположение по X
        GL11.glRotatef(-105F, 1.0F, 0.0F, 0.0F); //Расположение по Y
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.smcTexture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();
        
        GL11.glPopMatrix();
        GL11.glPushMatrix();
        
     // Render Andromeda
        f10 = 4.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glRotatef(145.0F, 0.0F, 1.0F, 0.0F); //Расположение по X
        GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F); //Расположение по Y
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.andromedaTexture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();
        
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_FOG);
        GL11.glPopMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glColor3f(0.0F, 0.0F, 0.0F);
        double d0 = mc.thePlayer.getPosition(partialTicks).yCoord - world.getHorizon();

        if (d0 < 0.0D)
        {
            GL11.glPushMatrix();
            GL11.glTranslatef(0.0F, 12.0F, 0.0F);
            GL11.glCallList(this.glSkyList2);
            GL11.glPopMatrix();
            f8 = 1.0F;
            f9 = -((float) (d0 + 65.0D));
            f10 = -f8;
            tessellator1.startDrawingQuads();
            tessellator1.setColorRGBA_I(0, 255);
            tessellator1.addVertex(-f8, f9, f8);
            tessellator1.addVertex(f8, f9, f8);
            tessellator1.addVertex(f8, f10, f8);
            tessellator1.addVertex(-f8, f10, f8);
            tessellator1.addVertex(-f8, f10, -f8);
            tessellator1.addVertex(f8, f10, -f8);
            tessellator1.addVertex(f8, f9, -f8);
            tessellator1.addVertex(-f8, f9, -f8);
            tessellator1.addVertex(f8, f10, -f8);
            tessellator1.addVertex(f8, f10, f8);
            tessellator1.addVertex(f8, f9, f8);
            tessellator1.addVertex(f8, f9, -f8);
            tessellator1.addVertex(-f8, f9, -f8);
            tessellator1.addVertex(-f8, f9, f8);
            tessellator1.addVertex(-f8, f10, f8);
            tessellator1.addVertex(-f8, f10, -f8);
            tessellator1.addVertex(-f8, f10, -f8);
            tessellator1.addVertex(-f8, f10, f8);
            tessellator1.addVertex(f8, f10, f8);
            tessellator1.addVertex(f8, f10, -f8);
            tessellator1.draw();
        }

        if (world.provider.isSkyColored())
        {
            GL11.glColor3f(f1 * 0.2F + 0.04F, f2 * 0.2F + 0.04F, f3 * 0.6F + 0.1F);
        }
        else
        {
            GL11.glColor3f(f1, f2, f3);
        }

        GL11.glPushMatrix();
        GL11.glTranslatef(0.0F, -((float) (d0 - 16.0D)), 0.0F);
        GL11.glCallList(this.glSkyList2);
        GL11.glPopMatrix();
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glDepthMask(true);
    }

    private void renderStars()
    {
        final Random rand = new Random(10842L);
        final Tessellator var2 = Tessellator.instance;
        var2.startDrawingQuads();

        for (int starIndex = 0; starIndex < (ConfigManagerCore.moreStars ? 35000 : 6000); ++starIndex)
        {
            double var4 = rand.nextFloat() * 2.0F - 1.0F;
            double var6 = rand.nextFloat() * 2.0F - 1.0F;
            double var8 = rand.nextFloat() * 2.0F - 1.0F;
            final double var10 = 0.15F + rand.nextFloat() * 0.1F;
            double var12 = var4 * var4 + var6 * var6 + var8 * var8;

            if (var12 < 1.0D && var12 > 0.01D)
            {
                var12 = 1.0D / Math.sqrt(var12);
                var4 *= var12;
                var6 *= var12;
                var8 *= var12;
                final double var14 = var4 * (ConfigManagerCore.moreStars ? rand.nextDouble() * 150D + 130D : 100.0D);
                final double var16 = var6 * (ConfigManagerCore.moreStars ? rand.nextDouble() * 150D + 130D : 100.0D);
                final double var18 = var8 * (ConfigManagerCore.moreStars ? rand.nextDouble() * 150D + 130D : 100.0D);
                final double var20 = Math.atan2(var4, var8);
                final double var22 = Math.sin(var20);
                final double var24 = Math.cos(var20);
                final double var26 = Math.atan2(Math.sqrt(var4 * var4 + var8 * var8), var6);
                final double var28 = Math.sin(var26);
                final double var30 = Math.cos(var26);
                final double var32 = rand.nextDouble() * Math.PI * 2.0D;
                final double var34 = Math.sin(var32);
                final double var36 = Math.cos(var32);

                for (int var38 = 0; var38 < 4; ++var38)
                {
                    final double var39 = 0.0D;
                    final double var41 = ((var38 & 2) - 1) * var10;
                    final double var43 = ((var38 + 1 & 2) - 1) * var10;
                    final double var47 = var41 * var36 - var43 * var34;
                    final double var49 = var43 * var36 + var41 * var34;
                    final double var53 = var47 * var28 + var39 * var30;
                    final double var55 = var39 * var28 - var47 * var30;
                    final double var57 = var55 * var22 - var49 * var24;
                    final double var61 = var49 * var22 + var55 * var24;
                    var2.addVertex(var14 + var57, var16 + var53, var18 + var61);
                }
            }
        }

        var2.draw();
    }

    private Vec3 getCustomSkyColor()
    {
        return Vec3.createVectorHelper(0.26796875D, 0.1796875D, 0.0D);
    }

    public float getSkyBrightness(float par1)
    {
        final float var2 = FMLClientHandler.instance().getClient().theWorld.getCelestialAngle(par1);
        float var3 = 1.0F - (MathHelper.sin(var2 * (float) Math.PI * 2.0F) * 2.0F + 0.25F);

        if (var3 < 0.0F)
        {
            var3 = 0.0F;
        }

        if (var3 > 1.0F)
        {
            var3 = 1.0F;
        }

        return var3 * var3 * 1F;
    }
}
 
1,087
2
Либо я слепой, либо я даже не вижу кода где ты поворачиваешь небо к примеру так:
Код:
             GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
             GL11.glRotatef(MathHelper.sin(world.getCelestialAngleRadians(partialTicks)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F);
             GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
 
1,057
50
234
Не, не то....


wc8pjd6z9p65.png


Код:
     // Render Milky Way
        f10 = 250.0F;
        GL11.glScalef(0.6F, 0.6F, 0.6F);
        GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); //Расположение по X
        GL11.glRotatef(MathHelper.sin(world.getCelestialAngleRadians(partialTicks)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F);
        GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); //Расположение по Y
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1F);
        FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderACentauriBb.mwTexture);
        tessellator1.startDrawingQuads();
        tessellator1.addVertexWithUV(-f10, -100.0D, f10, 0, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, f10, 1, 1);
        tessellator1.addVertexWithUV(f10, -100.0D, -f10, 1, 0);
        tessellator1.addVertexWithUV(-f10, -100.0D, -f10, 0, 0);
        tessellator1.draw();

Как вот верхний край завернуть?
 
Сверху