自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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++编程思想杂记(②第9章 多重继承)

多重继承MI:继承多个基类来创建一个新类。

2015-03-12 11:30:08 777

原创 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关注的人

提示
确定要删除当前文章?
取消 删除