コード例 #1
0
    protected override void UpdateMaterial()
    {
        if (innerMaterial == null)
        {
            innerMaterial = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "AtmosphereInner");
        }
        if (outerMaterial == null)
        {
            outerMaterial = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "AtmosphereOuter");
        }

        base.UpdateMaterial();

        innerMaterial.SetTexture("_LightingLut", lightingLut);

        outerMaterial.SetTexture("_LightingLut", lightingLut);

        innerMaterial.SetFloat("_ScatteringPower", GroundPower);

        if (Scattering == true)
        {
            SgtHelper.WriteMie(MieSharpness, MieStrength, outerMaterial);
            SgtHelper.WriteRayleigh(RayleighStrength, outerMaterial);

            if (GroundScattering == true)
            {
                SgtHelper.WriteMie(GroundMieSharpness, GroundMieStrength, innerMaterial);
                SgtHelper.WriteRayleigh(RayleighStrength, innerMaterial);
            }
        }

        lightCount  = SgtHelper.WriteLights(Lights, 2, transform.position, transform, null, innerMaterial, outerMaterial);
        shadowCount = SgtHelper.WriteShadows(Shadows, 2, innerMaterial, outerMaterial);
    }
コード例 #2
0
    private void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Singularity");
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        material.renderQueue = renderQueue;
        material.SetColor("_Color", color);
        material.SetVector("_Center", SgtHelper.NewVector4(transform.position, 1.0f));
        material.SetFloat("_Power", Power);
        material.SetFloat("_EdgePower", EdgePower);

        if (Hole == true)
        {
            keywords.Add("SGT_A");

            material.SetFloat("_HoleSize", HoleSize);
            material.SetFloat("_HolePower", HolePower);
        }

        SgtHelper.SetKeywords(material, keywords); keywords.Clear();
    }
コード例 #3
0
    protected virtual void UpdateMaterial()
    {
        if (innerMaterial == null)
        {
            innerMaterial = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "CoronaInner");
        }
        if (outerMaterial == null)
        {
            outerMaterial = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "CoronaOuter");
        }

        var scale        = SgtHelper.Divide(OuterMeshRadius, OuterRadius);
        var worldToLocal = SgtHelper.Scaling(scale) * transform.worldToLocalMatrix;
        var color        = SgtHelper.Brighten(Color, Brightness);
        var renderQueue  = (int)RenderQueue + RenderQueueOffset;

        innerMaterial.renderQueue = renderQueue;
        innerMaterial.SetColor("_Color", color);
        innerMaterial.SetTexture("_AtmosphereLut", atmosphereLut);
        innerMaterial.SetFloat("_AtmosphereScale", DensityScale);
        innerMaterial.SetFloat("_Power", InnerPower);
        innerMaterial.SetFloat("_SkyRadius", OuterRadius);
        innerMaterial.SetFloat("_SkyRadiusRecip", SgtHelper.Reciprocal(OuterRadius));
        innerMaterial.SetMatrix("_WorldToLocal", worldToLocal);

        outerMaterial.renderQueue = renderQueue;
        outerMaterial.SetColor("_Color", color);
        outerMaterial.SetTexture("_AtmosphereLut", atmosphereLut);
        outerMaterial.SetFloat("_AtmosphereScale", DensityScale);
        outerMaterial.SetMatrix("_WorldToLocal", worldToLocal);
    }
コード例 #4
0
    protected virtual void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Ring");
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;
        var lightCount  = SgtHelper.WriteLights(Lights, 2, transform.position, null, null, material);
        var shadowCount = SgtHelper.WriteShadows(Shadows, 2, material);

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
        material.SetFloat("_LightingBias", LightingBias);
        material.SetFloat("_LightingSharpness", LightingSharpness);

        if (Scattering == true)
        {
            keywords.Add("SGT_A");

            SgtHelper.WriteMie(MieSharpness, MieStrength, material);
        }

        SgtHelper.WriteLightKeywords(Lights.Count > 0, lightCount, keywords);
        SgtHelper.WriteShadowKeywords(shadowCount, keywords);

        SgtHelper.SetKeywords(material, keywords); keywords.Clear();
    }
コード例 #5
0
    private void Init(float size, float radius, float detail)
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Lightning");
        }

        if (meshFilter == null)
        {
            meshFilter = gameObject.AddComponent <MeshFilter>();
        }

        if (meshRenderer == null)
        {
            meshRenderer = gameObject.AddComponent <MeshRenderer>();
        }

        SgtProceduralMesh.Clear();
        {
            mesh = SgtObjectPool <Mesh> .Add(mesh);

            AddVertices(size, radius, detail);

            AddIndices();

            mesh = SgtProceduralMesh.SplitSingle(HideFlags.DontSave);
            mesh.RecalculateBounds();

            meshFilter.sharedMesh = mesh;

            meshRenderer.sharedMaterial = material;
        }
        SgtProceduralMesh.Discard();
    }
コード例 #6
0
    private void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Prominence");
        }

        var color       = SgtHelper.Premultiply(SgtHelper.Brighten(Color, Brightness));
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
        material.SetVector("_WorldPosition", transform.position);

        if (FadeEdge == true)
        {
            keywords.Add("SGT_A");

            material.SetFloat("_FadePower", FadePower);
        }

        if (ClipNear == true)
        {
            keywords.Add("SGT_B");

            material.SetFloat("_ClipPower", ClipPower);
        }

        SgtHelper.SetKeywords(material, keywords); keywords.Clear();
    }
コード例 #7
0
    private void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Cloudsphere");
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        if (FadeNear == true)
        {
            keywords.Add("SGT_A");

            material.SetFloat("_FadeRadius", FadeInnerRadius);
            material.SetFloat("_FadeScale", SgtHelper.Reciprocal(FadeOuterRadius - FadeInnerRadius));
        }

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
        material.SetTexture("_RimLut", rimLut);
        material.SetTexture("_LightingLut", lightingLut);

        var lightCount  = SgtHelper.WriteLights(Lights, 2, transform.position, null, null, material);
        var shadowCount = SgtHelper.WriteShadows(Shadows, 2, material);

        SgtHelper.WriteLightKeywords(Lights.Count > 0, lightCount, keywords);
        SgtHelper.WriteShadowKeywords(shadowCount, keywords);

        SgtHelper.SetKeywords(material, keywords); keywords.Clear();
    }
コード例 #8
0
ファイル: SgtSpacetime.cs プロジェクト: b1gr3d/GW
    protected virtual void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Spacetime");
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;
        var wellCount   = WriteWells(12);         // 12 is the shader instruction limit

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
        material.SetFloat("_Node", Node);

        switch (Effect)
        {
        case SgtSpacetimeEffect.Pinch:
        {
            material.SetFloat("_Power", Power);
        }
        break;

        case SgtSpacetimeEffect.Offset:
        {
            keywords.Add("SGT_A");
            material.SetVector("_Offset", Offset);
        }
        break;
        }

        if (Accumulate == true)
        {
            keywords.Add("SGT_B");
        }

        if ((wellCount & 1 << 0) != 0)
        {
            keywords.Add("SGT_C");
        }

        if ((wellCount & 1 << 1) != 0)
        {
            keywords.Add("SGT_D");
        }

        if ((wellCount & 1 << 2) != 0)
        {
            keywords.Add("SGT_E");
        }

        if ((wellCount & 1 << 3) != 0)
        {
            keywords.Add("LIGHT_0");
        }

        SgtHelper.SetKeywords(material, keywords); keywords.Clear();
    }
コード例 #9
0
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Prominence (Generated)", SgtHelper.ShaderNamePrefix + "Prominence");

            if (Planes != null)
            {
                for (var i = Planes.Count - 1; i >= 0; i--)
                {
                    var plane = Planes[i];

                    if (plane != null)
                    {
                        plane.SetMaterial(Material);
                    }
                }
            }
        }

        var color       = SgtHelper.Premultiply(SgtHelper.Brighten(Color, Brightness));
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        if (Material.renderQueue != renderQueue)
        {
            Material.renderQueue = renderQueue;
        }

        Material.SetTexture("_MainTex", MainTex);
        Material.SetColor("_Color", color);
        Material.SetVector("_WorldPosition", transform.position);

        SgtHelper.SetTempMaterial(Material);

        if (FadeEdge == true)
        {
            SgtHelper.EnableKeyword("SGT_A");

            Material.SetFloat("_FadePower", FadePower);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A");
        }

        if (ClipNear == true)
        {
            SgtHelper.EnableKeyword("SGT_B");

            Material.SetFloat("_ClipPower", ClipPower);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B");
        }
    }
コード例 #10
0
    protected override void UpdateGroupMaterial(SgtStarfieldGroup group)
    {
        if (group.Material == null)
        {
            group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "StaticStarfield");
        }

        base.UpdateGroupMaterial(group);
    }
コード例 #11
0
    private void UpdateMaterial()
    {
        if (depthMaterial == null)
        {
            depthMaterial = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Depth");
        }

        depthMaterial.renderQueue = (int)RenderQueue + RenderQueueOffset;
    }
コード例 #12
0
    public void UpdateMaterial()
    {
        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Skysphere (Generated)", SgtHelper.ShaderNamePrefix + "Skysphere");
        }

        Material.renderQueue = (int)RenderQueue + RenderQueueOffset;

        Material.SetTexture("_MainTex", MainTex);
        Material.SetColor("_Color", SgtHelper.Brighten(Color, Brightness));
    }
コード例 #13
0
    protected abstract void CalculateStars(out List <SgtStarfieldStar> stars, out bool pool);    // pool == true when they are temporary

    protected virtual void UpdateGroupMaterial(SgtStarfieldGroup group)
    {
        var color       = SgtHelper.Brighten(Color, Color.a * Brightness);
        var scale       = transform.lossyScale.x;
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        if (group.Material == null)
        {
            group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Starfield");
        }

        group.Material.renderQueue = renderQueue;
        group.Material.SetTexture("_Texture", group.Texture);
        group.Material.SetColor("_Color", color);
        group.Material.SetFloat("_Scale", scale);

        if (AllowPulse == true)
        {
            keywords.Add("LIGHT_1");

            group.Material.SetFloat("_Age", Age);
        }

        if (Softness > 0.0f)
        {
            keywords.Add("LIGHT_2");

            group.Material.SetFloat("_InvFade", SgtHelper.Reciprocal(Softness));
        }

        if (StretchToObservers == true)
        {
            keywords.Add("SGT_C");
        }

        if (FadeNear == true)
        {
            keywords.Add("SGT_D");

            group.Material.SetFloat("_FadeNearRadius", FadeNearRadius);
            group.Material.SetFloat("_FadeNearScale", SgtHelper.Reciprocal(FadeNearThickness));
        }

        if (FadeFar == true)
        {
            keywords.Add("SGT_E");

            group.Material.SetFloat("_FadeFarRadius", FadeFarRadius);
            group.Material.SetFloat("_FadeFarScale", SgtHelper.Reciprocal(FadeFarThickness));
        }
    }
コード例 #14
0
ファイル: SgtSpacetime.cs プロジェクト: BackToGround/XGame
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Spacetime (Generated)", SgtHelper.ShaderNamePrefix + "Spacetime");

            ApplyMaterial();
        }

        var ambientColor      = SgtHelper.Brighten(AmbientColor, AmbientBrightness);
        var displacementColor = SgtHelper.Brighten(DisplacementColor, DisplacementBrightness);
        var higlightColor     = SgtHelper.Brighten(HighlightColor, HighlightBrightness);

        Material.renderQueue = (int)RenderQueue + RenderQueueOffset;

        Material.SetTexture("_MainTex", MainTex);
        Material.SetColor("_Color", SgtHelper.Brighten(Color, Brightness));
        Material.SetColor("_AmbientColor", ambientColor);
        Material.SetColor("_DisplacementColor", displacementColor);
        Material.SetColor("_HighlightColor", higlightColor);
        Material.SetFloat("_HighlightPower", HighlightPower);
        Material.SetFloat("_HighlightScale", HighlightScale);
        Material.SetFloat("_Tile", Tile);

        if (Displacement == DisplacementType.Pinch)
        {
            Material.SetFloat("_Power", Power);
        }

        if (Displacement == DisplacementType.Offset)
        {
            SgtHelper.EnableKeyword("SGT_A", Material);

            Material.SetVector("_Offset", Offset);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A", Material);
        }

        if (Accumulate == true)
        {
            SgtHelper.EnableKeyword("SGT_B", Material);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B", Material);
        }
    }
コード例 #15
0
    private void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Skysphere");
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
    }
コード例 #16
0
    protected override void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Accretion");
        }

        material.SetTexture("_DustTex", DustTex);
        material.SetFloat("_Twist", ReverseTwist == true ? -Twist : Twist);
        material.SetFloat("_TwistBias", TwistBias);
        material.SetFloat("_Age", Age);

        base.UpdateMaterial();
    }
コード例 #17
0
ファイル: SgtCloudsphere.cs プロジェクト: BackToGround/XGame
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Cloudsphere (Generated)", SgtHelper.ShaderNamePrefix + "Cloudsphere");

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        var renderQueue = (int)RenderQueue + RenderQueueOffset;
        var color       = SgtHelper.Brighten(Color, Brightness);

        Material.renderQueue = renderQueue;

        Material.SetColor("_Color", color);
        Material.SetTexture("_MainTex", MainTex);
        Material.SetTexture("_DepthTex", DepthTex);

        if (Fade == true)
        {
            SgtHelper.EnableKeyword("SGT_A", Material);             // Fade

            Material.SetTexture("_FadeTex", FadeTex);
            Material.SetFloat("_FadeDistanceRecip", SgtHelper.Reciprocal(FadeDistance));
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A", Material);             // Fade
        }

        if (Lit == true)
        {
            Material.SetTexture("_LightingTex", LightingTex);
        }
    }
コード例 #18
0
    public void UpdateMaterial()
    {
        // Create?
        if (generatedMaterial == null)
        {
            generatedMaterial = SgtHelper.CreateTempMaterial("Flare Material (Generated)", "Space Graphics Toolkit/SgtFlare");

            UpdateApply();
        }

        generatedMaterial.SetTexture("_MainTex", generatedTexture);

        generatedMaterial.renderQueue = (int)RenderQueue + RenderQueueOffset;

        generatedMaterial.SetInt("_ZTest", (int)ZTest);
    }
コード例 #19
0
    protected virtual void OnEnable()
    {
        Camera.onPreRender += CameraPreRender;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Shadow Layer (Generated)", SgtHelper.ShaderNamePrefix + "ShadowLayer");
        }

        if (Renderers == null)
        {
            AddRenderer(GetComponent <MeshRenderer>());
        }

        ApplyMaterial();
    }
コード例 #20
0
    public void UpdateMaterial()
    {
        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Jovian Material (Generated)", SgtHelper.ShaderNamePrefix + "Jovian");

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        Material.renderQueue = (int)RenderQueue + RenderQueueOffset;

        Material.SetTexture("_MainTex", MainTex);
        Material.SetTexture("_DepthTex", DepthTex);
        Material.SetColor("_Color", SgtHelper.Brighten(Color, Brightness));

        if (Lit == true)
        {
            Material.SetTexture("_LightingTex", LightingTex);
        }

        SgtHelper.SetTempMaterial(Material);

        if (Scattering == true)
        {
            Material.SetTexture("_ScatteringTex", ScatteringTex);

            SgtHelper.EnableKeyword("SGT_B");             // Scattering
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B");             // Scattering
        }

        UpdateMaterialNonSerialized();
    }
コード例 #21
0
    public SgtLightning Spawn()
    {
        if (Mesh != null && LifeMin > 0.0f && LifeMax > 0.0f)
        {
            var sprite = RandomSprite;

            if (sprite != null)
            {
                var lightning = SgtLightning.Create(this);
                var material  = lightning.Material;
                var uv        = SgtHelper.CalculateSpriteUV(sprite);

                if (material == null)
                {
                    material = SgtHelper.CreateTempMaterial("Lightning (Generated)", SgtHelper.ShaderNamePrefix + "Lightning");

                    lightning.SetMaterial(material);
                }

                lightning.Life = Random.Range(LifeMin, LifeMax);
                lightning.Age  = 0.0f;

                lightning.SetMesh(Mesh);

                material.SetTexture("_MainTex", sprite.texture);
                material.SetColor("_Color", SgtHelper.Brighten(RandomColor, Brightness));
                material.SetFloat("_Age", 0.0f);
                material.SetVector("_Offset", new Vector2(uv.x, uv.y));
                material.SetVector("_Scale", new Vector2(uv.z - uv.x, uv.w - uv.y));

                lightning.transform.localRotation = Random.rotation;

                return(lightning);
            }
        }

        return(null);
    }
コード例 #22
0
    protected abstract void CalculateAsteroids(out List <SgtBeltAsteroid> asteroids, out bool pool);    // pool == true when they are temporary

    protected virtual void UpdateGroupMaterial(SgtBeltGroup group)
    {
        if (group.Material == null)
        {
            group.Material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Belt");
        }

        var scale       = transform.lossyScale.x;
        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;
        var lightCount  = SgtHelper.WriteLights(Lights, 2, transform.position, null, null, group.Material);
        var shadowCount = SgtHelper.WriteShadows(Shadows, 2, group.Material);

        SgtHelper.WriteLightKeywords(Lights.Count > 0, lightCount, keywords);
        SgtHelper.WriteShadowKeywords(shadowCount, keywords);

        group.Material.renderQueue = renderQueue;
        group.Material.SetTexture("_MainTex", group.MainTex);
        group.Material.SetTexture("_HeightTex", group.HeightTex);
        group.Material.SetColor("_Color", color);
        group.Material.SetFloat("_Scale", scale);
        group.Material.SetFloat("_Age", Age);
    }
コード例 #23
0
ファイル: SgtQuads.cs プロジェクト: BackToGround/XGame
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Starfield (Generated)", ShaderName);

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        BuildMaterial();
    }
コード例 #24
0
    private void UpdateMaterial()
    {
        if (material == null)
        {
            material = SgtHelper.CreateTempMaterial(SgtHelper.ShaderNamePrefix + "Jovian");
        }

        var color        = SgtHelper.Brighten(Color, Brightness);
        var renderQueue  = (int)RenderQueue + RenderQueueOffset;
        var localToWorld = transform.localToWorldMatrix * SgtHelper.Scaling(MeshRadius * 2.0f);         // Double mesh radius so the max thickness caps at 1.0

        material.renderQueue = renderQueue;
        material.SetTexture("_MainTex", MainTex);
        material.SetColor("_Color", color);
        material.SetFloat("_Power", Power);
        material.SetFloat("_Density", Density);
        material.SetMatrix("_WorldToLocal", localToWorld.inverse);
        material.SetMatrix("_LocalToWorld", localToWorld);
        material.SetTexture("_RimLut", rimLut);
        material.SetTexture("_LightingLut", lightingLut);

        lightCount  = SgtHelper.WriteLights(Lights, 2, transform.position, transform, null, material);
        shadowCount = SgtHelper.WriteShadows(Shadows, 2, material);
    }
コード例 #25
0
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Singulairty (Generated)", SgtHelper.ShaderNamePrefix + "Singularity");

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        Material.renderQueue = (int)RenderQueue + RenderQueueOffset;

        Material.SetVector("_Center", SgtHelper.NewVector4(transform.position, 1.0f));

        Material.SetFloat("_PinchPower", PinchPower);
        Material.SetFloat("_PinchScale", SgtHelper.Reciprocal(1.0f - PinchOffset));
        Material.SetFloat("_PinchOffset", PinchOffset);

        Material.SetFloat("_HolePower", HolePower);
        Material.SetColor("_HoleColor", HoleColor);

        SgtHelper.SetTempMaterial(Material);

        if (Tint == true)
        {
            SgtHelper.EnableKeyword("SGT_A");             // Tint

            Material.SetFloat("_TintPower", TintPower);
            Material.SetColor("_TintColor", TintColor);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A");             // Tint
        }

        if (EdgeFade == EdgeFadeType.Center)
        {
            SgtHelper.EnableKeyword("SGT_B");             // Fade Center

            Material.SetFloat("_EdgeFadePower", EdgeFadePower);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B");             // Fade Center
        }

        if (EdgeFade == EdgeFadeType.Fragment)
        {
            SgtHelper.EnableKeyword("SGT_C");             // Fade Fragment

            Material.SetFloat("_EdgeFadePower", EdgeFadePower);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_C");             // Fade Fragment
        }
    }
コード例 #26
0
ファイル: SgtAtmosphere.cs プロジェクト: BackToGround/XGame
    public void UpdateMaterials()
    {
        updateMaterialsCalled = true;

        if (InnerMaterial == null)
        {
            InnerMaterial = SgtHelper.CreateTempMaterial("Atmosphere Inner (Generated)", SgtHelper.ShaderNamePrefix + "AtmosphereInner");

            if (InnerRenderers != null)
            {
                for (var i = InnerRenderers.Count - 1; i >= 0; i--)
                {
                    var innerRenderer = InnerRenderers[i];

                    if (innerRenderer != null)
                    {
                        SgtHelper.AddMaterial(innerRenderer, InnerMaterial);
                    }
                }
            }

            UpdateTerrainMaterials();
        }

        if (OuterMaterial == null)
        {
            OuterMaterial = SgtHelper.CreateTempMaterial("Atmosphere Outer (Generated)", SgtHelper.ShaderNamePrefix + "AtmosphereOuter");

            if (Outers != null)
            {
                for (var i = Outers.Count - 1; i >= 0; i--)
                {
                    var outer = Outers[i];

                    if (outer != null)
                    {
                        outer.SetMaterial(OuterMaterial);
                    }
                }
            }
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        InnerMaterial.renderQueue = renderQueue;
        OuterMaterial.renderQueue = renderQueue;

        InnerMaterial.SetColor("_Color", color);
        OuterMaterial.SetColor("_Color", color);

        InnerMaterial.SetTexture("_DepthTex", InnerDepthTex);
        OuterMaterial.SetTexture("_DepthTex", OuterDepthTex);

        if (Lit == true)
        {
            InnerMaterial.SetTexture("_LightingTex", LightingTex);
            OuterMaterial.SetTexture("_LightingTex", LightingTex);

            if (Scattering == true)
            {
                OuterMaterial.SetTexture("_ScatteringTex", ScatteringTex);
                OuterMaterial.SetFloat("_ScatteringMie", ScatteringMie);
                OuterMaterial.SetFloat("_ScatteringRayleigh", ScatteringRayleigh);

                SgtHelper.EnableKeyword("SGT_B", OuterMaterial);                 // Scattering

                if (GroundScattering == true)
                {
                    InnerMaterial.SetTexture("_ScatteringTex", ScatteringTex);
                    InnerMaterial.SetFloat("_ScatteringMie", ScatteringMie);
                    InnerMaterial.SetFloat("_ScatteringRayleigh", ScatteringRayleigh);

                    SgtHelper.EnableKeyword("SGT_B", InnerMaterial);                     // Scattering
                }
                else
                {
                    SgtHelper.DisableKeyword("SGT_B", InnerMaterial);                     // Scattering
                }
            }
            else
            {
                SgtHelper.DisableKeyword("SGT_B", InnerMaterial);                 // Scattering
                SgtHelper.DisableKeyword("SGT_B", OuterMaterial);                 // Scattering
            }
        }

        SgtHelper.SetTempMaterial(InnerMaterial, OuterMaterial);

        UpdateMaterialNonSerialized();
    }
コード例 #27
0
    public virtual void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Ring (Generated)", ShaderName);

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        var color       = SgtHelper.Brighten(Color, Brightness);
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        Material.renderQueue = renderQueue;

        Material.SetColor("_Color", color);
        Material.SetTexture("_MainTex", MainTex);

        if (Detail == true)
        {
            SgtHelper.EnableKeyword("SGT_B", Material);             // Detail

            Material.SetTexture("_DetailTex", DetailTex);
            Material.SetVector("_DetailScale", new Vector2(DetailScaleX, DetailScaleY));
            Material.SetFloat("_DetailTwist", DetailTwist);
            Material.SetFloat("_DetailTwistBias", DetailTwistBias);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B", Material);             // Detail
        }

        if (Fade == true)
        {
            SgtHelper.EnableKeyword("SGT_C", Material);             // Fade

            Material.SetTexture("_FadeTex", FadeTex);
            Material.SetFloat("_FadeDistanceRecip", SgtHelper.Reciprocal(FadeDistance));
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_C", Material);             // Fade
        }

        if (Lit == true)
        {
            Material.SetTexture("_LightingTex", LightingTex);
        }

        if (Scattering == true)
        {
            SgtHelper.EnableKeyword("SGT_A", Material);             // Scattering

            Material.SetFloat("_ScatteringMie", ScatteringMie * ScatteringMie);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A", Material);             // Scattering
        }

        UpdateMaterialNonSerialized();
    }
コード例 #28
0
    public void UpdateMaterial()
    {
        updateMaterialCalled = true;

        if (Material == null)
        {
            Material = SgtHelper.CreateTempMaterial("Aurora (Generated)", SgtHelper.ShaderNamePrefix + "Aurora");

            if (Models != null)
            {
                for (var i = Models.Count - 1; i >= 0; i--)
                {
                    var model = Models[i];

                    if (model != null)
                    {
                        model.SetMaterial(Material);
                    }
                }
            }
        }

        var color       = SgtHelper.Premultiply(SgtHelper.Brighten(Color, Brightness));
        var renderQueue = (int)RenderQueue + RenderQueueOffset;

        if (Material.renderQueue != renderQueue)
        {
            Material.renderQueue = renderQueue;
        }

        Material.SetColor("_Color", color);
        Material.SetTexture("_MainTex", MainTex);
        Material.SetFloat("_RadiusMin", RadiusMin);
        Material.SetFloat("_RadiusSize", RadiusMax - RadiusMin);

        SgtHelper.SetTempMaterial(Material);

        if (FadeNear == true)
        {
            SgtHelper.EnableKeyword("SGT_A");             // FadeNear

            Material.SetTexture("_FadeNearTex", FadeNearTex);
            Material.SetFloat("_FadeNearRadius", FadeNearRadius);
            Material.SetFloat("_FadeNearScale", SgtHelper.Reciprocal(FadeNearThickness));
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_A");             // FadeNear
        }

        if (Anim == true)
        {
            SgtHelper.EnableKeyword("SGT_B");             // Anim

            Material.SetFloat("_AnimOffset", AnimOffset);
        }
        else
        {
            SgtHelper.DisableKeyword("SGT_B");             // Anim
        }
    }