zoukankan      html  css  js  c++  java
  • Unity混合天空盒

    对于不同天气下天空盒的实现。

    天空盒时通过天空盒材质更改实现的,新建材质,选择shader/skybox/6sided,然后添加六个天空盒贴图就可以实现天空盒,如果想实现天气变化则需要至少两套贴图,并需要实现渐变。此时需要新建着色器shader。Create/shader/unityshader然后双击新建的shader,添加如下代码,然后将此shader添加到相应材质上,就会看到相应材质有12个贴图槽,即两套天空盒贴图,拖入相应的贴图,通过材质的setfloat方法控制参数_Blend的值即可实现渐变,如第二段代码所示,也可加入灯光强度的设置,以达到相关效果。

    Shader "Skybox/Blended" {
        Properties{
            _Tint("Tint Color", Color) = (.5, .5, .5, .5)
            _Blend("Blend", Range(0.0,1.0)) = 0.5
            _FrontTex("Front (+Z)", 2D) = "white" {}
        _BackTex("Back (-Z)", 2D) = "white" {}
        _LeftTex("Left (+X)", 2D) = "white" {}
        _RightTex("Right (-X)", 2D) = "white" {}
        _UpTex("Up (+Y)", 2D) = "white" {}
        _DownTex("Down (-Y)", 2D) = "white" {}
        _FrontTex2("2 Front (+Z)", 2D) = "white" {}
        _BackTex2("2 Back (-Z)", 2D) = "white" {}
        _LeftTex2("2 Left (+X)", 2D) = "white" {}
        _RightTex2("2 Right (-X)", 2D) = "white" {}
        _UpTex2("2 Up (+Y)", 2D) = "white" {}
        _DownTex2("2 Down (-Y)", 2D) = "white" {}
        }
    
            SubShader{
            Tags{ "Queue" = "Background" }
            Cull Off
            Fog{ Mode Off }
            Lighting Off
            Color[_Tint]
            Pass{
            SetTexture[_FrontTex]{ combine texture }
            SetTexture[_FrontTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
            Pass{
            SetTexture[_BackTex]{ combine texture }
            SetTexture[_BackTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
            Pass{
            SetTexture[_LeftTex]{ combine texture }
            SetTexture[_LeftTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
            Pass{
            SetTexture[_RightTex]{ combine texture }
            SetTexture[_RightTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
            Pass{
            SetTexture[_UpTex]{ combine texture }
            SetTexture[_UpTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
            Pass{
            SetTexture[_DownTex]{ combine texture }
            SetTexture[_DownTex2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
        }
        }
    
            Fallback "Skybox/6 Sided", 1
    }
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class SetWeather : MonoBehaviour {
    
        public Material sky;
        public Light sun;
    
        private float cloudValue = 0f;
        private float sunIntensity;
    
        private void SetOvercast(float value)
        {
            sky.SetFloat("_Blend", value);
           // sun.intensity = sunIntensity - (sunIntensity * value);
        }
        // Use this for initialization
        void Start () {
            sunIntensity = sun.intensity;
        }
        
        // Update is called once per frame
        void Update () {
            SetOvercast(cloudValue);
            cloudValue += 0.005f;
        }
    }
  • 相关阅读:
    开启text汇聚排序
    sshpass安装使用
    pinpoint初始化hbase脚本报错
    ORA-19606: Cannot copy or restore to snapshot control file
    standby_file_management参数为MANUAL导致添加数据文件错误
    dataguard从库移动数据文件
    redis恢复(aof)
    redis集群部署+节点端口修改+数据恢复
    oracle传输表空间相关
    dataguard主库删除归档日志后从库恢复的方法
  • 原文地址:https://www.cnblogs.com/llstart-new0201/p/7679376.html
Copyright © 2011-2022 走看看