- 博客(102)
- 资源 (11)
- 收藏
- 关注
原创 unity 性能优化指标
显卡驱动所反馈的内存分配到。以下,闪退风险才低。中实际使用的空间地址大小。内存峰值控制在硬件总内存。存在泄露风险,控制在。
2023-09-17 13:42:50
692
原创 真实感角色渲染总览
skin:主要部分Specular Reflections:Global illuminationsubsurface Scattering(sss), 次表面散射轮廓模型UE4 的一些皮肤渲染特点:边缘溢色, 双镜叶高光,反向散射的光线传输 , 短距离动态辐照度。 Practica...
2020-05-19 11:00:26
644
原创 Human and Content Digitization
记录下我的开源项目数字人计划计划分为下面几个部分:1 渲染部分 眼睛,头发, 皮肤D2 自动聊天部分,包含对答,表情,口部动作3 扩展部分:姿态动作,舞蹈生成2020-5-15
2020-05-15 19:57:03
337
原创 Mental APP 以及 游戏的渲染性能优化策略-----delivering optimized mental apps ans games
Paralax cubemap reflections: 视差的cubemap reflectionsRender opaque meshed first and translucent meshes laterDon’t render invisible meshesSubmit offscreen work early...
2020-01-21 16:07:29
278
原创 模型法线的计算以及调整
顶点法线计算 computation:在①中,总结了几种根据 face normal 计算 Vertex Normal 的方法:1. MWE(Mean Weighted Equally)简单来说,就是根据顶点周围的共光滑组的面法线的和求平均来得到该点的顶点法线2. MWA(Mean Weighted by Angle)这个方法,在考虑了每个三角面的两条边的角度作为权重...
2020-01-20 16:39:59
2073
原创 基于相片集的头发重建研究实现
The overall flow is as described as follows. Firstly, we use colmap to get the frame pointcloud. After that, though hair segmentation with deep learning and gabor filter, we obtain the 2D hair...
2020-01-20 16:04:50
346
原创 light map 的改进策略
1,Lighting Technology of the Last Of Us(Sig 2013)这篇文章主要阐述了两个思想:1 烘培方向性 ,如下两张图的对比,可以看出2,接缝的最小二乘法优化二, Efficient Irradiance Normal Mapping 也是另外一种,改进light map 法线效果不好的方法。使...
2019-08-23 09:35:50
235
原创 PBR开发相关知识导图(及总结)
PBR 相关公式的推导:diffuse 部分:Specular 部分:PBR 知识体系总结(导图结构部分,参考浅墨)SpecularBRDF: Specular D: 法线分布函数(Normal Distribution Function) 描述微表面法线的概率分布 各项同性: GGX[2007], Blinn-Pho...
2019-07-05 09:07:17
1247
原创 《计算思维方式》摘要以及书评
“编程解题的一般思维方法或过程,可以概述为‘观察-联想-变换’, 通过对问题的观察,认识;然后通过联想,寻找问题同已有知识和经验之间的联系;最后通过变换,转为另一个或几个易于解决的新问题,最终达到解决问题的目的”----- 在程序查找bug 或实现一个需求的时候,经常都是这样的;这个过程中每个步骤都很重要; 观察,可以针对某个bug,或问题,首先需要log,或断点观察更多的...
2019-06-02 11:46:36
270
原创 头发的生成以及渲染方案
搁笔良久,今起复耕本文主要涉及头发的生长方案,光照模型,阴影效果,透明效果以及多次采样抗锯齿。一. 头发的生长: 定义根节点以及头发长度参数 头发从头皮生长,根据mesh的UV展开图,编辑头部头发生长区域以及利用颜色控制头发的长度。 鉴于头发后期仿真模拟的需要,此处使用tessellation shader,可以生长更加细密的头发。 对头部头...
2017-10-02 10:11:59
5141
原创 贴花编辑器实现细节
之前写过一篇unity 的贴花编辑,当时是学习unity插件的代码。最近因为工作需要,做了一个可以编辑纹理局部贴花的功能实现。大致上是根据以前的思想。但是自己用openGL 实现一遍,还是切身体会到不少深入的东西。回顾之前的贴花编辑器的思想,在unity 中用gameObject 作为 decal。 然后通过对影响到的mesh做切割,获取顶点,再重新计算mesh信息(uv, tangent
2017-04-18 18:48:30
1135
原创 简单的纹理旋转以及平移操作
实现效果,可以控制材质纹理的旋转以及平移编辑。实现思想:通过传入shader 中的矩阵,利用鼠标的运动,影响控制纹理坐标的改变,进而实现纹理的平移和旋转操作知识背景:矩阵的旋转平移实现步骤:1.定义uniform, 2. 获取到纹理,纹理的坐标矩阵3. 鼠标的运动改变纹理的矩阵坐标4. 在渲染流程中set uniform matrix关于鼠标控制的附
2017-03-31 15:45:08
2095
原创 编辑器中材质参数设置以及记录保存功能
PBR 参数调整记录功能 功能介绍 struct matPBRInfo{ int nShininess; int nRougthness; bool nHasTexture; string nTextureFile;}Typedef std:: map TMAT_PBRINFO; typedef unsigne
2017-03-05 17:15:12
1154
原创 unity 溶解贴花编辑器
实现的效果: 游戏中,比如溅水花到墙壁上,然后水渍在墙上慢慢消融的这种效果实现机制: 首先需要把水花贴到墙壁,这里需要用到贴花的知识。然后,实现贴花消融的效果,需要一个溶解的shader。在贴花的实现中,有几种方法,一种是利用后期的方法,通过深度buff,检测到可以看到的物体的表面,然后对这些模型重新着色,这种方法的好处是可以获取更加逼真自然,也不容易受物体表
2016-11-26 11:51:17
2823
原创 基于UE4+ OpenCV 的混合现实 (webCamera, mix-reality, blue screen matting)
总体效果 类似混合现实,实现展示玩家玩的VR游戏的实况基本思想 利用openCV 插件,通过摄像头获取到玩家在蓝幕中玩游戏的场景,再使用蓝幕技术,对图像做处理,获取玩家的图像;最后和游戏场景进行叠加。具体实现( UE 4.12, Opencv 2.4.13)1, 在UE4 中打开 vs,添加一个class, 继承 Actor, WebCame
2016-10-16 11:36:38
10468
原创 C++元编程思想(译)
C++ 是一种类型概念较强的语言,编译的时候都需要知道变量的类型。有时,在编译过程中,需要动态确定类型先看一种简单的 class Book { public: Book(const string & author_, const string & title_, const strin
2016-07-21 08:57:14
589
原创 透明物体的渲染
前段时间涉及到一个功能的开发,游戏中当模型首次出现在场景中加载的时候,需要有渐变出现的效果。当时是对模型材质进行替换为透明材质,然后对透明材质alpha做曲线变换。这个过程看似比较顺利,但是对于怎么渲染透明物体确是没有深入的研究。以后开发中需要多深入的了解过程中的一些隐藏的部分,这样能力才会有更多的提高。-----------------------------------------
2016-06-26 10:33:58
2415
原创 游戏中鼠标拾取方法
在游戏中,鼠标拾取是不可或缺的。在D3D sample 中有一种方法,对鼠标点进行MVP 的逆变换,得到它的空间位置,然后使用 函数 D3DIntersect , 和物体的位置进行比较,进而判断出是否是拾取到某个mesh1. 获取当前的转换矩阵,包括 projection, view, 和 worldvoid detect_picking(){ // get th
2016-06-25 08:55:20
2483
原创 辉光效果(Glow Effect)
辉光效果在游戏中有着广泛的应用,比如城市夜景,比如特效光效产生辉光,还有些人物模型在升级时候加辉光加强效果。自然界中,辉光产生的原理是因为光线经过折射以及散射,到达人眼中的光线看起来会比原来的光源大,尤其是在雨雾天气;明白了辉光产生的原理。在游戏中,我们要制作辉光效果的大体思路就是,找到需要产生辉光的部分,然后对它进行glow,blur;最后一步即贴回到 framebu
2016-04-30 17:17:50
17800
原创 Kiss the Rain -- 地表雨水动态效果 (Dynamic rain and its effects)
水主要影响 材质,水积累和水洼Type 1: 干燥区域Type 2: 湿地区域:即湿润,但是没有积水的地方Type 3:湿透区域:比如水洼的边缘,the water remains to some extent but no puddles are formed.Type 4:水洼区域;对于Type 2, 在文献[1] 中,建议设置5到10 的镜面反射系数,0.
2016-03-07 00:36:43
4352
原创 智能指针
智能指针即是可以让程序员不用考虑释放的问题. auto_ptr 的实现如下,template class auto_ptr{ T* ptr; public: explicit auto_ptr(T* p =0) : ptr(p) {} ~ auto_ptr() {delete ptr;} T& operator*
2016-01-28 17:46:17
851
原创 本月工作总结—淡入淡出效果以及贴花的改进
游戏中人物出现在视野中,需要有个渐变的过程,及淡出。做法当然想到用alpha 的渐变来控制,此时需要在update 中不断的变化alpha 值。这里涉及到一个问题,alpha 的渐变,要有人物的实际淡入淡出效果,还是需要是一种透明材质。所以综合来说,思路如下1. 有淡出的出发条件,保存原来材质,设置透明材质;2. update 透明材质的alpha 值,通常是 0~1 的渐变;
2016-01-28 15:22:56
685
原创 写在2016开篇
2015年就要过去了,有诸多不舍;2016年就要到了,满怀希冀;过去的一年中,尝试过很多,广泛的涉猎游戏图形编程领域。对游戏开发有更多的认识,年底也经历的很多的反思,在这条道路上要怎么走的更好。2016,是自己迈入计算机领域的第10个年头,在这个特殊的年头,希望自己有更大的进步。总结过去的一年,也是参加工作第一个重要年份,觉得关键是要养成良好的工作学习习惯。优秀的习惯,是能够卓越的关键
2015-12-31 22:33:16
491
原创 顶点处理机制
渲染管线主要由以下各阶段组成: 顶点操作包括: 转换操作、光照操作 以及动画操作。 1世界转换 1.1 View transform 相机空间 根据3个参数: Eye, At and Up. 这些参数用于构造 相机空间 相对于相机空间,维护场景对象时,需要将相机空间(Eye, u,v,n) 叠加到世界空间(O,e1, e2, e3) 分为两步:将Eye 移到 O; 旋转
2015-12-08 09:23:10
1059
原创 光照模型
物体表面的颜色由 自发光(emissive), 环境反射(ambient), 漫反射(diffuse) 和 镜面反射(specular)等光作用的总和。 介绍并Cg代码实现了这几种光照模型。
2015-11-21 09:38:51
645
原创 3D 图形转换(3D Transformation)
1. 移动 其中(a,b,c) 表示移动的方向向量,比如沿X 移动 -5, 则表示为 图形学中,有以下几种空间概念: object space, world space, view space, projection space, 和 screen space 通常物品显示出来,需要经如下变换 旋转: 如下分别表示沿X,Y,Z 旋转 缩放变换:sx, sy,
2015-11-16 22:25:24
1067
原创 粒子系统
1. 基本原理粒子系统由大量的粒子构成,每个粒子有大小,位置以及纹理,另外还有比如颜色,透明度,运动速度,加速度,自旋周期,生命周期等属性粒子系统随时间不短变换,常经过下面几个变换1)产生新的粒子2)更新现有粒子属性3)删除已经消亡的粒子4)绘制出粒子2. 粒子系统设计1) 定义粒子数量,区域,宽度,高度 #define PARTICLE_NUMBER 100
2015-11-16 22:22:00
649
原创 常见智力算法类面试题分析
1. 二进制中1 的个数int NumberOf1(int n){ int count = 0; while (n) { ++ count; n = (n-1) & n; } return count;}2. 出现次数超过一半的数字 利用标记,相邻相同就是加1,不同减1 一个数字,一个次数3. 找
2015-11-15 22:42:07
498
原创 游戏区域系统设计
游戏中地图中需要设置不同的区域,尤其对于大型网络游戏,到达不同的区域通常需要提示本区域名称。本节主要讨论一种游戏区域信息的管理方法:实现步骤 1.首先对区域进行边界的描边,获取区域的顶点描边信息2. 对存储有区域以及区域描边信息的地图,进行信息归纳,形成稀疏矩阵存储, 其中X再加入区域ID信息区域信息: struct SMapAreaInfo { typede
2015-11-15 22:00:05
1030
翻译 A*算法
http://www.redblobgames.com/pathfinding/a-star/introduction.html Breadth First search frontier 1. pick and reomove a location from the frontier 2. mark the location as visited so that we know n
2015-11-15 21:33:25
359
原创 BSP 树 和 八叉树
八叉树: The Quadtree derives from the idea of dividing a square area into smaller squares. start with a unity square as the root of the tree, now divide the square into four smaller aquares. eac
2015-11-15 21:28:29
1919
原创 细胞状态机(Cellular Automata)产生地形
以下解释来自 百度百科: 细胞自动机模型的基本思想是:自然界里许多复杂结构和过程,归根到底只是由大量基本组成单元的简单相互作用所引起。因此,利用各种细胞自动机有可能模拟任何复杂事物的演化过程。 分类: 1)最简一维细胞自动机: 黑色为1,白色为0. 那么任意一个方格和周围两个方格就有 111,110,101,100,011,010,001,000 8种状态。 2)编码规则: 当前细胞ci,
2015-11-15 21:26:40
1436
原创 骨骼动画
一,3D模型动画原理和分类 关节动画(Skeletal Animation): 原理: 角色模型是层次模型,要活的某一个部分相对于世界坐标的位置,必须从根节点开始遍历该节点所有的祖先节点累计计算模型的世界变换。模型不是一个整体的Mesh,而是分成很多部分Mesh,通过一个父子层次结构将分散的Mesh组织在一起,父Mesh带动其下 Mesh 运动。动画帧中设置各个子Mesh相对其父Mesh变换
2015-11-13 21:21:03
1306
原创 【Unity Shaders and Effects Cookbook】Diffuse Shading
1. 基础的shader 写法Shader "CookbookShaders/BasicDiffuse" { Properties { _MainTex(“Base(RGB)”,2D) = “white”{} } SubShader { Tags { "RenderType"="Opaque"
2015-11-09 21:24:33
671
原创 【Unity Shaders and Effects Cookbook】Using Textures for Effects
使用纹理可以使得Shaders更快速,也更逼真;使用的同时,需要控制纹理数目,避免过多加载纹理的运行消耗下面逐步说明使用纹理制作流行水面的效果:1.定义 X方向以及Y方向的速度变量(因为UV 是二维的),控制纹理的流动速度Properties{ _MainTint("Diffuse Tint",Color) = (1,1,1,1) _MainTex("Base (R
2015-11-01 11:50:27
483
原创 【Design Patterns】命令模式
//抽象出 orderpublic interface Order{ void execute();}//定义类,封装执行方法public class Stock{private String name= "ABC";privare int quantity = 10;public void buy(){ System.out.println("Stock[Name:" +
2015-11-01 11:19:06
335
introduce to D3D Game Programming code
2015-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人