} // Raw PICA200 GPU commands public static TexEnv Load(Utility utility) { var te = new TexEnv(); CGFXDebug.LoadStart(te, utility); te.Constant = (GfxTexEnvConstant)utility.ReadU32(); te.RawCommands = utility.ReadUInts(6); return(te); }
private void CalcTextureEnvironmentHash() { using (MemoryStream MS = new MemoryStream()) { BinaryWriter Writer = new BinaryWriter(MS); Writer.Write(FragmentShader.TexEnvBufferColor.ToVector4()); foreach (GfxTexEnv TexEnv in FragmentShader.TextureEnvironments) { Writer.Write(TexEnv.GetBytes()); } TextureEnvironmentHash = HashBuffer(MS.ToArray()); } }
public static FragmentShader Load(Utility utility) { var fs = new FragmentShader(); CGFXDebug.LoadStart(fs, utility); fs.TexEnvBufferColorF = ColorFloat.Read(utility); // Fragment Shader fs.FragmentFlags = utility.ReadU32(); fs.TranslucencyKind = (TranslucencyKind)utility.ReadU32(); fs.FresnelSelector = (GfxFresnelSelector)utility.ReadU32(); fs.BumpTexture = utility.ReadI32(); fs.BumpMode = (GfxBumpMode)utility.ReadU32(); fs.IsBumpRenormalize = utility.ReadU32() == 1; // Fragment Lighting CGFXDebug.LoadStart($"HEADER of list of FragLightLUTs", utility); utility.LoadIndirect(() => { CGFXDebug.LoadStart($"List of FragLightLUTs", utility); fs.ReflectanceRSampler = GetFragLightLUT(utility); fs.ReflectanceGSampler = GetFragLightLUT(utility); fs.ReflectanceBSampler = GetFragLightLUT(utility); fs.Distribution0Sampler = GetFragLightLUT(utility); fs.Distribution1Sampler = GetFragLightLUT(utility); fs.FresnelSampler = GetFragLightLUT(utility); }); fs.TextureEnvironments = new TexEnv[6]; for (var i = 0; i < fs.TextureEnvironments.Length; i++) { fs.TextureEnvironments[i] = TexEnv.Load(utility); } fs.AlphaTestRawCommands = utility.ReadUInts(2); fs.FragmentShaderRawCommands = utility.ReadUInts(6); return(fs); }