Пример #1
0
        public override void Initialize(IDeviceContextHolder contextHolder)
        {
            _txNormal        = Kn5Material.ShaderName.Contains("damage") ? null : GetTexture("txNormal", contextHolder);
            _txMaps          = GetTexture("txMaps", contextHolder);
            _txDetails       = GetTexture("txDetail", contextHolder);
            _txDetailsNormal = GetTexture("txNormalDetail", contextHolder);

            if (_txNormal != null)
            {
                Flags |= EffectSimpleMaterial.HasNormalMap;
            }

            if (Equals(Kn5Material.GetPropertyValueAByName("isAdditive"), 2.0f))
            {
                Flags |= EffectSimpleMaterial.IsCarpaint;
            }

            if (Kn5Material.GetPropertyValueAByName("useDetail") > 0)
            {
                Flags |= EffectSimpleMaterial.HasDetailsMap;
            }

            if (Kn5Material.ShaderName.Contains("_AT"))
            {
                Flags |= EffectSimpleMaterial.UseNormalAlphaAsAlpha;
            }

            _material = new EffectSimpleMaterial.MapsMaterial {
                DetailsUvMultipler = Kn5Material.GetPropertyValueAByName("detailUVMultiplier"),
                DetailsNormalBlend = _txDetailsNormal == null ? 0f : Kn5Material.GetPropertyValueAByName("detailNormalBlend")
            };

            base.Initialize(contextHolder);
        }
Пример #2
0
        public override void Initialize(IDeviceContextHolder contextHolder)
        {
            _material = new EffectSimpleMaterial.AlphaMaterial {
                Alpha = Kn5Material.GetPropertyValueAByName("alpha")
            };

            base.Initialize(contextHolder);
        }
Пример #3
0
        protected override void Initialize(IDeviceContextHolder contextHolder)
        {
            _material = new EffectDarkMaterial.NmUvMultMaterial {
                DiffuseMultiplier = Kn5Material.GetPropertyValueAByName("diffuseMult"),
                NormalMultiplier  = Kn5Material.GetPropertyValueAByName("normalMult")
            };

            base.Initialize(contextHolder);
        }
Пример #4
0
        protected override void Initialize(IDeviceContextHolder contextHolder)
        {
            _txNormal = GetTexture("txNormal", contextHolder);
            if (Kn5Material.GetPropertyValueAByName("nmObjectSpace") != 0)
            {
                Flags |= EffectDarkMaterial.NmObjectSpace;
            }

            base.Initialize(contextHolder);
        }
        protected override void Initialize(IDeviceContextHolder contextHolder)
        {
            if (Equals(Kn5Material.GetPropertyValueAByName("isAdditive"), 1.0f))
            {
                Flags |= EffectSimpleMaterial.IsAdditive;
            }

            _material = new EffectSimpleMaterial.ReflectiveMaterial {
                FresnelC        = Kn5Material.GetPropertyValueAByName("fresnelC"),
                FresnelExp      = Math.Max(Kn5Material.GetPropertyValueAByName("fresnelEXP"), 1f),
                FresnelMaxLevel = Kn5Material.GetPropertyValueAByName("fresnelMaxLevel")
            };

            base.Initialize(contextHolder);
        }
Пример #6
0
        public override bool Prepare(IDeviceContextHolder contextHolder, SpecialRenderMode mode)
        {
            if (!base.Prepare(contextHolder, mode))
            {
                return(false);
            }

            Effect.FxNormalMap.SetResource(_txNormal);
            if (Kn5Material.GetPropertyValueAByName("nmObjectSpace") != 0)
            {
                Flags |= EffectDarkMaterial.NmObjectSpace;
            }

            return(true);
        }
Пример #7
0
        protected override void Initialize(IDeviceContextHolder contextHolder)
        {
            _txNormal        = Kn5Material.ShaderName.Contains("damage") ? null : GetTexture("txNormal", contextHolder);
            _txMaps          = GetTexture("txMaps", contextHolder);
            _txDetails       = GetTexture("txDetail", contextHolder);
            _txDetailsNormal = GetTexture("txNormalDetail", contextHolder);

            if (_txNormal != null)
            {
                _hasNormalMap = true;
                Flags        |= EffectDarkMaterial.HasNormalMap;
                if (Kn5Material.GetPropertyValueAByName("nmObjectSpace") != 0)
                {
                    Flags |= EffectDarkMaterial.NmObjectSpace;
                }
            }

            if (Equals(Kn5Material.GetPropertyValueAByName("isAdditive"), 2.0f))
            {
                Flags |= EffectDarkMaterial.IsCarpaint;
            }

            if (Kn5Material.GetPropertyValueAByName("useDetail") > 0)
            {
                Flags |= EffectDarkMaterial.HasDetailsMap;
            }

            if (Kn5Material.ShaderName.Contains("_AT") || Kn5Material.ShaderName == "ksSkinnedMesh")
            {
                Flags |= EffectDarkMaterial.UseNormalAlphaAsAlpha;
            }

            if (Kn5Material.ShaderName == "ksSkinnedMesh")
            {
                Flags |= EffectDarkMaterial.UseNormalAlphaAsAlpha;
            }

            _material = new EffectDarkMaterial.MapsMaterial {
                DetailsUvMultiplier = Kn5Material.GetPropertyValueAByName("detailUVMultiplier"),
                DetailsNormalBlend  = _txDetailsNormal == null ? 0f : Kn5Material.GetPropertyValueAByName("detailNormalBlend"),
                SunSpecular         = Kn5Material.GetPropertyValueAByName("sunSpecular"),
                SunSpecularExp      = Kn5Material.GetPropertyValueAByName("sunSpecularEXP"),
            };

            base.Initialize(contextHolder);
        }
Пример #8
0
        internal Kn5MaterialToBake([CanBeNull] Kn5Material kn5Material)
        {
            _kn5Material = kn5Material;
            if (kn5Material == null)
            {
                return;
            }

            _propDiffuse = (_kn5Material.GetPropertyByName("ksAmbient")?.ValueA ?? 0.55f)
                           + (_kn5Material.GetPropertyByName("ksDiffuse")?.ValueA ?? 0.45f) * 0.5f;
            _propMagicMult      = _kn5Material.GetPropertyByName("magicMult")?.ValueA ?? 1.0f;
            _propMultilayerMult = new Vector4(
                _kn5Material.GetPropertyByName("multR")?.ValueA ?? 1.0f,
                _kn5Material.GetPropertyByName("multG")?.ValueA ?? 1.0f,
                _kn5Material.GetPropertyByName("multB")?.ValueA ?? 1.0f,
                _kn5Material.GetPropertyByName("multA")?.ValueA ?? 1.0f);
            _multilayer = kn5Material.ShaderName.Contains("Multilayer");
        }
Пример #9
0
        public override void Initialize(IDeviceContextHolder contextHolder)
        {
            base.Initialize(contextHolder);

            if (Kn5Material.AlphaTested)
            {
                Flags |= EffectDarkMaterial.AlphaTest;
            }

            _txDiffuse = GetTexture("txDiffuse", contextHolder);
            _material  = new EffectDarkMaterial.StandartMaterial {
                Ambient     = Kn5Material.GetPropertyValueAByName("ksAmbient"),
                Diffuse     = Kn5Material.GetPropertyValueAByName("ksDiffuse"),
                Specular    = Kn5Material.GetPropertyValueAByName("ksSpecular"),
                SpecularExp = Kn5Material.GetPropertyValueAByName("ksSpecularEXP"),
                Emissive    = Kn5Material.GetPropertyValueCByName("ksEmissive"),
                Flags       = Flags
            };
        }
        public override void Initialize(IDeviceContextHolder contextHolder)
        {
#if REFLECTION_DEBUG && DEBUG
            if (_debugReflectionsMode)
            {
                _debugReflections = contextHolder.GetEffect <EffectSpecialDebugReflections>();
                return;
            }
#endif

            if (IsAdditive())
            {
                Flags |= EffectDarkMaterial.IsAdditive;
            }

            _material = new EffectDarkMaterial.ReflectiveMaterial {
                FresnelC        = Kn5Material.GetPropertyValueAByName("fresnelC"),
                FresnelExp      = Math.Max(Kn5Material.GetPropertyValueAByName("fresnelEXP"), 1f),
                FresnelMaxLevel = Kn5Material.GetPropertyValueAByName("fresnelMaxLevel")
            };

            base.Initialize(contextHolder);
        }
Пример #11
0
        protected IRenderableTexture GetTexture(string mappingName, IDeviceContextHolder contextHolder)
        {
            var mapping = mappingName == null ? null : Kn5Material.GetMappingByName(mappingName);

            return(mapping == null ? null : contextHolder.Get <ITexturesProvider>().GetTexture(contextHolder, mapping.Texture));
        }
Пример #12
0
        private void treeViewKn5_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var selected = treeViewKn5.SelectedNode;

            _kn5 = GetKn5(selected);

            if (_kn5 != null)
            {
                Text = Path.GetFileName(_kn5.OriginalFilename) + " - " + _text;
            }
            else
            {
                Text = _text;
            }

            _material = null;
            _texture  = null;

            var listMode     = true;
            var materialMode = false;

            if (selected.Tag != null && _kn5 != null)
            {
                if (selected.Tag is Kn5Material)
                {
                    listMode     = false;
                    materialMode = true;

                    _material      = (Kn5Material)selected.Tag;
                    labelInfo.Text = "Name: " + _material.Name;

                    Kn5Texture texture = null;
                    foreach (var mapping in _material.TextureMappings)
                    {
                        texture = _kn5.Textures[mapping.Texture];
                        break;
                    }

                    if (texture == null)
                    {
                        pictureBox.Image = null;
                    }
                    else
                    {
                        PreviewTexture(_kn5, texture);
                    }

                    textBoxShaderName.Text          = _material.ShaderName;
                    comboBoxBlendMode.SelectedIndex = (int)_material.BlendMode;
                    comboBoxDepthMode.SelectedIndex = (int)_material.DepthMode;
                    checkBoxAlphaTested.Checked     = _material.AlphaTested;

                    dataGridViewProperties.Rows.Clear();
                    foreach (var property in _material.ShaderProperties)
                    {
                        dataGridViewProperties.Rows.Add(new object[] {
                            property.Name,
                            Convert.ToString(property.ValueA),
                            String.Join(", ", property.ValueB),
                            String.Join(", ", property.ValueC),
                            String.Join(", ", property.ValueD)
                        });
                    }

                    dataGridViewTextureMappings.Rows.Clear();
                    foreach (var mapping in _material.TextureMappings)
                    {
                        dataGridViewTextureMappings.Rows.Add(new object[] {
                            mapping.Name,
                            mapping.Texture,
                            Convert.ToString(mapping.Slot)
                        });
                    }
                }
                else if (selected.Tag is Kn5Texture)
                {
                    listMode = false;
                    tableLayoutPanelMain.ColumnStyles[0].SizeType = SizeType.AutoSize;
                    tableLayoutPanelMain.ColumnStyles[1].Width    = 50;

                    _texture = (Kn5Texture)selected.Tag;
                    var dds = PreviewTexture(_kn5, _texture);
                    labelInfo.Text = "Name: " + _texture.Name + "\r\n" +
                                     (dds == null || dds.Bitmap == null ? "Read failed" :
                                      "Size: " + dds.Bitmap.Width + "×" + dds.Bitmap.Height + "\r\n" +
                                      "Pixel format: " + dds.Format);
                }
            }

            ListMode     = listMode;
            MaterialMode = materialMode;
        }
Пример #13
0
        public static float GetPropertyValueAByName(this Kn5Material mat, string name, float defaultValue = 0.0f)
        {
            var property = mat.GetPropertyByName(name);

            return(property?.ValueA ?? defaultValue);
        }
Пример #14
0
 public static Vector3 GetPropertyValueCByName(this Kn5Material mat, string name)
 {
     return(GetPropertyValueCByName(mat, name, Vector3.Zero));
 }
Пример #15
0
        public static Vector3 GetPropertyValueCByName(this Kn5Material mat, string name, Vector3 defaultValue)
        {
            var property = mat.GetPropertyByName(name);

            return(property?.ValueC.ToVector3() ?? defaultValue);
        }
Пример #16
0
 public Kn5MaterialDescription([CanBeNull] Kn5Material material)
 {
     Material = material;
 }
Пример #17
0
 public Kn5MaterialDescription(object specialKey, [CanBeNull] Kn5Material material)
 {
     SpecialKey = specialKey;
     Material   = material;
 }
Пример #18
0
        protected override bool IsAdditive()
        {
            var value = Kn5Material.GetPropertyValueAByName("isAdditive");

            return(!Equals(value, 0.0f) && !Equals(value, 2.0f));
        }
Пример #19
0
 internal Kn5MaterialUv(Kn5Material material)
 {
     _textures = material?.TextureMappings.Where(x => x.Name != "txDetail" &&
                                                 x.Name != "txNormalDetail").Select(x => x.Texture).ToArray() ?? new string[0];
 }
 protected virtual bool IsAdditive()
 {
     return(!Equals(Kn5Material.GetPropertyValueAByName("isAdditive"), 0.0f));
 }