转 lightmap
2021-06-06 07:10
标签:方向 不用 amp 实时 一个 bsp pos -- strong 小记一下用法与问题,时更 surface shader就不用操心了,自带lightmap计算 主要是vertex fragment shader部分 Unity5 bake light map有三种情况: 1.Non-directional 2.directional 3.directional specular 这种计算最为简单,消耗也最少, 注意不会烘焙上normal map的信息,只是模型顶点法线计算得的diffuse结果 首先需要声明lightmap变量 重复声明异常(unity 5.4),在UnityCG.cginc已经声明过了,就不用再声明 需要在appdata中用一个新的坐标变量来计算lightmap的uv,否则开始可能正确,但是博主在把模型generate lightmap uv后再烘焙,uv全部都是错的了。 然后vertex部分的struct声明(名字随意) vertex shader生成计算lightmap uv 在fragment shader中获取lightmap数据的方法,得到的是三元向量,如果未烘焙默认值为0: 判断是否烘焙,这样就可以分为两种算法,没有lightmap就实时算,有lightmap就用 这种会产生两种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 标签:方向 不用 amp 实时 一个 bsp pos -- strong 原文地址:http://www.cnblogs.com/rexzhao/p/7339778.html
Non-directional
sampler2D unity_Lightmap;
float4 unity_LightmapST;
structappdata {
float4vertex : POSITION;
float4tangent : TANGENT;
float3normal : NORMAL;
float2texcoord : TEXCOORD0;
float2texcoord2 : TEXCOORD1;
fixed4color : COLOR;
};
float2 uv_lightmap : TEXCOORD1;
o.uv_lightmap =v.texcoord2.xy *unity_LightmapST.xy + unity_LightmapST.zw;
DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap,i.uv_lightmap))
#ifdefLIGHTMAP_ON
DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap,i.uv_lightmap))。。。。lightmap相关计算
#endif
烘焙lightmap后,shader获取的阴影自阴影信息为1,光照方向为0(与光的Baking模式设置有关,realtime(有)/mixed(有)/baked(无))directional specular
上一篇:PhpStorm10.0破解方法
下一篇:1.AngularJS 模块