예제 #1
0
        public override void GenerateShader(MaterialGeneratorContext context)
        {
            Vector4 emissiveMin = Vector4.Zero;
            Vector4 emissiveMax = new Vector4(float.MaxValue);

            EmissiveMap.ClampFloat4(ref emissiveMin, ref emissiveMax);
            Intensity.ClampFloat(0, float.MaxValue);

            context.SetStream(EmissiveStream.Stream, EmissiveMap, MaterialKeys.EmissiveMap, MaterialKeys.EmissiveValue);
            context.SetStream("matEmissiveIntensity", Intensity, MaterialKeys.EmissiveIntensityMap, MaterialKeys.EmissiveIntensity);

            var shaderBuilder = context.AddShading(this);

            shaderBuilder.ShaderSources.Add(new ShaderClassSource("MaterialSurfaceEmissiveShading", UseAlpha));
        }
        private bool disposedValue = false; // To detect redundant calls

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects).
                }

                if (DiffuseMap != null)
                {
                    DiffuseMap.Dispose();
                }

                if (NormalMap != null)
                {
                    NormalMap.Dispose();
                }

                if (DiffuseAlphaMap != null)
                {
                    DiffuseAlphaMap.Dispose();
                }

                if (SpecularMap != null)
                {
                    SpecularMap.Dispose();
                }

                if (EmissiveMap != null)
                {
                    EmissiveMap.Dispose();
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.

                disposedValue = true;
            }
        }