01 2013 档案
摘要:cg的类型转换是强制类型转换,也可以是隐式转换,如果是隐式转换的话只可以从低精度转换到高精度,比如:float a = 1.0;half b = 2.0;float c = a+b;//float c = a + (float)b;flaot d = a +2.0;//编译时 2.0 做float类型;swizzle 操作符: 用于去除向量变量类型中的分量;swizzle操作符后的x y z w分别表示向量的第一个 第二个 第三个 第四个元素;所有流程控制语句的返回值都必须是bool型,不可以是0或者1;vs_2_x,vp30,vp40中profile支持for和while;禁止是用递归,保留
阅读全文
摘要:屏幕自适应NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路。以下是我在开发过程中找到的一个比较方便的实现方法。主要组件1. UIAnchor这个是用来确定控件在屏幕中的位置,另外有一篇教程专门讲它的功能,所有不会再赘述2. UIStretch这个是用来做缩放的组件。老版本的NGUI是集成在UIAnchor上的。新版本的UIStretch提供了4种缩放方式:Horizontal:只缩放水平方向Vertical:只缩放垂直方向Bose:缩放两个方向BasedOnHeight:基于高度等比缩放然后基于这些我自己实现了一个Bas
阅读全文
摘要:using UnityEngine;using System.Collections;public class AnimatedUVs : MonoBehaviour{ public int materialIndex = 0; public Vector2 uvAnimationRate = new Vector2( 1.0f, 0.0f ); public string textureName = "_MainTex"; Vector2 uvOffset = Vector2.zero; void LateUpdate() { uvOffset += ( uvAnimat
阅读全文
摘要:原来平时玩的glsl和hlsl都是基于gpu寄存器和指令集之上的虚拟机里跑的,而这些寄存器和指令集的不同,也决定了shader的版本不同。而我们平时的数据,是这一的一个方向。从硬盘disk中读取到Memory中,也就是我们平时说的内存,这时候,显卡有2种办法得到这些数据,一种是直接从memory中传入到常量寄存器中,还有一种就是先从cpuMemory到GpuMemory也就是从内存到现存,然后再从现存到gpuCaches最后到了Gpu寄存器。这里还要顺便说下zbuffer,我们都知道zbuffer是视点到每个像素的距离,范围是0-1,但z值并非真正的笛卡尔坐标系中的距离,其实是一种相对度量。然
阅读全文