自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Lua动态类型的实现原理

这里其实是用C去模拟了继承关系,首先写CommonHeader宏不是为了做标记,而是相当于继承自GCObject,这也解释了lua源码中很多的转换函数。首先用一个TValue包含所有值的模版,TValuefields是一个宏,包含值本身和值的类型。GCObject里面值包含一个CommonHeather宏,存储了GC相关的三个变量,而在书写其他类型的时候都是首先写CommonHeader宏,为什么不采取如下方式呢?Value分为会被GC的值(GCObject)和不会被GC的值(其他)。

2023-07-10 15:47:33 78

原创 游戏客户端面经

游戏客户端面经

2022-10-29 22:57:07 1082 1

原创 Unity Shader入门精要读书笔记(14)

尽管渲染大多以照片写实主义为主要目标,但是非真实感渲染(NPR)也经常被使用.卡通风格的渲染卡通风格是游戏中常见的一种渲染风格.使用这种风格的游戏画面通常有一些共有的特点,例如物体都被黑色的线条描边,以及分明的明暗变化等.卡通风格的高光往往是一块分界明显的纯色区域.渲染轮廓线基于观察角度和表面法线的轮廓线渲染。这种方法使用视角方向和表面法线的点乘结果来得到轮廓线的信息。这种方法简单快速,可以在一个Pass中就得到渲染结果,但局限性很大,很多模型渲染出来的描边效果都不尽如人意。过程式几何.

2021-09-08 19:12:12 406

原创 GAMES101课堂笔记(10)动画

关键帧给出关键帧,中间过渡帧由插值得出。物理模拟质点弹簧系统能量损耗:(问题:所有运动都会最终停下来)改进:计算投影在ab方向上的速度。布模拟(切变会不真实,无法对抗平面外的力)改进方案粒子系统算法概要运动学反向计算Blend Shapes欧拉方法不准确且错误会逐渐累积不稳定中点法自适应步长大小的方法隐式欧拉方法(使用下一个时间的导数,稳定性较好)水模拟...

2021-08-30 16:59:05 120

原创 GAMES101课堂笔记(9)颜色

颜色线性颜色是一种人的感知。

2021-08-28 23:02:30 110

原创 GAMES101课堂笔记(8)相机、棱镜、光场

曝光曝光度控制的方法:1.光圈(类似人的瞳孔)遮挡一部分进入相机的光,F数=焦距/光圈直径。2.快门速度。3.ISO最终处理的时候,将得到的结果乘以一个数值。ISO乘一个较大的数,可以让图像变亮,但是也会放大噪声。棱镜的规律...

2021-08-27 15:18:53 176

原创 GAMES101课堂笔记(7)Advanced topic

2021-08-26 17:20:01 99

原创 GAMES101课堂笔记(6)材质与外观

漫反射方程材质在渲染方程中的表示:BRDFLo为出射光的radiance,fr为BRDF,由于是漫反射,因此fr为常数,Li为入射光的radiance,由于假设能量守恒,则Lo==Li,因此可算出fr即BRDF,反射率albedo为0~1之间,就是可以引入不同颜色的BRDF。镜面反射完美镜面反射折射定律折射光和入射光的方位角相反,与反射光一样。全反射现象,即无法算出折射角的余弦值,这只会发生在从一个折射率大的介质折射到一个折射率小的介质的情况。微表面模型物体表面粗糙,但是

2021-08-25 16:06:46 114

原创 GAMES101(5)光线追踪

光栅化的问题软阴影glossy反射间接光照速度快但是质量较低光线追踪问题光追更加准确但是很慢往往是离线的生成图像,而光栅化是实时的光追的假设:光线延直线传播、光线不会发生碰撞、光线从光源出发到达人眼(光路可逆性)。Whitted-Style光线追踪几个shadow rays的着色结果都会加回到image plane上光线方程表示:求光线与隐式表面的交点:将光线方程与隐式表面表达式联立,然后解出t,t必须为实数并且t>=0。求光线与显示表面的交点:求光线与三角形面

2021-08-18 22:46:11 219

原创 GAMES101课堂笔记(4)几何

隐式几何劣势:无法很快判断出几何的形状。优势:方便判断一个点是否再几何的内和外。距离函数提供了空间中每个点距离表面的距离。水平集(类似于等高线)分形(自相似)显示几何要么通过参数定义要么直接定义优势:方便判断几何形状。劣势:不容易判断内外。点云点坐标的一个列表。扫描出来的原始数据往往是点云。多边形面Obj文件的格式:将点、法线、纹理的坐标组织起来形成obj文件,v开头的行代表顶点坐标,vn开头的行代表法线,vt开头的行代表纹理坐标,f开头的行将不同的点

2021-08-17 20:33:19 173

原创 GAMES101课堂笔记(3)着色

着色:对不同物体应用不同的材质。Blinn-Phong光照类型:高光、漫反射、环境光照。Lambert(漫反射项)高光项(V和R很接近==半程向量和法线方向接近)p限定高光区域的大小(一般为几百)环境光项最终效果就是将上述三个项加起来着色频率每一个三角形进行一次着色每一个顶点进行一次着色每一个像素进行一次着色计算一个顶点法线的方法:求周围几个三角形的法线的平均(或加权平均)计算一个像素法线的方法:(已经得到了顶点的法线)利用重心坐标插值方法渲染管线.

2021-08-16 23:33:11 108

原创 GAMES101课堂笔记(2)光栅化

视口变换作用:从齐次裁剪空间映射到屏幕空间隔行扫描利用人眼视觉暂留的效应,减少工作量或者对视频进行压缩。原理:一帧只保留奇数行像素值,下一帧只保留偶数行像素值。缺点:对于高速运动的物体会出现画面撕裂。为什么光栅化选择三角形作为最小单位图形?三角形是最基本的多边形 任何一个多边形可以拆成若干个三角形。独特的性质 三角形一定在一个平面内。 三角形容易定义内和外。 可以比较方便地利用重心坐标的插值方法,利用三个顶点的信息得到一个渐变的效果。...

2021-08-16 15:05:09 124

原创 GAMES101课堂笔记(1)基础内容

判断游戏画质好坏的方法:屏幕是否足够亮(全局光照)光栅化:三维空间的几何形体显示到屏幕上计算机图形学中实时的要求:每秒大于等于30帧(30fps)否则为离线的(off-line)CV:一切需要猜测的东西(通过图像去判断各个对象)...

2021-06-03 15:22:48 268

原创 Unity Shader入门精要(7)

Unity Shader入门精要(7)纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射(texture mapping)技术,我们可以把一张图“黏”在模型表面,逐纹素(texel)(纹素的名字是为了和像素进行区分)地控制模型的颜色。在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标(texture-mapping coordinates)存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。通常,这些坐标使用一个二维变量(u, v)来表示,其中u是横向坐标,

2021-04-26 15:51:48 161

原创 Unity Shader入门精要读书笔记(9)

Unity Shader入门精要读书笔记(9)Unity的渲染路径渲染路径决定了光照是如何应用在Unity Shader中的,我们需要为每个Pass指明他使用的渲染路径,只有为Shader正确的选择和设置了渲染路径,我们才能正确的计算光照。大多数情况下,一个项目使用一种渲染路径,我们也可以在摄像机中设置来实现多种渲染路径。如果当前显卡不支持所选渲染路径,那么Unity会自动使用更低一级的渲染路径。渲染路径是我们和 Unity的底层渲染引擎的一次重要的沟通。前向渲染路径每进行一次完整的

2021-04-24 18:20:52 126

原创 Unity Shader入门精要读书笔记(6)

Unity Shader入门精要读书笔记(6)光不是从石头里蹦出来的,而是由光源发射出来的。在实时渲染中,我们通常把光源当成一个没有体积的点,用 l 来表示它的方向。光线由光源发射出来后,就会与一些物体相交。通常,相交的结果有两个:散射(scattering.和吸收(absorption)。散射只改变光线的方向,但不改变光线的密度和颜色。而吸收只改变光线的密度和颜色,但不改变光线的方向。光线在物体表面经过散射后,有两种方向:一种将会散射到物体内部,这种现象被称为折射(refraction)

2021-04-16 19:19:09 154

原创 Unity Shader入门精要读书笔记(5)

Unity Shader入门精要读书笔记(5)Unity Shader基本的结构这两行代码告诉Unity谁包含了顶点着色器的代码,谁包含了片元着色器的代码。#pragma vertex vert#pragma fragment frag// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MV

2021-04-16 16:38:21 82

原创 Unity Shader入门精要读书笔记(4)

左手坐标系和右手坐标系的区别在于,左手坐标系的Z轴是向里的,而右手坐标系的Z轴是向外的。在Unity中,模型空间和世界空间使用左手坐标系,观察空间使用右手坐标系。向量点积的几何意义是投影(可正可负)。叉积的几何意义是计算两个向量组成的平行四边形的面积。可逆矩阵即非奇异矩阵,不可逆矩阵即奇异矩阵。(行列式是否为0)对于正交矩阵,矩阵的转置就是矩阵的逆。标准正交基就是长度为1的正交基。线性变换包括:旋转、缩放、错切、镜像、正交投影(平移不是)...

2021-04-11 20:54:20 135

原创 Unity Shader入门精要读书笔记(3)

Unity Shader入门精要读书笔记(3)常见流程:(1)创建一个材质。(2)创建一个Unity Shader并赋值给上述材质。(3)把材质赋给要渲染的对象。(4)在材质面板中调整Unity Shader的属性以达到想要的效果。可以发现,Unity Shader定义了渲染所需的各种代码(如顶点着色器和片元着色器)、属性(如使用哪些纹理等)和指令(渲染和标签设置等),而材质则允许我们调节这些属性,并将其最终赋给相应的模型。四种Unity Shader模板(1)Standar

2021-04-11 18:51:40 188

原创 Unity Shader入门精要读书笔记(2)

第二章 渲染流水线概述Shader 即着色器,是渲染流水线里的一个环节。渲染流水线的最终目的是生成或者说渲染一张二维纹理,以虚拟摄像机、若干光源、若干Shader和纹理作为输入,输出我们在电脑屏幕上看到的效果。流水线系统的瓶颈在于生产速度最慢的工序生产所需的时间。渲染流水线的工作任务在于由一个三维场景出发、生产或者说渲染一张二维图像,由CPU和GPU共同完成。RTR4中将渲染流程分为4个阶段:应用阶段,几何阶段,光栅化阶段,像素处理。应用阶段:应用主导,通常由CPU负责实现,输出渲染所需

2021-04-09 19:37:47 109

原创 C++多线程编程个人笔记

C++多线程编程进程、线程的基本概念进程是具有独立功能的程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的一个独立单位。线程,又称为轻量级的进程,是CPU使用的基本单元,是进程内的一个执行实体或执行单元,是比进程更小的能独立运行的基本单位。由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。在现代操作系统中,资源申请的基本单位是进程,进程由程序段、数据段和PCB(进程控制块)组成。...

2021-03-22 22:03:01 123 2

空空如也

空空如也

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

TA关注的人

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