Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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];
        }