使用lightProbe来模拟动态物体的照明shader
VertexLit path中读取lightProbe烘焙信息:
Shader "VertexLitProbe" {
Properties {
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}//主贴图
}
SubShader {
LOD
Pass {
Tags { "LightMode" = "VertexLit" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//#pragma target 3.0
#include "UnityCG.cginc"
#include "Lighting.cginc"
struct appdata_t {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
float3 wroldN : TEXCOORD01;
half2 texcoord : TEXCOORD0;
};
float4 _MainTex_ST;
sampler2D _MainTex;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.wroldN = mul((float3x3)_Object2World, v.normal);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 mainCol = tex2D(_MainTex, i.texcoord);
mainCol.rgb = mainCol.rgb * ShadeSH9(half4(i.wroldN,1.0));
return mainCol;
}
ENDCG
}
}
}
效果如下图:
Ps:unity 自带的diffuse(surface shader)中有在forwardBass pass中处理SH9,但是自带的VertexLit(cg)中没有,所以使用自带shader时,只有在forward pass中在能使用LightProbe,但是可以自己写
ps2:别忘了勾选cube的MeshRenderer组件的 Use Light Probes选项
可以在surface shader中关闭:

使用lightProbe来模拟动态物体的照明shader的更多相关文章
- 在WPF中使用PlaneProjection模拟动态3D效果
原文:在WPF中使用PlaneProjection模拟动态3D效果 虽然在WPF中也集成了3D呈现的功能,在简单的3D应用中,有时候并不需要真实光影的3D场景.毕竟使用3D引擎会消耗很多资源,有时候使 ...
- 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
最近在做unity shader forge和marmoset的优化,TA那边遇到了一个阴影显示的问题,具体如下: 在Forward Rendering状态下,静态场景使用了是shader for ...
- COCOS2DX学习之Box2d物理引擎使用之------动态物体的创建
1.创建一个物理世界 首先要引入一个头文件#include "Box2D\Box2D.h" 之后利用b2word创建一个对象,而且指定这个物理世界中的加速度方向. word = n ...
- golang模拟动态高优先权优先调度算法
实验二 动态高优先权优先调度 实验内容 模拟实现动态高优先权优先(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,没运行一个时间单位优先权+n),具体如下: 设置进程体:进 ...
- 在Cocos2D中改变动态物体为静态物体
原文链接,有压缩和简化 1.导入一个新的头文件 首先你要知道,不是所有Chimpunk特性都通过Cocos2d的类暴露出来,比如CCPhysicsNode和CCPhysicsBody.对于一些更高级的 ...
- UnityShader - 模拟动态光照特效
模型贴片 + 特效Shader = 动态光照特效 效果是这样的: 做法简单粗暴,直接使用模型贴片: shader上使用了noise只是提供一种思路,也有更简单的方法代替
- Canvas——使用定时器模拟动态加载动画!
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- (转)python+opencv实现动态物体追踪
原文链接:https://blog.csdn.net/cike14/article/details/50649811 import cv2 import numpy as np camera=cv2. ...
- php模拟动态输出效果
读取数据库,显示数据 foreach($s as $ss){ echo '同步中 ...<br />'; for( $i = 1 ; $i < 2 ; $i++ ) { //echo ...
随机推荐
- 【linux】crontab失效
在linux上,crontab任务全部使用完整路径,但是任务无效. 检测crontab 服务是否启动, /etc/init.d/cron status /etc/init.d/cron restart
- python 全栈开发,Day135(爬虫系列之第2章-BS和Xpath模块)
一.BeautifulSoup 1. 简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: ''' Beautiful Soup提供一些简单 ...
- Web应用程序项目XXXX已配置为使用IIS。无法访问IIS 元数据库。您没有足够的特权访问计算机上的IIS
错误图片:
- python 防死锁机制
https://www.cnblogs.com/wongbingming/p/9035575.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在编写多线程程序时,可能无意中就会写 ...
- asp.net core配置文件
读取配置文件 asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettings>节点.它的数据格式变成了j ...
- Educational Codeforces Round 26-D. Round Subset
题目大意:给你n个数字(小于1e18),从n个数中取k个数字相乘,使其后缀0最多,问你后缀0最多是多少. 知道得用三维的dp[ i ] [ j ] [ k ] 第一维表示用到第 i 个数为止,j 表 ...
- simple简单消息队列
一:介绍 1.优缺点 简单,但是耦合性较高. 这种模式是生产者与消费者一一对应,就是一个产生者,有一个消费者来消费. 如果,多个消费者想消费一个队列中的消息就不适合了.这种情况在后面会接着介绍. 2. ...
- 二分搜索-HihoCoder1139
题目描述: 由于自己“想得太多”,导致自己读了半天题才理解了题意.我还以为索敌值会随着每一次到达战略点而减小,结果题意是索敌值是固定了的,并不会改变. 如下是我对题目中第一个案例的分析: 每个圆圈代表 ...
- 《Gradle权威指南》--Android Gradle NDK支持
No1: 在根项目下的local.properties文件中配置 sdk.dir=/home/frame/android/android-sdk ndk.dir=/home/frame/android ...
- 宇宙最强VisualStudio2017配置pyQt5用于python3.6的UI界面工具(转)
宇宙最强VisualStudio2017配置pyQt5用于python3.6的UI界面工具 转载: https://blog.csdn.net/m0_37606112/article/details/ ...