自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (4)
  • 收藏
  • 关注

转载 Unity 灯光Shader

一、一些光照模型的概念讲解我们知道,光照模型是真实感图形渲染的基础,从 1967 年 Wylie 等人第一次在显示物体的时候加进光照效果后,该领域迅速的发展。而这一节,我们主要看看最常见的漫反射、Lambert和镜面反射、Phong、Blinn-Phong这五种光照模型。  1.1 漫反射环境光是对光照现像的最简单抽象,因而局限性很大。它仅能描述光线在空间中

2017-01-18 14:54:44 2854

转载 SurfaceShader

一、表面着色器的标准输出结构(Surface Output)  要书写Surface Shader,了解表面着色器的标准输出结构必不可少。此为表面着色器书写的第一个要素。而定义一个“表面函数(surface function)”,需要输入相关的UV或数据信息,并在输出结构中填充SurfaceOutput。SurfaceOutput基本上描述了表面的特性(光照的颜色反

2017-01-17 19:21:04 526

转载 UnityShader基础

Shader "name" { [Properties] Subshaders [Fallback] } 定义了一个着色器。着色器拥有一个 Properties 的列表。着色器包含一个子着色器的列表(SubShaders)。并且至少包含一个(SubShader)。当加载一个着色器时,Unity 将遍历这个列表,获取第一个能被用户机器支持的着色器。如果没有子着色器被支持,Unity 将尝试使用降级

2017-01-16 17:05:50 385

转载 剔除与深度测试(Culling & Depth Testing)相关内容

一、剔除与深度测试(Culling & Depth Testing)相关内容 1.1 剔除(Culling)的概念 对于实时交互的3D环境而言,现实的速度和效率是非常重要的。虽然现在的硬件能力非常的快,但是要想保持30FPS的同时处理数十万的三角形,以现在的主流机器来说还是有些困难的。为了解决这种问题,人们提出了很多方法,其中有LOD,有Culling。这两

2017-01-13 11:58:32 2192 1

转载 Unity3d Shader2

一、子着色器(SubShader)相关内容讲解话不多说,我们接着上篇文章继续讲。Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器。我们知道,子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态。子着色器的写法如下:Subshad

2017-01-13 11:38:50 351

转载 Unity3D Shader

本篇文章中,我们学习了Unity Shader的基本写法框架,以及学习了Shader中Properties(属性)的详细写法,光照、材质与颜色的具体写法。写了6个Shader作为本文Shader讲解的实战内容,最后创建了一个逼真的暴风雪场景进行了Shader的测试。依旧是国际惯例先上本文配套程序的截图。先是一张远眺图:浅墨在场景中放置了一个自动旋转的剑阵,瞬间武侠气

2017-01-13 11:08:16 661

转载 Unity中的DeCoroutine

1.什么是协调程序unity协程是一个能暂停执行,暂停后立即返回,直到中断指令完成后继续执行的函数。它类似一个子线程单独出来处理一些问题,性能开销较小,但是他在一个MonoBehaviour提供的主线程里只能有一个处于运行状态的协程。2.协同程序的特点1、协程在中断指令(YieldInstruction)产生时暂停执行2、协程一暂停执行便立即返回 //中断协

2016-12-28 18:51:02 349

转载 Unity中的Delegate

详解Unity中的委托与事件阅读目录0x00 前言0x01 从观察者模式说起0x02 向Unity3D中的SendMessage和BroadcastMessage说拜拜0x03 认识回调函数机制----委托0x04 委托是如何实现的0x05 委托是如何调用多个方法的?回到目录0x00 前言由于工作繁忙所以距离上一篇博客已经

2016-12-27 13:38:12 1701

原创 flash 调用启动一个.exe文件并向其传递参数的方法

var file:File = File.applicationDirectory;//创建File对象 file = file.resolvePath("D:/Program Files/example/NativeAir/NativeAir.exe"); //指定.exe文件路径 var nativeProcessStartupInfo:NativeProcessSta

2015-07-21 16:29:01 3338

转载 Unity3D学习之----------------------------------UI控件回调挂载

本文将以游戏中最常见的Button为例介绍几种按钮触发回调的方式。一、可视化创建及事件绑定第一步:通过Hierarchy面板创建button,如图第二步:创建一个脚本名为TestClick,并定义一个名为Click的public方法?12345678910using

2015-07-09 15:23:17 1858

原创 Away3d ---------------------------------------------骨骼动画优化

用过Away3D的朋友估计都会发现,在Away3D里面使用超过一定骨骼数量的角色,当场景里面角色的数量稍微多一点,整个场景就会很卡。 对于这个现象,有两个层次的原因:1.Stage3D的VC缓存器数量的限制,造成了对需要占用VC的骨骼信息有限制。对于超过了限制数量的骨骼部分,Stage3D会把数据退回CPU计算。            一方面 通过对Anima

2015-07-06 16:00:17 1066

转载 Unity Shader——Writing Surface Shaders

从今天起,开始翻译Unity关于shader的官方文档。翻译水平比较一般,目的主要是通过翻译来提升对shader的见解,也让其他人更容易的了解shader。以下开始正文内容: 编写Surface Shaders  和光交互的shader写起来很复杂,有不同的光照类型、阴影选项、渲染路径(正向渲染和延迟渲染),有时shader需要考虑所有的复杂性。  Unity中的S

2015-05-15 16:49:11 1197

转载 ROBOTLEGS轻量级AS3框架

目录[-]1.  MVC1.1.     MVC分解1.2.     消息通信、依赖注入等2.  RobotLegs与其它框架的比较3.  RobotLegs的依赖注入3.1.        依赖注入3.2.        SwiftSuspendersSwiftSuspenders 适配器注入语法Injector 类的映射注入MediatorMap

2015-03-04 17:13:08 995

原创 Away3D之--------------------------水面效果

一. 水面效果:实现水面效果的原理很简单,只需将水平面绘制作为一个平面,用环境贴图模拟水对环境的反射,同时为水平面增加法线效果模拟水面波光粼粼的效果即可。具体代码如下:使用SimpleWaterNormalMethod方法(该方法实际是使用两张法线贴图叠加作为最终法线进而计算发射)绘制该平面的反射效果即可。二. 利用Pix

2015-01-24 15:49:45 1190

原创 次表面散射Subsurface Scattering(SSS)

一.

2014-12-29 14:59:40 8967 1

原创 凹凸贴图---------------- Bump Map vs Normal Map vs Parallax Map

一. 简述:凹凸贴图是用来更细致的表现物体表面情况如凹凸不平,褶皱,波浪等,这种表现并不改变物体表面结构数据(不改变定点位置信息)而是通过利用 光线 纹理 的明暗变化让眼睛误以为是表面的凹凸不平。实现凹凸贴图的方式有三种:Bump Map(浮雕凹凸贴图), Normal Map(法线贴图), Parallax Map(视察贴图)。二. Bump Map(浮雕凹凸

2014-12-18 17:04:16 2470

原创 更常用的BRDF--------Phong光照方程

Phong光照方程:相对于物理的BRDF使用较多的反射计算方程为Phone光照方程如下, 其中v是从表面点p到视点的向量,r是光线l对法线n的反射光线,mshi是参数因子用于不同材质的不同反射强度。如下图:由公式可知向量r和向量v越接近反射亮越大,图中也可以很好理解两个向量越接近反射到眼睛的光线越多。关于反射向量r的计算方式根据数学知识可简单求出 r = 2(n

2014-12-15 22:34:09 4448

原创 Away3D-------------------------------------------Material的渲染

一.  基本介绍对场景中的渲染对象进行渲染时,渲染方式是由该渲染对象的材质决定的。每个材质中包含若干个pass,每个pass都是一种单独的渲染方式,而默认的材质类型为单通道材质类型(SinglePassMaterialBase),该类型的材质绘制是将所有绘制都在一个通道内完成,而对于不同类型的绘制则用方法的形式决定如可以通过设置shadowMethod来决定对于阴影的绘制方式 通过

2014-12-11 14:15:24 1131

原创 BRDF

一. BRDF简介:BRDF表示的是双向反射分布函数(Bidirectional Reflectance Distribution Function),它描述了光线如何在物体表面进行反射,可以用来描述材质属性。BRDF的输入参数是入射光的的仰角、方位角、出射光的仰角、方位角,还与入射光的波长相关。BRDF的输出结果是一个数值,表示在给定的入射条件下,出射方向上反射的相对能量,另

2014-12-09 17:58:11 6346

原创 Away3D之-----------------DefaultRenderer VS DeferredRender

一. DefaultRenderer 渲染流程DefaultRender是away3d默认的渲染模式,在每帧绘制时View3D按照以下流程进行绘制:1. 清空渲染对象列表,并重新填充该列表 _entityCollector:EntityCollector,重新填充渲染对象的方法则是遍历    场景中的所有节点,判断该节点的包围盒是否在相机的截头体内(EntityColl

2014-12-08 15:31:37 1060

转载 Deferred Shading介绍

在本文我将展示如何在XNA中使用deferred rendering。首先让我们理解什么是deferred shading,然后学习这个技术的几个步骤,从创建Geometry Buffer一直到管理材质。最后,我们介绍如何创建一个内容管道处理器使用这个技术。在每个步骤中,我会详细解释原理,在后面的章节中,有时我也会回到前面并重写某些代码。你最好理解不同的坐标系,例如世界空间、视空间和屏幕空间,这可

2014-12-01 16:00:22 1162

原创 Away3D--------------关于太阳(光晕和上帝之光)的表现

一. 太阳光晕概述

2014-11-17 16:39:58 2063 1

原创 Away3D--------------关于折射

一. 概述      折射是自然界中常见的xia

2014-09-04 17:23:34 1119

原创 Away3D之---------------简单的后处理 灰度滤镜(GrayFilter)

灰度效果常被用于死亡世界

2014-08-28 20:16:57 1370

原创 Away3D之-------------------------------------------AGAL入门

一. AGAL概述:

2014-08-22 10:47:34 1031

原创 实体-组件-系统(ECS)实现数据驱动的游戏框架

ECS实现数据驱动的游戏框架

2014-07-04 22:48:43 6326 1

原创 事件/消息派发器

项目工程中经常使用事件/消息派发以及消息回调机制,最近在工作中我遇到了事件派发器的一点小问题在此记录以备之后再次使用。一. 事件派发器需求:  A类为一个数据功能集合 其包含很多属性 A.a A.b A.c,每个属性又包含很多子属性 依次。。  要求任意属性或者其子属性发生变化时刷新/调用B类一个回调方法。二. 实现方式一 -------------

2014-03-20 10:30:41 1611

转载 关于全局变量和全局函数的声明

申明全局变量,全局函数一定要在cpp中申明其他类引用该全局变量就include该cpp的h文件然后extern一下就好了否则容易出现该重复定义错误这个"容易"是如何解释的呢?例如A.h中如果申明了全局变量int Global;在B.h中include "A.h"              extern int Global;则你inc

2013-12-25 14:28:04 2813

原创 Cube Texture与环境纹理

一. Cube Texture:cube texture顾名思义是一个立方体纹理,普通纹理一般是一张二维图,由二维坐标(u,v)决定贴图目标的像素点, 立方体纹理即是由一个立方体(六个面/六张纹理)每个面上的二维图组成,是一个包含了上下左右前后六个面的纹理组。因此在使用立方体纹理时也就不能简单的使用(u,v)坐标来对纹理采样,需要对二维纹理坐标扩展到三维,由三维坐标(u,v,w)确

2013-12-18 20:31:53 3150

转载 Direct9学习之--------------------------实时阴影的另一种实现ShadowMap

ShadowMap1、原理阴影实时渲染是计算机图形学的高级技术。它能提高场景的真实感。两种通用的阴影渲染技术分别是地图阴影(shadow map)和体积阴影(shadow volumes)。地图阴影的优势在于效率很高,因为地图阴影只需要渲染场景两次(一般来说)。并且不需要进行几何处理和产生额外的mesh。无论多复杂的场景,使用地图阴影总能保持很好的性能。地图阴影的概念很直观。首先,从光

2013-12-13 10:44:32 1287

原创 内存管理与检测

今天开始重构一个DEMO工程,在整理代码时发现之前写过的一个内存管理与内存检测代码,再此梳理一番加深下印象。一.内存检测模块的作用:在做项目时经常出现内存泄漏内存访问越界等情况,当工程比较大时排查起来会相对比较困难。这个内存管理模块的作用就是管理内存分配和使用并在DEBUG环境下统计内存使用违规情况。二.内存管理模块的基本原理:  该内存

2013-12-09 23:17:49 685

原创 Direct9学习之--------------------------动画<骨骼动画>

一. 骨骼动画基本原理:骨骼动画,是游戏中使用最多的动画表现形式,游戏中玩家怪物的动作表现基本都是基于骨骼动画。首先要了解几个名词: 1. 关键帧: 在帧动画中用不连续的几帧近似描述动作过程,用于标记在动作过程中某帧的具体表现。2. 蒙皮信息: 所谓的蒙皮信息则是记录了每根骨骼对应网格中顶点的信息,如骨骼bone1影响的顶点列表以及对其影响的权重信息等内容。骨骼动画基本

2013-12-08 22:41:42 912

原创 Unity3D学习之 ------------------------ "Hello Unity"控制角色移动

一. 创建地形:Unity3D创建编辑地形的方式相当简单,在操作界面中 GameObjec ---> CreateOther ---> Terrain 即可以创建地形,点击地形在编辑界面调整地形高度,为地形不同区域设置贴图。 与其他引擎相比无需编写代码即可创建一个的地形。 其创建过程更像是使用游戏编辑器,关于编辑器界面的使用在此不做介绍。二. 创建主角并

2013-12-07 16:24:04 1190

原创 Real-Time Rendering笔记 --------------------------------- 渲染管线

一. 渲染管线:      渲染管线是指渲染的基本流程或步骤,基本渲染管线分为三个阶段: 应用程序( 逻辑 ) ------>  几何( 坐标变化和光照流水线 T&L )------> 光栅化      1. 应用程序( 逻辑 ) 阶段: 进行的是逻辑处理 ( 如: 移动相机,改变粒子位置等。) 是在CPU中进行处理的。      2. 几何(

2013-12-06 17:22:16 1120

原创 Direct9学习之--------------------------模板缓冲的应用

一. 模板缓冲区:板缓冲区(Stencil Buffer)与后台缓冲区大小相同,类似于深度缓冲区可以控制相似是否写入。模板可以通过设置简单的参数及测试方法允许或者拒绝像素的写入。利用模板缓冲技术可以实现阴影体 镜面反射 渐入渐出等效果。这里只介绍阴影体和镜面的实现方式。二. 镜面反射: 镜面反射实现思路比较简单利用模板测试的方式分三次绘制即可实现

2013-12-04 23:30:59 962

原创 Unity3D学习之------------------------初探Unity

一. 初识Unity: Unity3D是当前世面上比较常见也是比较火热的跨平台游戏引擎,对于微端和手游没有任何经验的我,今天第一次接触到Unity. 它给我的第一印象与其说是一个引擎倒不如说它更像一个可视化的逻辑编辑器。Unity3D的开发环境就是一个编辑器环境,所有游戏中的对象被抽象为GameObject Scene 等,通过为每个对象挂在逻辑脚本实现游戏逻辑。脚本语言主要以JAVA和C

2013-12-02 21:07:39 759

原创 Direct9学习之--------------------------地形

一. 地形的作用:            地形,不言而喻是用来描绘游戏中高山 盆地 平原等地貌,用于确定对象在游戏世界的空间高度。二. 地形基本原理:       地形的实现是用地形网格(N行M列矩形网格)和高度图实现,地形网格用于绘制地表,高度图信息则用来表示地形高度。通过高度图的不同高度使地形形成高山盆地等。(高度图中保存了地形高度信息)   

2013-11-30 15:43:46 1051

原创 Direct9学习之 ------------------- 天空盒

一. 天空盒的应用:           天空盒用于表现游戏中的天空或者环境。二. 天空盒基本原理:      天空盒就是一个包含场景所有元素的长方体盒子,该盒子的六个面附有环境贴图,所有游戏行为均是在盒子中进行,在盒子内看来,附有贴图的盒子既是整体天空环境。三. 天空盒实现方式及相关代码:由天空盒的基本原理可以将其实现归纳为以下步骤:        1

2013-11-28 22:58:37 1643

原创 Direct9学习之-------------------------公告板技术

一. 公告板的应用:           公告板可被用于场景中对细节要求不高的树木花草,也可用于玩家头顶的某些特效表现等。其好处自然是高效简洁。二. 公告板基本原理:公告板最基本的原理就是,绘制一个带贴图的矩形区域,由阿尔法混合使贴图看起来更逼真,并且保证每帧矩形都是正对摄像机,从而在效果上表现出贴图中的对象。 由于只绘制了一个矩形因此其绘制的性能很高。三. 公告板

2013-11-26 22:01:55 971

海洋,大海实现

sea.h Sea.cpp 大海海洋原理实现代码

2013-11-30

地形 Terrain

Terrain.h Terrain.cpp 基本原理代码实现

2013-11-30

SkyBox天空盒

SkyBox.h SkyBox.cpp 天空盒相关代码

2013-11-29

公告板代码实现

公告板技术的具体实现代码 代码不可直接运行(缺少其他类的支持) 但公告板相关实现代码全部经过测试无误的。

2013-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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