u3d_Shader_effects笔记3 half diffuse 和 ramp texture
1.前面的心情
每次写博客,先写心情也好,就当是小日记了吧。现在已经懒到不想动笔和纸来写日记了。近两天公司的活较少,晚上直接回来了,没有留公司。在公司看代码,不做工,就困...
哎,小辉哥家的老房子后天要拆了,时间过的真快啊,想起小时候去他家玩,鞭炮,烟花,和大辉哥一起,我们三个,快乐的吹牛快乐的小人书电视;哎时光不再,timefly...如今他孩子都多大了...
2.参考内容:
老样子,书和妹子的博客
3.主要实现:
主要是rampTexture的数据加载。
使用rampTexture:
得到结果:
4.代码
我主要关注rampTexture的读取,光照数据直接忽略掉。即surf里,传入lightingBasicDiffuse接口之前,直接使用(1,1,1,1)
Shader "Custom/NewShader" {
Properties {
_RampTex("Ramp Texutre",2D)="white"{}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200 CGPROGRAM
#pragma surface surf BasicDiffuse
sampler2D _RampTex; struct Input {
float2 uv_MainTex;
}; void surf (Input IN, inout SurfaceOutput o) {
float4 c;
c = float4(1,1,1,1);//直接置1
o.Albedo = c.rgb;
o.Alpha = c.a;
} inline float4 LightingBasicDiffuse(SurfaceOutput s,fixed3 lightDir,fixed atten)
{
float difLight = max(0,dot(s.Normal,lightDir));
float3 rampColor = tex2D(_RampTex,float2(difLight,difLight)).rgb;//**纹理采样**
float4 col;
col.rgb = (rampColor);//**直接上texture数据**
col.a = s.Alpha;
return col;
} ENDCG
}
FallBack "Diffuse"
}
5.我学到什么
(1).简单数学曲线的分析,以及绘制:
例子中halfLambert:dot后的数据A,A*0.5+0.5的曲线:https://developer.valvesoftware.com/wiki/Half_Lambert
(2)u3d纹理模式的分析:
现象,和lightDir为0的顶点显示为棕色:;
首先设置了Directional Light
a.如上图问题;当设置Repeat,并用线性插值会出现这种问题;不管是二次还是三次线性插值。
float difLight = max(0.001,dot(s.Normal,lightDir));颜色逐渐趋近红色
原因:边缘插值,可能边缘数据0左侧为空数据,导致了和red中和的数据为0,哎,也是猜测的,但应该如此
当纹理寻址模式为Clamp,直接使用边缘数据,则不会出现这种问题。
u3d_Shader_effects笔记3 half diffuse 和 ramp texture的更多相关文章
- 【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- u3d_Shader_effects笔记5 第二章 通过UV,进行纹理移动
1.前面心情 公司最近打包,像我等小弟闲着,看代码容易困,没事偷着学shader,不过还是要多交流才行. 2.本文参考 这次参考比较多:由texture uv延伸问题多,主要是不明白变量定义: htt ...
- u3d_Shader_effects笔记6 第二章 animating sprite
1.前面的心情 上班看shader我也是醉了.写完这篇看代码去了,不过看着看着恐怕就会困.... 还有就是上天,我该怎么做,下一步,大懒: 2.参考源头 http://blog.csdn.net/ca ...
- u3d_Shader_effects笔记4 BRDF
1.英文意思 bidirectional reflectance distribution function bidirectional :双向的 reflectance :反射 distributi ...
- u3d_Shader_effects笔记2 自定义surfaceDiffuseLight
1.前面的心情 今晚7点半睡着后,9点半左右被吵醒.醒来后非常失落,感觉人生到底在追求什么,我又在追求什么.昨晚梦到妈妈了.最近不时会想到爷爷的去世.人世的险恶,良心的缺失.不过一切总要向前看,至少我 ...
- u3d_Shader_effects笔记6 第四章 使用cubeMap简单的反射读取
一:前面心情: 1.今天开了个小会,该看的继续要看,不要堕落. 2.还有就是丽的生活习惯不太好.慢慢改变. 3.哎,公司人员争夺吗?哎,不知道,不了解,不去想,提升自己,内心明净 二.主要内容和参考 ...
- 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射
[Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...
- 【Unity Shaders】Diffuse Shading——漫反射光照改善技巧
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- 【Unity Shaders】概述及Diffuse Shading介绍
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
随机推荐
- JavaScript强化教程——jQuery AJAX 实例
什么是 AJAX?AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML).简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据 ...
- Sharepoint 2010 无法上传文件的问题
现象: 用户拥有某文档库的参与讨论权限,但是点击“上传文件”时,系统提示当前用户没有权限 (Access Denied) . 某用户拥有某文档库的参与讨论权限,“上传单个文件”按键是可以用的,但是“上 ...
- Java中的引用类型(强引用、弱引用)和垃圾回收
Java中的引用类型和垃圾回收 强引用Strong References 强引用是最常见的引用: 比如: StringBuffer buffer = new StringBuffer(); 创建了一个 ...
- XMPP实现登陆注销功能
XMPP框架的下载与导入等问题请参照 —— XMPP框架的分析.导入及问题解决 DEMO ——XMPP即时通讯(已导入框架)密码:3a7n 这篇我们利用XMPP框架来实现一下登陆功能,先来介绍一下XM ...
- Android 加载大图片到内存
本文演示android中图片加载到内存 首先设计界面: 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- 【代码笔记】iOS-读取一段文字
一,效果图. 二,工程图. 三,代码. RootViewController.m #import "RootViewController.h" @interface RootVie ...
- socket编程中服务器端常用函数 以及简单实现
1 常用函数 1.1 socket() int socket(int family, int type, int protocol); socket()打开一个网络通讯端口,如果成功的话,返回一个 ...
- [读书笔记] Head First 设计模式
OO基础 抽象 封装 多态 继承 OO原则 原则 描述 封装变化 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起. 把会变化的部分取出来并“封装”起来,好让其他部分不 ...
- android [因为开了刷机精灵等软件 导致adb 无法使用]error: could not install *smartsocket* listener: cannot bind
今天 使用 刷机精灵后 在使用android studio 时发现 adb 无法正常使用. 于是 想重启 adb.exe , 直接在DOS里杀掉adb输入:adb kill-server 再启动输 ...
- .NET 多语言支持解决方案(转)
asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面. 首先在App_GlobalResources新建re ...