Unity混合天空盒
对于不同天气下天空盒的实现。
天空盒时通过天空盒材质更改实现的,新建材质,选择shader/skybox/6sided,然后添加六个天空盒贴图就可以实现天空盒,如果想实现天气变化则需要至少两套贴图,并需要实现渐变。此时需要新建着色器shader。Create/shader/unityshader然后双击新建的shader,添加如下代码,然后将此shader添加到相应材质上,就会看到相应材质有12个贴图槽,即两套天空盒贴图,拖入相应的贴图,通过材质的setfloat方法控制参数_Blend的值即可实现渐变,如第二段代码所示,也可加入灯光强度的设置,以达到相关效果。
Shader "Skybox/Blended" {
Properties{
_Tint("Tint Color", Color) = (., ., ., .)
_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(,,,[_Blend]) combine texture lerp(constant) previous }
}
Pass{
SetTexture[_BackTex]{ combine texture }
SetTexture[_BackTex2]{ constantColor(,,,[_Blend]) combine texture lerp(constant) previous }
}
Pass{
SetTexture[_LeftTex]{ combine texture }
SetTexture[_LeftTex2]{ constantColor(,,,[_Blend]) combine texture lerp(constant) previous }
}
Pass{
SetTexture[_RightTex]{ combine texture }
SetTexture[_RightTex2]{ constantColor(,,,[_Blend]) combine texture lerp(constant) previous }
}
Pass{
SetTexture[_UpTex]{ combine texture }
SetTexture[_UpTex2]{ constantColor(,,,[_Blend]) combine texture lerp(constant) previous }
}
Pass{
SetTexture[_DownTex]{ combine texture }
SetTexture[_DownTex2]{ constantColor(,,,[_Blend]) combine texture lerp(constant) previous }
}
}
Fallback "Skybox/6 Sided",
}
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;
}
}
Unity混合天空盒的更多相关文章
- Android和Unity混合开发——解决方案
按这篇文章来做 http://blog.csdn.net/a369414641/article/details/53436477 要注意的地方 1.app是Android Libray,否则无法打包出 ...
- unity skybox天空盒分享无需下载
大概有几十种还是100种,具体忘了 反正很多就是了(哈哈哈哈哈!!!!!!!!!!!!) 老铁们, 多谢支持,谢谢大家. 根据需要使用,下面会分享出下载链接: 链接:https://pan.baidu ...
- 【Unity】打包安卓APK常见问题
问题:unity error invalid command android 原因:Android版本较新,Unity版本太旧(如4.X),Unity打包APK时调用Android工具使用的命令已被安 ...
- Unity3D脚本中文系列教程(十)
http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...
- Unity3D脚本学习——运行时类
AssetBundle 类,继承自Object.AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们.AssetBundles通过BuildPipeline.BuildAss ...
- 美轮美奂宇宙星空制作神器Spacescape
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46444569 作者:car ...
- unity4.3.4firedrillonline项目首次整合问题总结
零.资源导入后把所有资源模型拖到场景中去,并reset Transform,使场景展现原有样子. 一.资源导入之后发现项目场景是黑的,添加灯光之后场景中大部分仍然是黑的(并没有光照的效果) 可能原因: ...
- Unity iOS混合开发界面切换思路
Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...
- 解读Unity中的CG编写Shader系列七(不透明度与混合)
转自http://www.itnose.net/detail/6098539.html 1.不透明度 当我们要将两个半透的纹理贴图到一个材质球上的时候就遇到混合的问题,由于前面的知识我们已经知道了片段 ...
随机推荐
- 对象实例Vue
var vm = new Vue({ el:'#app', data:{}, //数据 methods:{}, //方法调用 filters:{}, //私有过滤器 directives:{}, // ...
- 在MacOS下使用sqlalchemy 连接sqlserver2012 数据库
在MacOS下使用sqlalchemy 连接sqlserver 数据库 前言 最近有要求,要将数据库换成巨硬家的sqlserver 2012 因为在网上苦苦找不到sqlalchemy 配置连接SqlS ...
- windows核心编程 第5章job lab示例程序 解决小技巧
看到windows核心编程 第5章的最后一节,发现job lab例子程序不能在我的系统(win8下)正常运行,总是提示“进程在一个作业里” 用process explorer程序查看 ...
- 移动端适配 rem 设置
refresh(); window.onresize = function(){ setTimeout(function(){ refresh(); },10) ...
- Python 命令行参数解析工具 argparse
为什么需要argparse 开门见山,举一个简易计算器代码的例子,其中sys.argv用来读取脚本执行时后面传入的参数. def calculator(x, y, operation): if &qu ...
- Java集合总结—再也不怕面试问到集合了
Java集合总结 1.常见的集合 Map接口和Collection接口是所有集合框架的父接口: Collection接口的子接口包括:Set接口和List接口 Map接口的实现类主要有:HashMap ...
- 用深度学习做命名实体识别(七)-CRF介绍
还记得之前介绍过的命名实体识别系列文章吗,可以从句子中提取出人名.地址.公司等实体字段,当时只是简单提到了BERT+CRF模型,BERT已经在上一篇文章中介绍过了,本文将对CRF做一个基本的介绍.本文 ...
- 落谷P3941 入阵曲
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到 ...
- SQL SERVER 还原误操作导致还原无法停止,处理办法
昨天遇到运行库不知道单位哪个小伙子,把数据库还原了,导致单位业务全部瘫痪,主数据库一直显示正在还原,真的是不敢动,经过多方寻找,找到此脚本-------------------------数据库还原日 ...
- bs4 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0'
Problem: 写爬虫时,出现了以下错误: 意思是Unicode编码错误,gbk编解码器不能编码\xa0字符. 爬取信息包含中文,使用BeautifulSoup库解析网页,用get_text()方法 ...