static void LoadLightGrids(BinaryReader br, Header header) { // HDR Ambient light may be in lump for itself if (header.lumps[55].filelen > 0) { int nHDRAmbient = header.lumps[55].filelen / 24; CompressedLightCube[] HDRCubes = new CompressedLightCube[nHDRAmbient]; br.BaseStream.Seek(header.lumps[55].fileofs, SeekOrigin.Begin); for (int i = 0; i < nHDRAmbient; i++) { CompressedLightCube cube = new CompressedLightCube(); cube.Color = new Vector3[6]; for (int j = 0; j < 6; j++) { RGBExp color = new RGBExp(); color.r = br.ReadByte(); color.g = br.ReadByte(); color.b = br.ReadByte(); color.exp = br.ReadSByte(); float r = TexLightToLinear((int)color.r, color.exp) * 255; float g = TexLightToLinear((int)color.g, color.exp) * 255; float b = TexLightToLinear((int)color.b, color.exp) * 255; float exp = 128 + (int)color.exp; cube.Color[j] = new Vector3(r, g, b); } HDRCubes[i] = cube; } world.LightGrid = HDRCubes; } // LDR Ambient light may be in lump for itself else if (header.lumps[56].filelen > 0) { int nLDRAmbient = header.lumps[56].filelen / 24; CompressedLightCube[] LDRCubes = new CompressedLightCube[nLDRAmbient]; br.BaseStream.Seek(header.lumps[56].fileofs, SeekOrigin.Begin); for (int i = 0; i < nLDRAmbient; i++) { CompressedLightCube cube = new CompressedLightCube(); cube.Color = new Vector3[6]; for (int j = 0; j < 6; j++) { RGBExp color = new RGBExp(); color.r = br.ReadByte(); color.g = br.ReadByte(); color.b = br.ReadByte(); color.exp = br.ReadSByte(); float r = TexLightToLinear((int)color.r, color.exp) * 255; float g = TexLightToLinear((int)color.g, color.exp) * 255; float b = TexLightToLinear((int)color.b, color.exp) * 255; float exp = 128 + (int)color.exp; cube.Color[j] = new Vector3(r, g, b); } LDRCubes[i] = cube; } world.LightGrid = LDRCubes; } }
public VertexPropInstance(Matrix matrix, CompressedLightCube light) { row1 = matrix.get_Rows(0); row2 = matrix.get_Rows(1); row3 = matrix.get_Rows(2); Vector4 vec = matrix.get_Rows(3); row1.W = vec.X; row2.W = vec.Y; row3.W = vec.Z; cubex = light.Color[0]; cubex1 = light.Color[1]; cubey = light.Color[2]; cubey1 = light.Color[3]; cubez = light.Color[4]; cubez1 = light.Color[5]; }