Unity昼夜变换(lightmap+天空球)

烘焙出两组lightmap,并在shader中进行采样;最后插值输出混合结果。天空球也是同理可得。
摘要由CSDN通过智能技术生成

1. 效果图

 2. 原理

烘焙出两组lightmap,并在shader中进行采样;最后插值输出混合结果。天空球也是同理可得。

3. 代码

3.1 shader

Shader "Unlit/lightMapChanging"
{
Properties {
 [NoScaleOffset]_SkyCube ("天空球", Cube) = "grey" {}
 _SkyCube2 ("天空球2", Cube) = "grey" {}
_Rotation ("水平旋转", Range(0.0, 360.0)) = 0.0
 [HDR]_TintCol ("染色", Color) = (1.0, 1.0, 1.0, 1.0)
 }

SubShader {
  Tags {
"Queue"="Background"        // 调整渲染顺序
  "RenderType"="Background"   // 渲染类型改为背景
  "PreviewType"="Skybox"    // 预览类型改为天空球
}
  Cull Off
  ZWrite Off
        
Pass {
  Name "SKY_FORWARD"
  CGPROGRAM
  #pragma vertex vert
  #pragma fragment frag
  #include "UnityCG.cginc"
// 参数
  uniform samplerCUBE _Sk
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款功能强大的游戏引擎,允许开发者用脚本进行灯光贴图操作。 在Unity中,灯光贴图(lightmap)是指一种预计算的技术,用于模拟光源对场景的影响。通过将灯光和阴影信息渲染到一张纹理上,然后应用到场景中的物体上,可以实现更加真实的光照效果。 在使用脚本进行灯光贴图操作时,我们可以使用Unity提供的Lighting类中的相关函数和属性来获取和设置灯光贴图的参数。 首先,我们可以使用Lightmapping类中的静态函数之一来生成灯光贴图。例如,调用Lightmapping.BakeAsync函数可以进行异步地灯光贴图烘焙操作,该函数将会在后台进行烘焙过程,不会阻塞主线程。另外,还可以使用Lightmapping.Bake函数进行同步的灯光贴图烘焙操作。 在灯光贴图完成后,我们可以通过LightmapSettings类来获取和设置灯光贴图的参数。例如,可以使用LightmapSettings.lightmaps属性来获取当前场景中的灯光贴图数组。每个灯光贴图都包含了光照信息以及阴影信息。我们可以通过修改该数组中的元素来改变灯光的状态。 此外,还可以使用LightmapSettings类中的其他属性和函数来进一步操作灯光贴图,如LightmapSettings.lightmapsMode用于设置灯光模式、LightmapSettings.bakedColorSpace用于设置烘焙颜色空间等。 总结起来,Unity中可以通过脚本进行灯光贴图操作,通过调用Lightmapping类和LightmapSettings类中的相关函数和属性,可以生成、获取和设置灯光贴图,实现更加真实的光照效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值