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的更多相关文章

  1. 【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  2. u3d_Shader_effects笔记5 第二章 通过UV,进行纹理移动

    1.前面心情 公司最近打包,像我等小弟闲着,看代码容易困,没事偷着学shader,不过还是要多交流才行. 2.本文参考 这次参考比较多:由texture uv延伸问题多,主要是不明白变量定义: htt ...

  3. u3d_Shader_effects笔记6 第二章 animating sprite

    1.前面的心情 上班看shader我也是醉了.写完这篇看代码去了,不过看着看着恐怕就会困.... 还有就是上天,我该怎么做,下一步,大懒: 2.参考源头 http://blog.csdn.net/ca ...

  4. u3d_Shader_effects笔记4 BRDF

    1.英文意思 bidirectional reflectance distribution function bidirectional :双向的 reflectance :反射 distributi ...

  5. u3d_Shader_effects笔记2 自定义surfaceDiffuseLight

    1.前面的心情 今晚7点半睡着后,9点半左右被吵醒.醒来后非常失落,感觉人生到底在追求什么,我又在追求什么.昨晚梦到妈妈了.最近不时会想到爷爷的去世.人世的险恶,良心的缺失.不过一切总要向前看,至少我 ...

  6. u3d_Shader_effects笔记6 第四章 使用cubeMap简单的反射读取

    一:前面心情: 1.今天开了个小会,该看的继续要看,不要堕落. 2.还有就是丽的生活习惯不太好.慢慢改变. 3.哎,公司人员争夺吗?哎,不知道,不了解,不去想,提升自己,内心明净 二.主要内容和参考 ...

  7. 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射

    [Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...

  8. 【Unity Shaders】Diffuse Shading——漫反射光照改善技巧

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  9. 【Unity Shaders】概述及Diffuse Shading介绍

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

随机推荐

  1. JavaScript学习笔记2之Tab切换

    1.Tab切换简写版1 页面布局如下: <div id="tab"> <h1 id="title"> <span class=&q ...

  2. sap后台作业管理/sap打印管理

    sap后台作业管理: 后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序.个人认为,简单的创建,配置和监控后台作业没有什么难度.后台作业管理最为困难的解决方案的取舍,系统负载的调控.失控的后 ...

  3. ABAP语言常用的系统字段及函数

    常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUB ...

  4. Get item by sharepoint web service jquery

    对于sp2010,在ie浏览器中这个代码无法生效,只有chrome可以生效. //获取附件id function GetAttachments(listName) { var soapEnv = '& ...

  5. 一个插件让你在chrome直接运行apk

    插件的下载地址: https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn?utm_s ...

  6. iOS学习19之OC类的扩展

    为一个类扩展功能:1.子类化:2.修改源代码:3.定义协议:4.Category:类目 1.Category 1> Category的作用 Category:也叫分类,类目,是为没有源代码的类扩 ...

  7. SQL并行与否的性能差异

    比较两种代码,核心代码相同,其中一个使用变量保存查询出的结果,另一个直接输出.使用同一变量时,强迫SQL放弃了并行,使用了循环.   测试结果 表'#1699586C'.扫描计数1,逻辑读取186 次 ...

  8. 让我们喝喝下午茶,聊聊AJAX和JSON

    1.AJAX     [1] AJAX简介         > 全称:Asynchronous JavaScript And XML         > 直译:异步的JavaScript和 ...

  9. JMS(Java消息服务)入门教程

    什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...

  10. FileOutputStream VS FileWriter

    当我们使用Java往文件写入数据的时候,我们有两种方式,使用FileOutputStream或FileWriter. FileOutputStream: File fout = new File(fi ...