关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
最近在做unity shader forge和marmoset的优化,TA那边遇到了一个阴影显示的问题,具体如下:
"Test" {
SubShader {
Tags { "RenderType" = "Opaque"} // This pass acts the same as the surface shader first pass.
// Calculates per-pixel the most important directional light with shadows,
// then per-vertex the next 4 most important lights,
// then per-vertex spherical harmionics the rest of the lights,
// and the ambient light value. Pass {
Tags {"LightMode" = "ForwardBase"}
CGPROGRAM #pragma multi_compile_fwdbase
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc" struct Input
{
float4 pos : SV_POSITION;
float3 vlight : COLOR;
float3 lightDir : TEXCOORD1;
float3 vNormal : TEXCOORD2;
LIGHTING_COORDS(,)
}; Input vert(appdata_full v)
{
Input o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
// Calc normal and light dir.
o.lightDir = normalize(ObjSpaceLightDir(v.vertex));
o.vNormal = normalize(v.normal).xyz; // Calc spherical harmonics and vertex lights. Ripped from compiled surface shader
float3 worldPos = mul(_Object2World, v.vertex).xyz;
float3 worldNormal = mul((float3x3)_Object2World, SCALED_NORMAL);
o.vlight = float3();
#ifdef LIGHTMAP_OFF float3 shlight = ShadeSH9(float4(worldNormal, 1.0));
o.vlight = shlight;
#ifdef VERTEXLIGHT_ON
o.vlight += Shade4PointLights ( unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0, unity_LightColor[].rgb, unity_LightColor[].rgb, unity_LightColor[].rgb, unity_LightColor[].rgb, unity_4LightAtten0, worldPos, worldNormal ); #endif // VERTEXLIGHT_ON
#endif // LIGHTMAP_OFF
TRANSFER_VERTEX_TO_FRAGMENT(o);
return o;
} float4 _LightColor0; // Contains the light color for this pass. half4 frag(Input IN) : COLOR
{
IN.lightDir = normalize ( IN.lightDir );
IN.vNormal = normalize ( IN.vNormal ); float atten = LIGHT_ATTENUATION(IN);
float3 color;
float NdotL = saturate( dot (IN.vNormal, IN.lightDir ));
color = UNITY_LIGHTMODEL_AMBIENT.rgb * ; color += IN.vlight; color += _LightColor0.rgb * NdotL * ( atten * );
return half4(color, 1.0f);
} ENDCG
} // Take this pass out if you don't want extra per-pixel lights.
// Just set the other lights' Render Mode to "Not Important",
// and they will be calculated as Spherical Harmonics or Vertex Lights in the above pass instead. Pass { Tags {"LightMode" = "ForwardAdd"} CGPROGRAM #pragma multi_compile_fwdadd
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc" struct Input
{
float4 pos : SV_POSITION;
float3 lightDir : TEXCOORD1;
float3 vNormal : TEXCOORD2;
}; Input vert(appdata_full v)
{
Input o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex); // Calc normal and light dir.
o.lightDir = normalize(ObjSpaceLightDir(v.vertex));
o.vNormal = normalize(v.normal).xyz; // Don't need any ambient or vertex lights in here as this is just an additive pass for each extra light.
// Shadows won't work here, either.
return o;
} float4 _LightColor0; // Contains the light color for this pass. half4 frag(Input IN) : COLOR
{
IN.lightDir = normalize ( IN.lightDir );
IN.vNormal = normalize ( IN.vNormal ); float3 color;
float NdotL = saturate( dot (IN.vNormal, IN.lightDir ));
color = _LightColor0.rgb * NdotL;
return half4(color, 1.0f);
} ENDCG }
} FallBack "Diffuse" }
#pragma surface MarmosetSurfMarmosetDirect vertex:MarmosetVert fullforwardshadows






关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影的更多相关文章
- Unity 3D动态修改Shader状态,使物体透明等等
Unity动态改Shader状态透明 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Unity动态加载和内存管理(三合一)
原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Re ...
- Unity动态批处理和静态批处理学习
本文转自:http://blog.csdn.net/lyh916/article/details/45725499,请点击链接查看楼主大神原文,尊重楼主版权. 参考链接:Unity圣典:http:// ...
- [Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)
[Unity][Heap sort]用Unity动态演示堆排序的过程 How Heap Sort Works 最近做了一个用Unity3D动态演示堆排序过程的程序. I've made this ap ...
- Unity动态字体在手机上出现字体丢失问题解决
在我们游戏的开发过程中,在部分手机上运行游戏的时候,出现了字体丢失的问题,出问题的手机似乎用的都是高通芯片. 使用的unity是4.2.0版本,ngui是3.4.9版本. 在unity的论坛及unit ...
- 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件
本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...
- Unity动态改变物体遮挡关系
在动态创建物体时,通常同父级下先创建的子物体会被后创建的遮挡,此时就需要我们用代码改变对象的层级. GameObject go;go.transform.SetAsLastSibling();//设置 ...
- unity动态加载(翻译) .
AssetBundles are files which you can export from Unity to contain assets of your choice. These files ...
- Unity 动态载入Panel并实现淡入淡出
unity版本:4.5 NGUI版本:3.6.5 参考链接:http://tieba.baidu.com/p/3206366700,作者:百度贴吧 水岸上 动态载入NGUI控件,这里用Panel为例说 ...
随机推荐
- Shell脚本_判断apache是否启动
安装nmap: yum install nmap -y nmap 127.0.0.1 脚本 vim apache_is_start.sh chmod 755 apache_is_start. ...
- javaweb写的在线聊天应用
写这个玩意儿就是想练练手, 用户需要登陆才能在线聊天,不要依赖数据库, 不需要数据库的操作, 所有的数据都是保存在内存中, 如果服务器一旦重启,数据就没有了: 登录界面: 聊天界面: 左侧是在线的用户 ...
- linux定时器(crontab)实例
linux实验示例----实现每2分钟将“/etc”下面的文件打包存储到“/usr/lobal”目录下 ·Step1:编辑当前用户的crontab并保存终端输入:>crontab -u root ...
- 关于IOS显示图片的一些注意事项
1.-568h 的图片只能在def.png显示,其他的都不支持. 2.在加载图片到Images.xcassets里面的时候,如果图片下面出现Unassigned这个时候这个图片就不能用,得拿到Imag ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
- 【vijos1900】 学姐吃寿司
https://vijos.org/p/1900 (题目链接) 题意 给出一个01环,问最少经过多少次相邻互换使得所有的0聚在一坨,所有的1聚在一坨. Solution 源自:LCF Solution ...
- 一、swoole安装
说明:swoole扩展需要安装php环境,这里就不说了. 1.有了PHP环境后,即可安装swoole扩展. swoole扩展下载地址:https://github.com/swoole/swoole- ...
- 洛谷P1410 子序列
题目描述 给定一个长度为N(N为偶数)的序列,问能否将其划分为两个长度为N/2的严格递增子序列, 输入输出格式 输入格式: 若干行,每行表示一组数据.对于每组数据,首先输入一个整数N,表示序列的长度. ...
- CSS基础知识真难啊
CSS层叠样式表Cascading Style Sheets CSS派生选择器(上下文选择器): 后代选择器:h1 strong {color:red;}第一个参数和第二个参数之间的代数是可以无限的 ...
- CF 161B Discounts(贪心)
题目链接: 传送门 Discounts time limit per test:3 second memory limit per test:256 megabytes Description ...