简单说就是在meta pass计算

albedo,emission,specular

3个值

光照烘焙,gi计算间接光照时都会用到这些值

Shader "MyShader/SampleLightmap"
{
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _ LIGHTMAP_ON
#include"Lighting.cginc" struct VertexData
{
float4 pos:POSITION;
float2 uv:TEXCOORD0;
float2 uv1:TEXCOORD1;
}; struct V2F
{
float4 pos:SV_POSITION;
float2 uv:TEXCOORD0;
#if defined(LIGHTMAP_ON)
float2 uv1:TEXCOORD1;
#endif
}; V2F vert(VertexData v)
{
V2F res;
res.pos = UnityObjectToClipPos(v.pos);
res.uv = v.uv;
#if defined(LIGHTMAP_ON)
res.uv1 = v.uv1 * unity_LightmapST.xy + unity_LightmapST.zw;
#endif
return res;
} fixed4 frag(V2F i) :SV_TARGET
{
fixed4 col = fixed4(1,0,0,1);
#if defined(LIGHTMAP_ON)
col.rgb = DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, i.uv1));
#endif
return col;
}
ENDCG
} Pass
{
Tags{ "LightMode" = "Meta" } CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityStandardInput.cginc"
#include "UnityMetaPass.cginc" struct V2F
{
float4 pos:SV_POSITION;
float4 uv:TEXCOORD0;
}; V2F vert(VertexInput v)
{
V2F o;
o.pos = UnityMetaVertexPosition(v.vertex, v.uv1.xy, v.uv2.xy, unity_LightmapST, unity_DynamicLightmapST);
o.uv = TexCoords(v);
return o;
} fixed4 frag(V2F i) :SV_TARGET
{
UnityMetaInput o;
UNITY_INITIALIZE_OUTPUT(UnityMetaInput, o);
o.Albedo = fixed3(1, 1, 0); //这里只是将漫反射添加到烘焙贴图中去
                    o.Emission = xxxx;
                    o.SpecularColor = xxxx;

return UnityMetaFragment(o);
}
ENDCG
}
}
}

  

meta pass

https://blog.csdn.net/wodownload2/article/details/94554057

https://blog.csdn.net/cgy56191948/article/details/100766303

unity meta pass的更多相关文章

  1. unity, multi pass shader中的surface pass

    今天尝试写一个multi pass shader,但其中有一个Pass是surface pass,总是莫名奇妙地报错.后来看到下面帖子: http://forum.unity3d.com/thread ...

  2. Unity Shader入门精要学习笔记 - 第9章 更复杂的光照

    转载自 冯乐乐的<Unity Shader入门精要> Unity 的渲染路径 在Unity里,渲染路径决定了光照是如何应该到Unity Shader 中的.因此,如果要和光源打交道,我们需 ...

  3. 聊聊如何正确向Compute Shader传递数组

    0x00 前言 前一段时间去英国出差,发现Unity Brighton 办公室的手绘地图墙很漂亮,在这里分享给大家. 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代 ...

  4. surface shader相关参数,命令

    https://docs.unity3d.com/Manual/SL-SurfaceShaders.html 说明: 注意下surfaceshader相关开关选项,input结构体全部可用参数 goo ...

  5. Understanding Python metaclasses

    转载:https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing article ...

  6. 理解Python元类(转)

    add by zhj:先收藏了,有时间看,图倒是不少,可以配合stackover flow上那篇文章一起看 原文:http://blog.ionelmc.ro/2015/02/09/understan ...

  7. Python的元类

    1.用元类验证子类 每当我们定义新类的时候,元类就会运行雅正代码,以确保这个新类符合规定的规范. Python系统把子类的class语句处理完毕,就会调用元类的 __new__ 方法.元类可以通过 _ ...

  8. 类和对象的创建过程(元类,__new__,__init__,__call__)

    一. type() 1.创建类的两种方式 方式一 class MyClass(object): def func(self,name): print(name) myc = MyClass() pri ...

  9. django用户认证系统——拓展 User 模型

    Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...

  10. python 开发练习之 监控

    本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...

随机推荐

  1. 文字icon

    1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...

  2. 找出一组数中出现次数最多的数(csp201312-1)

    问题描述:找出一组数字出现次数最多的数,如果有多个这样的数,输出其中最小的一个. 算法:sort排序,遍历数组,每遍历一个数,查出它已经出现的次数. 代码: #include<bits/stdc ...

  3. python GIL解释器

    1.GIL是什么? GIL全称Global Interpreter Lock,即全局解释器锁. 作用就是,限制多线程同时执行,保证同一时间内只有一个线程在执行. GIL并不是Python的特性,它是在 ...

  4. monkey自动化脚本

    获取第三方安装包:手机需root,adb shell>cd data/app>ls(获取相应app信息)>cd +相应app信息>base.apk(安装包) 获取第三方安装包: ...

  5. DOM状态监听(观察者模式)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. class的知识点

    1. 在class类中,定义方法在constructor里面和外面的区别?? 定义在constructor里面是原型方法,定义在外边是实例方法.  里面的原型方法在new的时候会改变this指向 2. ...

  7. dcat-admin在弹框中使用grid的编辑框不提示也不报错

    显示效果 #版本:2.1.5-beta #点击编辑时没有反应,其实它已经把编辑框显示出来了,只是在当前这个弹框的后面,我们看不见,这样你可以在自己的项目中把弹框挪开或在F12中html搜索应该显示的代 ...

  8. 【C++】fstream文件操作

    C语言使用FILE对文件进行操作,常用到的函数有fopen().freopen().fread().fwrite().fclose()等,分别用来打开文件.读写文件.关闭文件. C++可以使用fstr ...

  9. vue重置data数据为初始状态

    vue中: this.$data 获取当前状态下的data this.$options.data() 获取该组件初始状态下的data 所以,下面就可以将初始状态的data复制到当前状态的data,实现 ...

  10. XMACL

    访问控制策略描述语言 模型 组合算法(解决策略冲突):拒绝优先算法.许可优先算法.首先应用算法.唯一应用算法 目标(资源.主体.动作.环境)+效用(Permit/Deny)+条件 (结果是True/F ...