技术标签: unity shader学习笔记 开发
开博只为记录学习笔记。
工作两年多,发现shader的神奇之处,一直想学,却没能学进去,在此开博客,以坚定决心。
前几天买了一本《Unity着色器和屏幕特效开发秘籍》,由浅入深,目前看到了1.7.2,学到了些东西,先记录下来,刚开始学,自己理解的东西可能比较浅显,甚至有错,后面会慢慢纠正。
Shader "DQ/DQ_test_Difuse" { //shader路径
Properties {
//shader的属性
_EmissiveColor("Emissive Color",Color) = (1,1,1,1)//放射色(目前理解是向光面颜色)
_AmbientColor("Ambient Color",Color) = (1,1,1,1)//环境色(背光面颜色)
_SaturateValue("Saturate",Range(0,10)) = 2.5//饱和度
_RampTex("RampTex",Rect) ="ramp"//渐变纹理
}
SubShader {
Tags { "RenderType"="Opaque" }//不透明
LOD 200//渲染先后
CGPROGRAM//开始
#pragma surface surf BasicDiffuse//没有用Lambert
float4 _EmissiveColor;//这里的名字要和Properties中的变量名一致(理解为field成员)
float4 _AmbientColor;
float _SaturateValue;
sampler2D _RampTex;
struct Input {
float2 uv_MainTex;//这里是输入,实际上这个测试shader并没有用到,但是不能删,目前还不理解原因
};
void surf (Input IN, inout SurfaceOutput o) {
float4 c;
c = pow((_AmbientColor + _EmissiveColor),_SaturateValue);//pow算颜色和饱和度
o.Albedo = c.rgb;//给输出赋颜色
o.Alpha = c.a;
}
//自己定义的光照模型,harf lambert 和 渐变纹理
inline float4 LightingBasicDiffuse(SurfaceOutput s, fixed3 lightDir, fixed atten){
float difLight = max(0, dot(s.Normal,lightDir));
//点乘(向量的夹角越小,值越大,范围-1~1,平行且同向为1,平行且反向为-1,即向光方向>0,背光方向<0) + clamp限制 [0~1]
float hLambert = difLight * 0.5 + 0.5; //限制difLight值范围0.5 ~ 1.0,避免背面颜色过暗
float3 ramp = tex2D(_RampTex, float2(hLambert)).rgb;//把渐变纹理的颜色配合亮度读出来
float4 col;
col.rgb = s.Albedo * _LightColor0.rgb * ramp;//算出的颜色和光照颜色还有surf得到的颜色相乘,得到新的颜色
col.a = s.Alpha;
return col;
}
ENDCG//结束
}
FallBack "Diffuse"
}
文章浏览阅读1.2k次。5.7mysql 多线程slave1.主库需要设置参数:server_id=202log-bin=mysql-binbinlog_format=rowlog-slave-updatessync_binlog=1innodb_flush_log_at_trx_commit=12.从库配置server_id=203log-bin=mysql-binbinlog_format=rowlog-slave-updatesslave-parallel-type=LOGICAL_CLOCKs_mysql slave 任务数
文章浏览阅读1.1k次,点赞5次,收藏8次。def classify0(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0]#获取训练样本集的行数,即样本个数 diffMat = tile(inX, (dataSetSize,1)) - dataSet#利用tile()函数将inX向量构造成一个和dataset有相同行数列数的矩阵,并与之相减 sqDiffM..._knn构建邻接矩阵
文章浏览阅读9.6k次。最近项目需要研究下Android通过usbhost和蓝牙连接热敏打印机打印小票,收集了一下资料参考,感觉这块技术比较乱的,每家打印机都有自己的SDK,但其实底层的原理差不多,做个稳定兼容多个品牌热敏打印机的APP还是有难度的。 昨天晚上说抽时间来写一篇关于Android 热敏打印机打印二维码和图片的文章,所幸在下班之前把它给写了,和大家分享吧。我的是Android机器有内置热敏打印机的,我是把a_android热门打印机 二维码
文章浏览阅读6.8k次,点赞6次,收藏57次。IGMP Snooping:诞生原因:由于IGMP报文是封装在IP报文内,属于三层协议报文,而二层设备不处理报文的三层信息,所以这个过程它并不知道,而且通过对数据链路层数据帧的源MAC地址的学习也学不到组播MAC地址(数据帧的源MAC地址不会是组播MAC地址)。这样当二层设备在接收到一个目的MAC地址为组播MAC地址的数据帧时,在以前学习的MAC地址表中就不会找到对应的表项。那么这时候,它就会采用广播方式发送接收到的组播报文,这样一来不但会造成带宽的极大浪费,而且影响网络安全。注意:对应224.xxx.
文章浏览阅读7.8k次,点赞3次,收藏10次。var str = "kobebryant";var obj = {};//遍历str,统计每个字符出现的次数for (var i = 0, length = str.length; i < length; i++) { //当前第i个字符 var char = str.charAt(i); //char就是对象obj的一个属性,obj[char]是属性值,存储..._编写一个函数,统计一个字符串中连续出现最多的字符及其次数
文章浏览阅读1w次,点赞5次,收藏22次。SAP QM 取消UD方法 一、业务场景1、 适用业务 通常检验批作完检验结果录入后,最后一步就是做UD判断,这一步的内容主要包括两方面:选定UD代码,表示检验将作如何的判定,如A表示接受,R表示拒绝,A1表示让步接受…;另外就是做库存转移,就是将检验状态的库存移为非限制状态的库存(有的企业称为判良品)或者转为冻结库存,甚至如果是破坏性检验还要做样品消_冲销ud
文章浏览阅读7.9k次。Please indicate the source: http://blog.csdn.net/gaoxiangnumber1Welcome to my github: https://github.com/gaoxiangnumber14.1 IntroductionFigure 4.1 shows a network with two hosts, H1 and H2, and severa_a router forwards a packet by examining the value of a field in the arri
文章浏览阅读747次。操作系统:ubuntu网卡芯片:8821AU操作步骤:解压驱动包unzip RTL8821AU_Linux_v4.3.14_13455_BTCOEX20150128-51.20150216.zip2.进入驱动目录cd RTL8821AU_Linux_v4.3.14_13455_BTCOEX20150128-51.20150216/driver/3.修改驱动Makefile 文件,使支持monitor 功能4.编译驱动在驱动目录下make5.执行完Make 之后生成 .ko 文件6_8821au.ko
文章浏览阅读1.2k次。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。在 [] 中加入 - 匹配指定范围内的任意字符,这个指定范围使用 ASCII 码来判断,比如 [ a-z ],表示匹配 a 到 z 中的任意一个字符。使用 () 定义一个子表达式。以上出自百度百科,通俗点说就是拥有一些特殊能力的字符,普通的字符比如a就表示a,元字符.可以表示任意字符。使用[]来表示任意字符,[]代表一个字符集合,可以匹配所包含的任意一个字符,注意只能匹配一个。._正则表达式 \*
文章浏览阅读285次。为什么80%的码农都做不了架构师?>>> ..._添加openssh源
文章浏览阅读3.3k次。1、jdbc连接字符串中指定当前schema要连接的目标库的schema名为DB2INST1,而在jdbc连接db2的字符串中不指定currentSchema的话,分配给用户的schema可能不是DB2INST1,而是DB2ADMIN,这时候程序的数据库操作会报sqlstate=42704的错误,因此需要在jdbc数据源连接设置中带上currentSchema设置具体如下:factory="org..._currentschema
文章浏览阅读2.1k次,点赞2次,收藏9次。业务需求,需要使用JS将url链接转为二维码图片。查到可以使用qrcodejs2传入内容、大小获得一个画布上的二维码。但是canvas标签在移动端上无法使用长按识别的功能,所以还需要把canvas对象转换为图片img标签。 网上找到的相关资料大多是通过html2canvas来将二维码转为图片的,但通过这种方法,总有一些奇奇怪怪的问题,比如有时候明明转成了base64,但是页面不显示。后来还是选择直接转为image,使用起来也更灵活。首先安装qrcodejs2:npm install qrcodej._vue-qrcode canvas