Untiyshader基础概念

1.渲染流水线
应用阶段->几何阶段->光栅化阶段

应用阶段输出渲染所需几何信息->渲染图元(点线三角面等)

几何阶段在GPU上进行

光栅化阶段对上一阶段得到的逐顶点数据进行插值

起点为CPU,在应用阶段把数据加载到显存中,设置渲染状态,调用DrawCall

DrawCall即为一个命令,从CPU发起,到GPU接收。此命令仅仅指向一个需要被渲染的图元列表,不包含任何材质信息。

调用DrawCall命令GPU进行渲染,DrawCall过多会影响帧率,原因是会造成CPU过载,而GPU的渲染速度是超过CPU提交命令能力。

UnityShader(1)-基础结构

shader基础结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Shader "MyShaderName" {
Properties{
//属性 Name通常需要下划线开始 display name是显然在材质面板上的名字,properytype是其类型 ,最后需要赋一个默认值
Name ("display name",PropertyType)=DefaultValue
}
SubShader{
//针对显卡A的SubShader SubShader可有多个,但最少需要一个
//真正意义上的Shader代码会出现在这里
//表面着色器(Surface shader) or 顶点/片元着色器(Vertex/Fragment shader) or 固定函数着色器(Fixed Function shader)


//可选
[Tags] //标签 为键值对
Tags{"TagName1"="Value1" "TagName2"="Value2"}
[RenderSetup] //状态

Pass{
//设置渲染状态和标签 Pass数目应尽量少,多会造成渲染性能下降
[Name] //设置该Pass名称 可使用ShaderLab的UsePass命令直接使用其他Shader中的Pass ,提高了复用性
[Tags] //不同于subshader中的标签
[RenderSetup]

CGPROGRAM //开始CG代码片段

#pragma vertex vert //编译指令,某函数包含哪类着色器
#pragma fragment frag

//整体CG代码写在这里

ENDCG
//其他设置
}
//其他需要的Pass
}
SubShader{
//针对显卡B
}


Fallback "VertexLit" //用于告诉Unity,上述SubShader在该显卡上都不支持,使用最低级Shader
//Fallback "Name" or Fallback off(关闭fallback)
}

选择,插入,归并,快速排序总结

一,O(n^2)选择排序和插入排序

1选择排序
基本思路:标记第一个数,循环找到比这数小的然后对换,直至找到数组中最小的数,最好将最小的数放入标记的位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void selectSort(int arr[],int n)
{
for(int i=1;i<n;i++)
{
int minIndex=i;
//遍历i+1到n数,找到最小值
for(int j=i+1;j<n;j++)
{
if(arr[j]<arr[minIndex])
minIndex=j;
}
swap(arr[j],arr[minIndex]);
}
}

unity控制运动

  1. 通过Transform组件移动物体
    Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale)。 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position)。

unity注意点

unity学习小总结

1.prefab的使用,当完成一个gameObject的使用,通过拖拽到项目栏成为prefab,prefab将可以加快开发效率.
prefab之后的物品,也只能通过prefab的预制体进行赋值。

2.5.0版本后,Unity规范了c#的写法,RigidBody均需要先声明后获取.

3.采用tag标记来处理一些碰撞检测,在逻辑上采用tag来判断,这样可以避免一些逻辑bug。

Hexo本地搭建心得

今天下定决心弄弄自己的博客了,折腾过WordPress,不过要域名的情况下还是很蛋疼,作为学生党,最后寻找到github是可以进行blog的搭建的,选择了hexo原因在于自己对Node比较熟悉点。废话不多说,看看怎么完成第一步,本地搭建hexo。

安装Node

大家可以自行在Node的官网上进行下载.
当安装完Node之后,自然会安装NPM,即包管理器。
之后我们就可以开始安装hexo。
这里希望大家安装git,并且学会使用git,对以后的工作都有很大的帮助。

,