rt4-client/client/src/main/java/SpecularMaterialRenderer.java

234 lines
10 KiB
Java

import java.nio.ByteBuffer;
import javax.media.opengl.GL;
import org.openrs2.deob.annotation.OriginalArg;
import org.openrs2.deob.annotation.OriginalClass;
import org.openrs2.deob.annotation.OriginalMember;
import org.openrs2.deob.annotation.Pc;
@OriginalClass("client!vm")
public final class SpecularMaterialRenderer implements MaterialRenderer {
@OriginalMember(owner = "client!vm", name = "a", descriptor = "I")
private int anInt5777 = -1;
@OriginalMember(owner = "client!vm", name = "c", descriptor = "[I")
private int[] anIntArray519 = null;
@OriginalMember(owner = "client!vm", name = "b", descriptor = "Z")
private boolean aBoolean301 = false;
@OriginalMember(owner = "client!vm", name = "<init>", descriptor = "()V")
public SpecularMaterialRenderer() {
if (Static239.aBoolean275 && Static239.anInt5322 >= 2) {
this.method4536();
@Pc(19) GL local19 = Static239.aGL1;
local19.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[0]);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_R, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
local19.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[1]);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_R, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
local19.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[2]);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_R, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
local19.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
this.aBoolean301 = Static239.anInt5322 < 3;
}
this.method4535();
}
@OriginalMember(owner = "client!vm", name = "d", descriptor = "()V")
private void method4535() {
@Pc(1) GL local1 = Static239.aGL1;
this.anInt5777 = local1.glGenLists(2);
local1.glNewList(this.anInt5777, GL.GL_COMPILE);
if (this.anIntArray519 == null) {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_PRIMARY_COLOR);
} else {
local1.glActiveTexture(GL.GL_TEXTURE1);
local1.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP);
local1.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP);
local1.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_NORMAL_MAP);
local1.glEnable(GL.GL_TEXTURE_GEN_S);
local1.glEnable(GL.GL_TEXTURE_GEN_T);
local1.glEnable(GL.GL_TEXTURE_GEN_R);
local1.glEnable(GL.GL_TEXTURE_CUBE_MAP);
local1.glMatrixMode(GL.GL_TEXTURE);
local1.glLoadIdentity();
local1.glRotatef(22.5F, 1.0F, 0.0F, 0.0F);
local1.glMatrixMode(GL.GL_MODELVIEW);
if (this.aBoolean301) {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_ADD);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_OPERAND0_RGB, GL.GL_SRC_ALPHA);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_ALPHA, GL.GL_REPLACE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_PRIMARY_COLOR);
} else {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_REPLACE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_RGB, GL.GL_PREVIOUS);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_ALPHA, GL.GL_MODULATE);
local1.glActiveTexture(GL.GL_TEXTURE2);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_COMBINE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_ADD);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_RGB, GL.GL_PREVIOUS);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC1_RGB, GL.GL_PREVIOUS);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_OPERAND1_RGB, GL.GL_SRC_ALPHA);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_ALPHA, GL.GL_REPLACE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_PRIMARY_COLOR);
local1.glBindTexture(GL.GL_TEXTURE_2D, Static239.anInt5328);
local1.glEnable(GL.GL_TEXTURE_2D);
}
local1.glActiveTexture(GL.GL_TEXTURE0);
}
local1.glEndList();
local1.glNewList(this.anInt5777 + 1, GL.GL_COMPILE);
if (this.anIntArray519 == null) {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_TEXTURE);
} else {
local1.glActiveTexture(GL.GL_TEXTURE1);
local1.glDisable(GL.GL_TEXTURE_GEN_S);
local1.glDisable(GL.GL_TEXTURE_GEN_T);
local1.glDisable(GL.GL_TEXTURE_GEN_R);
local1.glDisable(GL.GL_TEXTURE_CUBE_MAP);
local1.glMatrixMode(GL.GL_TEXTURE);
local1.glLoadIdentity();
local1.glMatrixMode(GL.GL_MODELVIEW);
if (this.aBoolean301) {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_OPERAND0_RGB, GL.GL_SRC_COLOR);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_ALPHA, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_TEXTURE);
} else {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_RGB, GL.GL_TEXTURE);
local1.glActiveTexture(GL.GL_TEXTURE2);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_RGB, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_RGB, GL.GL_TEXTURE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_OPERAND1_RGB, GL.GL_SRC_COLOR);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_COMBINE_ALPHA, GL.GL_MODULATE);
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_TEXTURE);
local1.glDisable(GL.GL_TEXTURE_2D);
}
local1.glActiveTexture(GL.GL_TEXTURE0);
}
local1.glEndList();
}
@OriginalMember(owner = "client!vm", name = "a", descriptor = "()V")
@Override
public final void method4602() {
@Pc(1) GL local1 = Static239.aGL1;
if (Static178.aBoolean202) {
local1.glCallList(this.anInt5777 + 1);
} else {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_TEXTURE);
}
}
@OriginalMember(owner = "client!vm", name = "c", descriptor = "()I")
@Override
public final int method4605() {
return 4;
}
@OriginalMember(owner = "client!vm", name = "b", descriptor = "()V")
@Override
public final void method4603() {
@Pc(1) GL local1 = Static239.aGL1;
Static239.method4174(1);
if (Static178.aBoolean202) {
local1.glCallList(this.anInt5777);
} else {
local1.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_SRC0_ALPHA, GL.GL_PRIMARY_COLOR);
}
}
@OriginalMember(owner = "client!vm", name = "a", descriptor = "(I)V")
@Override
public final void method4604(@OriginalArg(0) int arg0) {
@Pc(1) GL local1 = Static239.aGL1;
if (Static178.aBoolean202 && this.anIntArray519 != null) {
local1.glActiveTexture(GL.GL_TEXTURE1);
local1.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[arg0 - 1]);
local1.glActiveTexture(GL.GL_TEXTURE0);
}
}
@OriginalMember(owner = "client!vm", name = "e", descriptor = "()V")
private void method4536() {
@Pc(1) GL local1 = Static239.aGL1;
if (this.anIntArray519 == null) {
this.anIntArray519 = new int[3];
local1.glGenTextures(3, this.anIntArray519, 0);
}
@Pc(19) byte[] local19 = new byte[4096];
@Pc(22) byte[] local22 = new byte[4096];
@Pc(25) byte[] local25 = new byte[4096];
for (@Pc(27) int local27 = 0; local27 < 6; local27++) {
@Pc(32) int local32 = 0;
for (@Pc(34) int local34 = 0; local34 < 64; local34++) {
for (@Pc(39) int local39 = 0; local39 < 64; local39++) {
@Pc(51) float local51 = (float) local39 * 2.0F / 64.0F - 1.0F;
@Pc(60) float local60 = (float) local34 * 2.0F / 64.0F - 1.0F;
@Pc(75) float local75 = (float) (1.0D / Math.sqrt((double) (local51 * local51 + local60 * local60 + 1.0F)));
@Pc(79) float local79 = local51 * local75;
@Pc(83) float local83 = local60 * local75;
@Pc(88) float local88;
if (local27 == 0) {
local88 = -local79;
} else if (local27 == 1) {
local88 = local79;
} else if (local27 == 2) {
local88 = local83;
} else if (local27 == 3) {
local88 = -local83;
} else if (local27 == 4) {
local88 = local75;
} else {
local88 = -local75;
}
@Pc(129) int local129;
@Pc(137) int local137;
@Pc(145) int local145;
if (local88 > 0.0F) {
local129 = (int) (Math.pow((double) local88, 96.0D) * 255.0D);
local137 = (int) (Math.pow((double) local88, 36.0D) * 255.0D);
local145 = (int) (Math.pow((double) local88, 12.0D) * 255.0D);
} else {
local145 = 0;
local137 = 0;
local129 = 0;
}
if (Static239.anInt5322 < 3) {
local129 /= 5;
local137 /= 5;
local145 /= 5;
} else {
local129 /= 2;
local137 /= 2;
local145 /= 2;
}
local22[local32] = (byte) local129;
local25[local32] = (byte) local137;
local19[local32] = (byte) local145;
local32++;
}
}
local1.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[0]);
local1.glTexImage2D(local27 + GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL.GL_ALPHA, 64, 64, 0, GL.GL_ALPHA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(local22));
local1.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[1]);
local1.glTexImage2D(local27 + GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL.GL_ALPHA, 64, 64, 0, GL.GL_ALPHA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(local25));
local1.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, this.anIntArray519[2]);
local1.glTexImage2D(local27 + GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL.GL_ALPHA, 64, 64, 0, GL.GL_ALPHA, GL.GL_UNSIGNED_BYTE, ByteBuffer.wrap(local19));
Static63.anInt1942 += 12288;
}
}
}