Unity的Shader如何控制投影颜色
细节慢慢补充,有几个需要注意的地方,必须要有接收投影的pass也就是Name是ShadowCollector的,必须添加#pragma multi_compile_fwdbase,物体的着色器必须有Tag 里面的 {"LightMode" = "ForwardBase"}。处理投影要在接收投影的物体shader里。
随后是三个宏。
SHADOW_COORDS这个宏后面的参数是指第几个通道,不要和其他的出现冲突,也就是要改变投影的颜色话必须要占用一个通道。
在顶点处理器里调用TRANSFER_SHADOW。
然后像素着色器调用SHADOW_ATTENUATION,返回的就是这个像素是否存在阴影中。
可改变投影颜色的范例如下。
Shader "Example/ShadowColor"
{
Properties
{
_MainColor("MainColor",color) = (0.5,0.5,0.5,)
_ShadowColor("ShadowColor",color) = (,,,)
}
SubShader
{
Tags {"RenderType"="Opaque"}
Pass
{
Tags {"LightMode" = "ForwardBase"} CGPROGRAM
#pragma multi_compile_fwdbase
#include "UnityCG.cginc"
#include "Lighting.cginc"
#include "AutoLight.cginc" #pragma vertex vertexMain
#pragma fragment fragmentMain fixed4 _MainColor;
fixed4 _ShadowColor; struct VertexToFragment
{
float4 pos : SV_POSITION;
half4 uv : TEXCOORD0;
SHADOW_COORDS()
}; VertexToFragment vertexMain (appdata_full v)
{
VertexToFragment result = (VertexToFragment);
result.pos = mul(UNITY_MATRIX_MVP, v.vertex);
result.uv.xy = v.texcoord.xy;
TRANSFER_SHADOW(result)
return result;
} fixed4 fragmentMain (VertexToFragment i) : COLOR0
{
float attenuation = SHADOW_ATTENUATION(i);
return lerp(_MainColor*_ShadowColor,_MainColor,attenuation);
} ENDCG
} Pass
{
Name "ShadowCollector"
Tags { "LightMode" = "ShadowCollector" } Fog {Mode Off}
ZWrite On ZTest LEqual CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_shadowcollector #define SHADOW_COLLECTOR_PASS
#include "UnityCG.cginc" struct appdata { float4 vertex : POSITION;};
struct v2f { V2F_SHADOW_COLLECTOR;}; v2f vert (appdata v)
{
v2f o;
TRANSFER_SHADOW_COLLECTOR(o)
return o;
} fixed4 frag (v2f i) : SV_Target { SHADOW_COLLECTOR_FRAGMENT(i)}
ENDCG
} } }
Unity的Shader如何控制投影颜色的更多相关文章
- 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ...
- 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&混合操作编译
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨) ...
- Unity中使用摇杆控制
Unity中使用摇杆控制 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50 ...
- unity shader 剔除指定的颜色
Shader "MyShader/PaintingBGTransparency" { Properties{ _MainTex("Base (RGB)", 2D ...
- Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)
好久没坚持写blog了,是时候开始撸一波新博文了!学习Unity有一段时间了,关于Shader的书也看了几本<Unity Shader入门精要>,<Unity 3D ShaderLa ...
- 关于Unity中Shader的使用
在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示. 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader ...
- 关于Unity中Shader的基础认识
Shader也叫着色器,是Unity里面比较难的一个点,网上有很多别人写好的shader,我们可以下载下来用或者修改学习. Shader可以做出很多非常不错的效果,因为它是插在渲染管道里面的程序,一来 ...
- unity surface shader 1
Unity ShaderLib : CGPROGRAM ENDCG之间是CG代码,之外的代码功能都由ShaderLib提供,CG中的一些方法比如tex2D(...)也是ShaderLib对CG进行 ...
- 关于Unity中Shader的内置值
Unity provides a handful of builtin values for your shaders: things like current object's transforma ...
随机推荐
- Eclipse Gradle配置
一.Gradle简介 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. 二.配置步骤如下: 1.资源下载: Grandle官网下载G ...
- Debian Buster 配置 Laravel 运行环境(nginx + redis + supervisor)
1 目标 将开发完成的 Laravel 项目布署于 Debian 之上.由于项目要求使用 horizon 官方扩展,要求 PHP7.1+,故采用 Debian buster (下一版) 2 材料 IP ...
- Android无线调试(转)
Android无线调试——抛开USB数据线 开发Android的朋友都知道,真机调试需要把手机与PC相连,然后把应用部署到真机上进行安装和调试.长长的USB线显得很麻烦,而且如果需要USB接口与其他设 ...
- python函数、装饰器、迭代器、生成器
目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象: 函数是第一类对象,即函数可以当作数据传递 ...
- 2018.10.08 NOIP模拟 栅栏(树状数组+rand)
传送门 今天的送分题. 首先考虑每次给要围上栅栏的矩阵里的整体加上1,如果栅栏被撤销就整体减1,最后比较两个点的值是否相同来进行判断. 然而这样的效果并不理想,很容易卡掉. 进一步思考,我们第iii次 ...
- hdu-1176(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 思路:类似数塔问题, 从最后一秒开始考虑,每次这一秒的状态确定意味着前一秒的状态也已经确定,所以 ...
- ABP框架系列之二十三:(EF-MySql-Integration-EF-MySql-集成)
Introduction While our default templates designed to work with SQL Server, you can easily modify the ...
- 第一个Django应用
Django教程:http://www.liujiangblog.com/course/django/2 第一个Django应用 该应用包括以下两个部分: 一个可以让公众用户进行投票和查看投票结果的站 ...
- CentOS7+Nginx+多个Tomcat配置
转载自:https://blog.csdn.net/name_chc/article/details/73332272:亲测可用,加了一些注释: 配置多个tomcat转发 另附上tomcat启动慢的解 ...
- sql笔试练习
转:http://www.360doc.com/content/16/0919/17/14804661_592046675.shtml 本文是在Cat Qi的参考原帖的基础之上经本人一题一题练习后编辑 ...