主页

nginx 配置 https 及重定向

将博客放在自己的VPS上,免不了配置 nginx 及 https,如果不配置 https,浏览器上**不安全**那三个字,实在是太刺眼。所以这篇博客,将记录整个折腾过程。 nginx 的安装 https 的证书配置 http 重定向到 https www 重定向到非不带 www 的域名 接下来的操作,都是在 Ubuntu 18.04 版本上进行的。 域名解析的配置首先要先自己的域名解析到自己的

Rust 基础 | 枚举、匹配

这篇博客涉及到的知识点有 枚举的定义、Option 枚举、match 语法、if let 语法。 枚举的定义Rust 中定义一个枚举,使用关键字 enum,看下面的代码 123456789101112131415// 定义一个NPC类型枚举enum NPCType { TalkNPC, WalkNPC, BattleNPC, TaskNPC,}enum

Rust 基础 | 结构体

在有类的编程语言中,组织数据的方式可以定义一个类,而在 Rust 中,组织数据的方式,使用 struct。struct 可以定义三种不同的类型,一种是带有字段名字的结构体,一种是没有字段名字的元组结构体,一种是没有任何字段的单元结构体。 定义 struct带有字段名字的结构体 12345678910111213141516#[derive(Debug)]struct User {

Rust 基础 | 引用、切片

在阅读Rust官方教程时,会看到两个词,引用和借用,也就是 References and Borrowing。这里很容易让人混乱,如果了解C/C++这类有指针的语言,则引用很容易理解,但是 Rust 中的借用这个词是什么意思呢?我觉得,在初学 Rust 时,可以忽略这个词,或者就简单理解为,它所涉及到的东西,就是引用,就是一个指针,就可以了,避免陷入进去。所以,接下来我就就聊一聊引用。 什么是引用

Rust 基础 | 所有权

什么是所有权Rust 的所有权,是 Rust 语言的一个核心概念。可以简单理解为,一种内存管理的方式。用现实中的东西举例,当你从图书管借了一本书时,这本书的所有权暂时归你所有,而当你把书给你的朋友时,此刻,书的所有权归你的朋友所有,而当你的朋友把书归还图书馆时,此时没有人拥有书的所有权,相当于内存释放。 在使用有自动垃圾回收(GC)的编程语言时,我们并不需要考虑内存的释放问题,因为GC会帮我们释放

Rust 基础 | 基本语法

1. 变量和可变性Rust 定义一个变量默认是不可变的,这一点与其他编程语言不同。 12let x = 10;x = 11; // 这里会编译出错, 如果要定义可变量,需要使用 mut 12let mut x = 10;x = 11; 用 let 先定义一个变量,再次用 let 定义一个变量,会将之前的变量覆盖,虽然同名,但也不是原来的变量了,这叫做 Shadowing 12let x =

Unity Shader | 半兰伯特、高光反射、BlinnPhone

写 Shader,到底是在做什么?Shader 就像一个拥有魔法的黑箱,我们最终从它那里得到的,是像素的颜色。而得到的是什么样的像素颜色,则取决于我们丢进黑箱里的是什么东西,以及使用的魔法咒语是什么。丢进同样的东西,使用不同的魔法咒语,得到的像素颜色也是不一样的。输入顶点的坐标,光线方向,以及自定义的颜色,使用不同的计算方式,得到的像素颜色是不一样的。使用同样的计算方式,丢进一个纯色颜色值,和丢进一张纹理,得到的像素,也是不一样的。 如果把整个 Shader 比作一个函数,那么顶点位置,自定义的颜色值,纹理,灯光等这些就相当于函数的输入参数,而 Shader 中写的各种计算,用的各种算法,都是对输入的那些参数进行操作,而最终生成的,就是颜色值,也就是相当于函数的返回值。把 Shader 想的简单一点,就是输入需要的东西,进行计算,得到像素值。 这篇博客,还是关于光照模型的,接下来我们首先总结一下常用的光照模型。

Unity Shader | 光照模型和漫反射

在之前的文章中写的Shader,呈现出来的物体样子是一个平面2D的状态,即使物体是3D的,那是因为,我们还没有将灯光加入到Shader的运算中。现在,我们将介绍灯光相关的东西,最后呈现出和 Unity Diffuse Shader 一样的效果。 什么是光照模型光照模型,简单理解就是一种运算,或者说一个公式,计算的结果,决定了一个点受到光照时,所表现出来的效果。例如,光照在木板上,和照在一面镜子上,我们所看到的效果是不一样的,照在镜子上,很大一部分光会被镜子反射,而木板,却不会反射那么多光。

Unity UGUI RGB通道分离抖动

今天我们要在 UGUI 上实现图片RGB通道分离抖动效果,先看最终效果图 实现这个效果,使用了 Shader 和 C# 代码,Shader 用于实现效果,C# 用于控制抖动开关,也就是什么时候抖动,什么时候停止。Shader 的原理大概就是通过不同的参数,分别采样图片的RGB三个通道的颜色,然后再合成最终的颜色。Shader代码如下

Unity Shader | 使用Struct传递数据

上一篇博客 说了在 CGPROGRAM 中写代码、顶点处理函数、片元处理函数、以及在两个函数之间传递简单的数据、从 ShaderLab 属性到CG数据类型之间的联系等。这一篇博将稍详细一点说一下 Shader 的基本知识,以及在顶点和片元函数之间传递更多的数据。 Shader的基本理解简单来说,Shader 决定了一个模型最终呈现在屏幕上的样子。一个模型由很多顶点构成,而每一个顶点,都会经过 Shader 中的顶点处理函数,这个过程,就是从应用将数据传递到顶点处理函数,顶点函数需要将顶点从模型空间转换到屏幕空间,或者说是裁剪空间,也可以简单理解为从 3 维空间转换到屏幕上的 2 维空间。在这个过程中,还可以做一些其他对顶点的操作。 顶点数据经过顶点处理函数处理后,接下来就返回,然后传给片元处理函数,到了这一步,面对的,就是像素,也就是每一个像素的颜色值。在这里,可以根据自己的需求,对每一个像素做处理,例如做高斯模糊,RGB通道分离,等等,各种各样的效果。