这一组Vector4数组如下: 2. 光照探针 unity中提供了Light Probe,即光照探针,来提前把光照信息烘焙到探针球里,这样物体进入探针区域后,通过取出影响物体的所有探针球,来计算出SH光照。 这是一种比较节省性能的做法。shader中计算SH光照可调用方法half3 SampleSH(half3 worldNormal); 效果如下: https://www.cnblogs...
烘焙数据包括:探针位置、球谐函数 (SH) 系数和四面体曲面细分。 可以在运行时修改系数。还可以使用LightmapSettings.lightProbes将整个 LightProbes 对象交换到不同的预烘焙对象。 另请参阅:LightmapSettings类、Renderer.useLightProbes 属性。 变量 bakedProbes烘焙光照探针的系数。
sh球谐光照内置实现(light probe的probe) 在forwardbase实现; 造轮子实现: half4 frag (v2f i) : SV_Target { half3 normal_dir = normalize(i.normal_world); half3 normaldata = UnpackNormal(tex2D(_NormalMap,i.uv)); normaldata.xy = normaldata.xy* _NormalIntensity; half3 tangent_dir = norma...
将Light Probes 属性设置为 Use Proxy Volume 时,游戏对象必须已连接__光照探针代理体__ (LPPV) 组件。可以在同一游戏对象上添加 LPPV 组件,也可通过 Proxy Volume Override 属性使用(借用)来自另一个游戏对象的 LPPV 组件。如果 Unity 无法在当前游戏对象或 Proxy Volume Override 游戏对象中找到 LPPV 组件,则会...
直接光用了GGX specular+lambert diffuse,间接光用cubemamp做GI Specular,用SH probe做GI diffuse。对于建筑来是,出于性能考虑,低端会简化一些光照的部分,就是刚才说的Shader LOD。直接光其实会在远景用shadowmask,直接光不会烘焙进lightmap,直接光用纯动态的光照,间接光用的是IBLcubbmap+GPU bake的lightmap。
L1:点击渲染时,光照探针将与光照贴图一起渲染。此选项提供卓越的烘焙性能,并保证探针照明与光照贴图匹配。结果存储为 L1 球谐函数(常规着色器仍可使用)。通过使用Bakery shader中的 Non-Linear Light Probe SH 选项可以进一步改进结果。 界面 资产UV处理
(1)lightmap对象不会从SH光源获得光照。 (2)在着色器中使用OnlyDirectional作为该pass的Tag值时 ,前向渲染的Base Pass仅渲染主方向光、环境光、光照探针(lightprobe)和光照纹理,SH和顶点光不包括在该Base Pass数据中。因为我们希望环境光和自发光计算一次即可; ...
L1:点击染时:光照探针将与光照贴图一起染。此选项提供卓越的烘焙性能并保证探针照明与光照贴图匹配。结果存储为 L1 球谐函数(常规着色器仍可使用)。通过使用 Bakery shader 中的 Non-Linear Light Probe SH 选项可以进一步改进结果。 资产UV处理: Don’tchage:不要改变: 不要碰资产 ...
Light Probe: 对于GI来说,不管是预计算GI与烘培GI,都不会对非静态模型计算间接反射,光探头的加入,可以使非静态模型得到周围静态模型的幅射光,主要技术原理使用一种球谐光照的技术,注意light probe一般不会对静态模型有影响,你看到的影响,只是因为非静态模型的颜色变化大造成的反差。
1. 漫反射:AO贴图、SH(球谐光照)、LightProbe(光照探针)、MatCap 2. 镜面反射:IBL(CubeMap、全景图)、ReflectProbe反射探针、菲涅尔效果、MatCap 球谐光照:三阶球谐 float3CustomSH3(float3normal_dir){float4normalForSH=float4(normal_dir,1.0);//SHEvalLinearL0L1half3x;x.r=dot(custom_SHAr,normalForSH)...