- 博客(13)
- 收藏
- 关注
原创 我的shader学习之六
今天复习一下基础,写个光照的读书笔记先写个blinn-phong的光照模型// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'// Upgrade NOTE: rep...
2019-04-08 16:48:24 93
原创 我的shader学习之五
本篇依然是笔记这次的内容是做一个玻璃,这个东西实际实现里shader不复杂,但是实际操作比较多这个东西用到了两个摄像机,也就是通过一个摄像机把它的摄像内容渲染到一个中间缓冲上,即渲染目标纹理。这个东西的使用是unity提供的。(暂时不知道opengl里面是怎么做的)我们设置一个片的材质,然后把这个片儿放在对应的模型后面,然后前后各一个摄像机,如下图然后两个摄像机看...
2019-04-04 17:39:50 125
原创 我的shader学习之四
本篇文章依然是笔记本文主要涉及unity uv动画的内容。实现一个波纹效果我先贴代码吧// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/WaterRipple"{ Properties { _MainTex ("纹理", 2D...
2019-01-30 21:28:36 170
原创 我的shader学习之三
本篇文章依然是读书笔记。本文主要写的是unity uv动画相关的内容。主要是基于unity提供的内置的_Time变量。代码如下:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unity Shaders Book/Chapter 11/Water...
2019-01-05 22:09:59 258 1
原创 我的shader学习之二
本篇文章实际上是一个类似阅读笔记的东西。这里主要讲一个反射shader,就是反射场景到一个物体表面。那么等于光线照到物体上计算的颜色要去周围环境去采样。按道理这个东西是怎么实现的呢,我认为是光线照到场景反射到物体表面,然后再反射到摄像机内的,那么在物体表面的点应该显示场景什么内容,那就是要从摄像机方向发射一束光线到这个点然后反射到场景纹理上,然后获取场景纹理上的这个点。// Upgr...
2019-01-03 17:30:39 135
原创 我的shader学习之一
写一个边缘发光shader,我想到如下内容。首先可能是有纹理的,那么我就要在物体的边缘对其颜色做一个修正,这个物体的边缘跟物体应该是无关的,而跟摄像机方向有关那么在什么情况下会出现某个计算在物体中心颜色为0or很少颜色,在边缘颜色很深呢。在边缘法线与该点到摄像机的夹角应该是超过90的,在中心位置这个夹角是0,那么我就需要一个从0到90+角度值增大的函数ret smoothstep(e1...
2018-12-26 17:59:24 252
原创 仿函数的状态获取的一些问题
不要试图获得仿函数的状态,或者讲不要试图通过仿函数来确定仿函数的某个值或状态试图从运用了仿函数的算法中获得数据或者结果的方式有两种,分别是显式写出传递的类型参数,使用引用。如下面的: list coll; IntSequence seq(3); generate_n >,int,IntSequence&>(back_inserter(c
2015-03-20 09:13:10 381
原创 迭代器概念与traits编程技法
我们用容器存放数据,用算法来执行操作,而迭代器就是两者的接合器。首先来看find算法inline const char *_Find(const char *_First, const char *_Last, int _Val) { // find first char that matches _Val _First = (const char *)_CSTD
2015-03-17 09:23:49 363
原创 仿函数functor
仿函数,即行为类似函数的对象。又称为function object,实际上就是重载了()运算符例如class X{ public:return-value operator()(args) const { }}假如我们要实现一个函数int function(args1,args2);我们需要这么做X fo;fo(args1,args2
2015-03-15 11:19:56 402
原创 C++编程思想杂记(②4章 输入输出流)
为什么使用输入输出流而不使用C的文件I/O函数?第一,用户可以直接操作FILE指针,并且需要调用close函数来关闭文件,使用输入输出流可以安全的打开文件并且不依赖用户调用close来关闭它。第二,C中的可变参数列表函数(printf)中包含运行时解释程序,运行时解释程序是一段代码在运行时可以解析字符串。但是即使要使用解释程序的一部分功能,解释程序的所有部分都会被加载到可执
2015-03-09 20:36:39 487
原创 C++编程思想杂记(15章 多态性和虚函数)
封装使接口从具体实现中分离开来,而虚函数则根据类型来处理解耦。继承可以使多个类型使用相同的代码,而虚函数可以表现一个类型与其另一个相似类型的区别。函数体和函数调用相联系称为捆绑,即binding,运行前捆绑即编译器可以确定对象的类型,运行时捆绑即为多态,在运行时确定对象的类型调用相应函数,这样可以实现接口不变而实现变化,使程序的扩展性提高
2015-03-08 21:43:03 371
原创 C++编程思想杂记(14章 继承和组合)
新类中存在已有类的对象,称为组合,而采用已存在类的方式将新代码加入其中,称为继承。如果继承时不添加public,则所有基类成员在派生类中都会变成private。在派生类中的同名函数中使用基类的同名函数时,需要添加作用域运算符来确保它执行的是基类的函数。带函数初始化列表的派生类构造函数的调用属顺序是:基类构造函数->成员对象构造函数(初始化列表从右到左)->本身构
2015-03-08 21:38:03 334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人