unity meta pass
简单说就是在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的更多相关文章
- unity, multi pass shader中的surface pass
今天尝试写一个multi pass shader,但其中有一个Pass是surface pass,总是莫名奇妙地报错.后来看到下面帖子: http://forum.unity3d.com/thread ...
- Unity Shader入门精要学习笔记 - 第9章 更复杂的光照
转载自 冯乐乐的<Unity Shader入门精要> Unity 的渲染路径 在Unity里,渲染路径决定了光照是如何应该到Unity Shader 中的.因此,如果要和光源打交道,我们需 ...
- 聊聊如何正确向Compute Shader传递数组
0x00 前言 前一段时间去英国出差,发现Unity Brighton 办公室的手绘地图墙很漂亮,在这里分享给大家. 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代 ...
- surface shader相关参数,命令
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html 说明: 注意下surfaceshader相关开关选项,input结构体全部可用参数 goo ...
- Understanding Python metaclasses
转载:https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing article ...
- 理解Python元类(转)
add by zhj:先收藏了,有时间看,图倒是不少,可以配合stackover flow上那篇文章一起看 原文:http://blog.ionelmc.ro/2015/02/09/understan ...
- Python的元类
1.用元类验证子类 每当我们定义新类的时候,元类就会运行雅正代码,以确保这个新类符合规定的规范. Python系统把子类的class语句处理完毕,就会调用元类的 __new__ 方法.元类可以通过 _ ...
- 类和对象的创建过程(元类,__new__,__init__,__call__)
一. type() 1.创建类的两种方式 方式一 class MyClass(object): def func(self,name): print(name) myc = MyClass() pri ...
- django用户认证系统——拓展 User 模型
Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...
- python 开发练习之 监控
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...
随机推荐
- 对称加密、非对称加密 与 HTTPS
一.对称加密(Symmetric Cryptography)对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key). ...
- js 对象命名
JS 标识符的命名规则,即变量的命名规则: 标识符只能由字母.数字.下划线和'$'组成 数字不可以作为标识符的首字符 对象属性的命名规则 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括 ...
- 4、kubesphere环境安装
安装步骤 选择4核8G(master).8核16G(node1).8核16G(node2) 三台机器,按量付费进行实验,CentOS7.9 安装Docker 安装Kubernetes 安装KubeSp ...
- 在Github上搭建个人主页
最近试着在github上搭建个人主页,没用github给的模板,用的是自己在网上找到那种类似个人主页的模板,到时候直接上传到仓库里就行了 首先先创建仓库,点击右上角的加号,选择New reposito ...
- [737] Interlude OpCodez
[737] Interlude Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 RequestEnterWorld ...
- Hadoop环境的搭建
Hadoop HDFS.Yarn.MapReduce Hadoop集群环境搭建 完全分布式环境,伪分布式将其中的多台服务器改为一台,并将配置文件中的相关内容更改即可 1.安装Linux系统模型机 关闭 ...
- Vue I18n Vue.js 的国际化插件+elementUI的使用
先附上插件官网 vue-i18n中文官网 我们的vue项目需要支持多语言时,可以使用这个插件 安装插件教程在官网可以找到 代码结构可以如下 zh.js 查看代码 export default { lo ...
- JavaScript 时间的操作
1. 标准日期格式 转 时间戳 第一步,设置一个标准日期,获取这个日期格式的时间戳 let timeStr = "2020-08-10 12:34:45"; let newTime ...
- @Async 注解的使用
1.@Async介绍 在Spring中,基于@Async标注的方法,称之为异步方法:这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作 例如, 在某个调用中, ...
- Java基础学习:6、方法的重载和可变参数
一.方法重载: 基本介绍: Java中允许在一个类中,多个同名方法的存在,到要求形参列表不一致. 注意事项: 1.方法名:必须一致. 2.形参列表:必须不同(形参类型或个数或顺序至少有一样不同,参数名 ...