小记一下用法与问题,时更

surface shader就不用操心了,自带lightmap计算

主要是vertex fragment shader部分

Unity5 bake light map有三种情况:

1.Non-directional

2.directional

3.directional specular

Non-directional

这种计算最为简单,消耗也最少,

注意不会烘焙上normal map的信息,只是模型顶点法线计算得的diffuse结果

首先需要声明lightmap变量

sampler2D unity_Lightmap;

float4 unity_LightmapST;

重复声明异常(unity 5.4),在UnityCG.cginc已经声明过了,就不用再声明

需要在appdata中用一个新的坐标变量来计算lightmap的uv,否则开始可能正确,但是博主在把模型generate lightmap uv后再烘焙,uv全部都是错的了。

        structappdata {

            float4vertex : POSITION;

            float4tangent : TANGENT;

            float3normal : NORMAL;

            float2texcoord : TEXCOORD0;

            float2texcoord2 : TEXCOORD1;

            fixed4color : COLOR;

        };

然后vertex部分的struct声明(名字随意)

float2 uv_lightmap : TEXCOORD1;

vertex shader生成计算lightmap uv

o.uv_lightmap =v.texcoord2.xy *unity_LightmapST.xy + unity_LightmapST.zw;

在fragment shader中获取lightmap数据的方法,得到的是三元向量,如果未烘焙默认值为0:

DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap,i.uv_lightmap))

判断是否烘焙,这样就可以分为两种算法,没有lightmap就实时算,有lightmap就用

        #ifdefLIGHTMAP_ON

DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap,i.uv_lightmap))。。。。lightmap相关计算

        #endif

烘焙lightmap后,shader获取的阴影自阴影信息为1,光照方向为0(与光的Baking模式设置有关,realtime(有)/mixed(有)/baked(无))

directional specular

这种会产生两种lightmap,一种是带normal map的diffuse信息也就是普通的light map,一种是direction map也就是光照方向,我们可以使用烘焙的光照方向来计算specular及其他

应该是这样可以得到direction map,但是博主试过会报错

UNITY_SAMPLE_TEX2D_SAMPLER(unity_LightmapInd,unity_Lightmap,1);

 ---wolf96 2017/1/11

转 lightmap的更多相关文章

  1. Unity Lightmap动态加载研究

    什么情况下需要Lightmap? 移动平台上目前暂时还不能开实时光影效果,会卡成幻灯片.所以就需要将光影烘焙到贴图上. 什么情况下需要动态加载Lightmap? 1.当项目抛弃了Unity的多场景模式 ...

  2. 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影

    最近在做unity shader forge和marmoset的优化,TA那边遇到了一个阴影显示的问题,具体如下:   在Forward Rendering状态下,静态场景使用了是shader for ...

  3. world machine, 输出lightmap

    一,输出黑白lightmap: 二,输出彩色lightmap: 需要注意的是:当输出黑白lightmap时,输出设备要用Height Output:当输出彩色lightmap时,输出设备要用Bitma ...

  4. 无限大地图:lightmap拆分

    无缝地图涉及到地形.物件的分块加载,同样,lightmap也需要动态加载.而场景烘焙时,所有物件都是一起烘焙的,那怎么把某些物件指定烘焙到某一张lightmap贴图中?网上找了很久,也没有看到具体的实 ...

  5. Diffuse贴图+Lightmap+Ambient

    shader里面光照计算毕竟还是比较复杂的,于是想到下面的性能相对好一些的方案. 美术提供一张Diffuse贴图,一张lightmap贴图,然后在应用一个自定义的全局的环境光效果,来模拟静态的光照. ...

  6. Unity3D之Lightmap详解

    作者:李志健 Unity 完全集成了光照贴图,可以通过编辑器创建完整的光照贴图,你完全不用担心,所有材质会自动获得光照贴图.光照贴图的意思是,所有灯光的特性将被直接映射到Beast lightmapp ...

  7. 解决Lightmap在PC上与ios和Android上表现不同的问题

    Lightmap在PC上与android和ios的区别以及解决方法 1.  问题描述 相信很多人碰到过Lightmap的一些问题: 烘培好Lightmap之后,在PC上看起来相当给力,而打包成ios或 ...

  8. Unity5 Shader Stripping 导致 LightMap 全部丢失的解决方法

    当使用 SceneManager.LoadScene 的时候,会自动载入LightMap 和 NavMesh的数据.然后再对MeshRender 进行指定 LightMapIndex 以及 Light ...

  9. unity lightmap

    indirect light /shadow /ao light probe for dynamic 或者细小琐碎的物体 ========================== unity2018.3  ...

随机推荐

  1. Numpy 矩阵

    矩阵定义在NumPy中,矩阵是ndarray的子类,可以由专用的字符串格式来创建 1. 创建矩阵mat函数创建矩阵(mat函数创建矩阵时,若输入已为matrix或ndarray对象,则不会为它们创建副 ...

  2. Python Selenium 常用方法总结

    selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url  实例:driver.current_url    2.获取元素坐标 ...

  3. 前端框架VUE----webpack打包工具的使用

    在这里我仅仅的是对webpack做个讲解,webpack这个工具非常强大,解决了我们前端很繁琐的一些工具流程繁琐的事情.如果感兴趣的同学,还是看官网吧. 中文链接地址:https://www.webp ...

  4. mycat高可用集群搭建

    本文来源于:https://blog.csdn.net/u012758088/article/details/78741567 Mycat 本身是无状态的,可以用 HAProxy 或四层交换机等设备组 ...

  5. oracle 11g亿级复杂SQL优化一例(数量级性能提升)

    自从16年之后,因为工作原因,项目中就没有再使用oracle了,最近最近支持一个项目,又要开始负责这块事情了.最近在跑性能测试,配置全部调好之后,不少sql还存在性能低下的问题,主要涉及执行计划的不合 ...

  6. maven-shade-plugin插件

    maven-shade-plugin主要是maven-assembly-plugin的后继者,用来将一个自启动jar项目的依赖打包到一个大的jar中,比如dubbo就是这么做的.具体可参考http:/ ...

  7. oracle审计例子

    1.数据库开启审计alter system set audit_trail=db,extended scope=spfile;shutdown immediatestartup 2.对某个表进行审计c ...

  8. 启动Activiti项目报错:org.activiti.engine.ActivitiObjectNotFoundException: no deployed process definition found with id '22501'

    背景 启动activiti项目时,出现错误org.activiti.engine.ActivitiObjectNotFoundException: no deployed process defini ...

  9. Bootstrap3基础 pagination 分页按钮 简单示例

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  10. Restful framework【第一篇】RESTful 规范

    什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审 ...