void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_transparent_chicago_group shader) { if (shader.Maps.Count > 0 && !shader.Maps[0].Map.Datum.IsNull) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(shader.Maps[0].Map.Datum, 0); } }
void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_transparent_glass_group shader) { if (shader.DiffuseMap.Datum != DatumIndex.Null) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(shader.DiffuseMap.Datum, 0); } }
void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_model_group shader) { if (shader.BaseMap.Datum != DatumIndex.Null) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(shader.BaseMap.Datum, 0); } phong.Specular.Color.SetColor(shader.PerpendicularTintColor, 1); }
/// <summary> /// Creates a phong definition using values from a shader tag /// </summary> /// <param name="shader_datum">DatumIndex of the shader to create a phong definition from</param> /// <returns></returns> protected override Fx.ColladaPhong CreatePhong(DatumIndex shader_datum) { Managers.TagManager shader_man = tagIndex[shader_datum]; // get the shader tag definition H2.Tags.shader_group shader = GetTagDefinition <H2.Tags.shader_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.shdr); Fx.ColladaPhong phong = CreateDefaultPhong(); H2.Tags.global_shader_parameter_block block; phong.Diffuse.Color.SetColor(1, 1, 1, 1); phong.Shininess.Float.Value = 30.0f; // set up the effects variables with those from the shader if ((block = FindParameter(shader, "emissive_color")) != null) { phong.Emission = new Fx.ColladaCommonColorOrTextureType(); phong.Emission.Color = new Core.ColladaColor(block.ConstColor, 1.0f); } if ((block = FindParameter(shader, "base_map")) != null && IsDatumValid(block.Bitmap.Datum)) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(block.Bitmap.Datum, 0); } else if ((block = FindParameter(shader, "diffuse_color")) != null) { phong.Diffuse.Color.SetColor(block.ConstColor, 1.0f); } if ((block = FindParameter(shader, "specular_color")) != null) { phong.Specular.Color.SetColor(block.ConstColor, 1.0f); } if ((block = FindParameter(shader, "alpha_test_map")) != null && IsDatumValid(block.Bitmap.Datum)) { phong.Transparent.Color = null; phong.Transparent.Texture = CreateTexture(block.Bitmap.Datum, 0); phong.Transparent.Opaque = Enums.ColladaFXOpaqueEnum.A_ONE; } return(phong); }
void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_transparent_chicago_extended_group shader) { DatumIndex bitmap_datum = DatumIndex.Null; if (shader._4StageMaps.Count > 0) { bitmap_datum = shader._4StageMaps[0].Map.Datum; } else if (shader._2StageMaps.Count > 0) { bitmap_datum = shader._2StageMaps[0].Map.Datum; } if (bitmap_datum != DatumIndex.Null) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(bitmap_datum, 0); } }
void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_environment_group shader) { if (shader.BaseMap.Datum == DatumIndex.Null) { phong.Diffuse.Color.SetColor(shader.MaterialColor, 1); } else { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(shader.BaseMap.Datum, 0); } if (shader.Flags.Test(1) && (shader.BumpMap.Datum != DatumIndex.Null)) { phong.Transparent.Color = null; phong.Transparent.Texture = CreateTexture(shader.BumpMap.Datum, 0); phong.Transparent.Opaque = Enums.ColladaFXOpaqueEnum.A_ONE; } phong.Specular.Color.SetColor(shader.PerpendicularColor, 1); }
/// <summary> /// Creates a phong definition using values from a shader tag /// </summary> /// <param name="shader_datum">DatumIndex of the shader to create a phong definition from</param> /// <returns></returns> protected override Fx.ColladaPhong CreatePhong(DatumIndex shader_datum) { Managers.TagManager shader_man = tagIndex[shader_datum]; H1.Tags.shader_group shader_base = GetTagDefinition <H1.Tags.shader_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.shdr); Fx.ColladaPhong phong = CreateDefaultPhong(); phong.Emission = new Fx.ColladaCommonColorOrTextureType(); phong.Emission.Color = new Core.ColladaColor(shader_base.RadiosityEmittedLightColor, 1.0f); phong.Diffuse.Color.SetColor(1, 1, 1, 1); phong.Shininess.Float.Value = 30.0f; shader_base = null; if (shader_man.GroupTag == Blam.Halo1.TagGroups.senv) { var shader_senv = GetTagDefinition <H1.Tags.shader_environment_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.senv); CreatePhong(phong, shader_senv); } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.soso) { var shader_soso = GetTagDefinition <H1.Tags.shader_model_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.soso); CreatePhong(phong, shader_soso); } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.schi) { var shader_schi = GetTagDefinition <H1.Tags.shader_transparent_chicago_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.schi); CreatePhong(phong, shader_schi); } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.scex) { var shader_scex = GetTagDefinition <H1.Tags.shader_transparent_chicago_extended_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.scex); CreatePhong(phong, shader_scex); } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.sotr) { var shader_sotr = GetTagDefinition <H1.Tags.shader_transparent_generic_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.sotr); CreatePhong(phong, shader_sotr); } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.sgla) { var shader_sgla = GetTagDefinition <H1.Tags.shader_transparent_glass_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.sgla); CreatePhong(phong, shader_sgla); } return(phong); }