本文主要讲解了Unity中SurfaceShader的具体写法,以及几个常用的CG函数的用法。
在这里先说明一下,表面着色器将分为两次讲解,本文介绍表面着色器的基本概念和一些写法,用内置的兰伯特光照模式来进行Surface Shader的书写,而下次将介绍Surface Shader+自定义的光照模式的写法。
PS:最近几天,在完美世界、腾讯互娱工作多年的几个朋友们问了浅墨一些表面着色器相关的Shader写法,浅墨当时回答他们的时候自己也是似懂非懂。通过这篇文章的书写,现在算是对这方面知识有了进一步的理...
分类:
编程语言 时间:
2014-12-28 19:37:22
阅读次数:
274
1.算法描述
快速排序是一种基于分治技术的排序算法。在一个给定的数列中,选择一个数作为分区的依据进行排序,使得数的左边都小于该数,数的右边都大于该数,然后将该数的左边和右边分别作为一个数列进行排序,一直重复以上操作,直到分区里只有一个数字为止。
上面所说的是快速排序的基本特点,可以简单总结为:确定分区依据,左小右大(或左大右小),划分子区间,重复以上操作,直到子区间只有一个数字。
在具体的实...
分类:
编程语言 时间:
2014-12-28 19:36:01
阅读次数:
237
逆序对是指数列a[1],a[2],a[3]…中的任意两个数a[i],a[j] (ia[j],那么我们就说这两个数构成了一个逆序对。
而归并排序的合并两个排列的过程中
会将右边的有序序列的元素依次插入前面的 有序序列
如(3 7 12) ( 5 6 8)
将5 插入 (3 7 12) 中
因为后面有序 所以 假设 5和左边全部元素构成逆序对 所以有mid+1...
分类:
编程语言 时间:
2014-12-28 19:34:29
阅读次数:
180
Tornado的搭建很简单,使用pip,或者下载源码均可。 我们先看一个最简单的程序: import tornado.ioloop
import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): sel...
分类:
编程语言 时间:
2014-12-28 19:35:15
阅读次数:
325
在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置、旋转和缩放。但是很多人都不太理解这儿Matrix4x4变换矩阵。通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么变换的。在三维图形程序中,我们可以用几何变换来达到以下目的:表示一个对象相对于另一个对象的位置。旋转...
分类:
编程语言 时间:
2014-12-28 19:33:22
阅读次数:
328
德语语言包 不完善 有错误 /surface RT/win8.1比如点 wlan 图标时出现的 Verbindungsteinstellungen,这个单词是错的,至少应该是Verbindungseinstellungen, 多了个t//"连接设置"
分类:
编程语言 时间:
2014-12-28 19:31:39
阅读次数:
116
1、创建实体类Page.java@Entitypublic class Page { private int totalRecord;// 表示查询后一共得到多少条结果记录 private int pageSize; // 表示页面一次要显示多少条记录 private int to...
分类:
编程语言 时间:
2014-12-28 19:28:52
阅读次数:
193
输入流和输出流是相对于内存设备而言即将外设中的数据读取到内存中就是输入 将内存中的数据写入到外设中就是输出字符流的由来: 其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。再对这个文字进行操作,其实就是字节流+编码表字节流的两个顶层父类:1,InputStream....
分类:
编程语言 时间:
2014-12-28 19:27:13
阅读次数:
251
C++定义了一个内容丰富的抽象数据类型标准库,其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合。string和vector往往将迭代器用作配套类型,用于访问string中的字符,或者vector中的元素。
另一种标准库类型为bitset,提供了一种抽象方法来操作位的集合。
string类型支持长度可变的字符串,vector用于保存一组指定类型的对象。
...
分类:
编程语言 时间:
2014-12-28 18:20:00
阅读次数:
248
6.1.3 一个简单的GUI程序
package six;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
private static int numclicks = 0; //记录次数
private static JFrame frame = new ...
分类:
编程语言 时间:
2014-12-28 18:19:32
阅读次数:
277
下面的 C 程序分配了1024字节的内存,然后从分配的内存以外的区域读取数据,在分配内存尾部之后写数据,最后将该内存区域变得不可访问。
#include
#include
int main()
{
char *ptr = (char *)malloc( 1024 );
char ch;
//Uninitialized read
ch = ptr[1024];...
分类:
编程语言 时间:
2014-12-28 18:17:49
阅读次数:
387
1、AOP概念
首先,AOP是对OOP的一个补充。它考虑的是“横切性”问题。横切性问题即可以理解为我们同一层类的问题(例如:Service层)。
它的理念是,把遍历在系统各个角落具有横切性的独立的服务,抽出来放到一个地方,然后等到运行时,再放进去,考虑的是“横向”的东西。将横切性关注的东西给抽出来,会使代码大大减少,更加简洁,更加有复用性。
下图展示AOP中的基本概念:...
分类:
编程语言 时间:
2014-12-28 18:19:28
阅读次数:
269
Hibernate工作原理及为什么要用?
原理:1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
为什么要用:hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关...
分类:
编程语言 时间:
2014-12-28 18:18:28
阅读次数:
203
一、概述
类结构:
java.lang.Object
java.lang.ref.Reference
java.lang.ref.WeakReference
声明:public class WeakReference
extends Reference
假定垃圾回收器确定在某一时间点上某个对象是弱可到达对象。这时,它将自动清除针对此对象的所有弱引用,以及通过强引...
分类:
编程语言 时间:
2014-12-28 18:17:25
阅读次数:
227
本章介绍 C++ 的大部分基本要素:内置类型、库类型、类类型、变量、表达式、语句和函数。 在这一过程中还会简要说明如何编译和运行程序。 要学会一门新的程序语言,必须实际动手编写程序。在这一章,我们将缩写程序解决一个简单的数据处理问题:某书店以文件形式保存其每一笔交易。每一笔交易记录某本书的销...
分类:
编程语言 时间:
2014-12-28 18:12:22
阅读次数:
422
1. 在如下几种情况下,Java虚拟机将结束生命周期: 1). 执行了System.exit()方法 2). 程序正常执行结束 3). 程序在执行过程中遇到了异常或错误而异常终止 4). 由于操作系统出现错误而导致Java虚拟机进程终止2. 类的加载,连接与初始化: 1). 加载:查找并加...
分类:
编程语言 时间:
2014-12-28 18:08:49
阅读次数:
204
1. 静态内部类(static inner class) :只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass.InnerClass();2. 成员内部类(member inner clas....
分类:
编程语言 时间:
2014-12-28 18:06:50
阅读次数:
210