- 博客(43)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 AntiAliasing学习笔记
简介MSAA是直接硬件支持的,使用pattern在一个像素上做多次fragment计算,最后对去结果做平均的方式,这是在输出之前对结果做滤波,但是这个方法的缺点是占用的显存会变成原来的pattern采样点的倍数。当然这个MSAA多重采样的性质也可以用到别的需要这个这特特性的地方,比如Voxel化FXAA和SMAA都是形态学方法抗锯齿,简单而言就是找到边界,在边界位置做低通滤波,即采样求平均值,就可以做到抗锯齿TAA则是采用Temporal的方法,做时间上的滤波,需要注意上一帧的数据在当前帧是否被遮挡住
2021-05-15 00:03:08 1492 4
原创 GPUTerrain简单实现
简介在看了狗哥老司机和MaxwellGeng等大佬关于GPUDriven的实现,就参考Ubisoft实现一个简单的GPUDriven的Terrain的绘制因为地形绘制时需要的数据不需要一直更新,所以只要在一开始传入地形的HeightMap和NormalMap之后,剩下的绘制操作基本不太需要传入其他大量的数据,非常适合GPUDriven。使用GPUDriven的好处是可以在很少的几次DrawCall就可以绘制出整个地形场景,而且可以剔除掉不需要的面片,减少绘制的压力。做GPUDrivenTerrain
2021-04-08 01:35:07 976
原创 基于物理的实时大气散射原理与实现
原理实现引用[1] https://ebruneton.github.io/precomputed_atmospheric_scattering/[2] https://hal.inria.fr/inria-00288758/document
2021-03-02 07:39:44 1045
原创 Games101学习笔记四 辐射度量学
文章目录Radiometry总览辐射能量与辐射通量 Radiant Energy and Flux (Power)重要的度量单位Radiant Intensity (辐射强度)Angles and Solid Angles(角和立体角)Differential Solid Angles(立体角微分)ω\omegaω as a direction vector(ω\omegaω是方向向量)Isotropic Point Source(各向同性点光源的辐射强度计算)IrradianceLambert’s Cos
2021-01-30 02:49:07 675
原创 AlpbaBlend 细节
https://www.khronos.org/opengl/wiki/BlendingAlpha Blend 的计算只有一种形式,而且可以分别针对RGB和Alpha单独给出Blend的模式* Orgb = srgb * Srgb + drgb * Drgb* Oa = sa * Sa + da * DaThe same goes for the two subtraction equations. This separates the RGB component computation fro
2021-01-06 23:46:37 257
原创 Games101学习笔记三(几何)
表达几何有非常多的方式,每种方法都有其特定的应用场合,没有最优的,只有合适的。Implicit Surface采样会变得困难但是Inside和Outside测试将会变得非常容易Explicit Surface采样会变得容易Inside/Outside测试会变得很困难Algebraic Surfaces (Implicit)Constructive Solid Geometry (Implicit)Distance Functions (Implicit)注意距离场的定义
2021-01-06 23:32:39 635
原创 Games101学习笔记二(锯齿、模糊等失真的本质)
文章目录AliasingAntialiasing思路采样前模糊从频域分析抗锯齿的本质滤波则是去掉高频信息减少失真的错误的方法引用内容参考来自闫令琪老师的课程,有兴趣的同学可以去看完整课程Aliasing在计算机图形学中,很多失真(artifact)都是由于采样,比如Jaggies – sampling in space (在空间采样不够)Moire – undersampling images (图像欠采样)Wagon wheel effect – sampling in time (在时
2021-01-04 01:32:02 585
原创 Games101学习笔记一(渲染流程)
文章目录齐次坐标(Homogeneous Coordinates)3D转换矩阵(3D Transformations)3D 缩放3D 平移3D 旋转Rodrigues’ Rotation FormulaRodrigues’ Rotation Formula旋转证明相机转换相机平移相机旋转相机投影NDC到屏幕空间(Canonical Cube to Screen)光栅化(Rasterization)减少失真的错误的方法引用内容参考来自闫令琪老师的课程,有兴趣的同学可以去看完整课程齐次坐标(Homoge
2021-01-03 04:09:03 1632
原创 Bloom实现及其数学分析
文章目录Bloom原理Blur流程详解引用Bloom原理本文主要参考 https://catlikecoding.com/unity/tutorials/advanced-rendering/bloom/This is somewhat analogous to how our eyes adapt to deal with bright scenes,Bloom效果是在游戏中的Bloom的流程如图所示Blur流程详解参考[2],圆对称的2d高斯核是可以线性分解的,高斯核可以被分解为水平
2020-12-28 01:17:30 764 1
原创 简单阴影分析
Shadowmap是常用的阴影绘制的技术。实现方式实现的Shadowmap的方法就是,在光源位置放置一个相机,朝着光照方向,绘制一遍场景,得到的深度图就是Shadowmap。而在真正绘制场景的时候则可以将场景的世界空间下的点P使用灯光的proj*view矩阵转换到Shadowmap坐标系下,采样shadowmap,把得到的shadow值与场景点的深度值进行比较,如果当前点的深度值比shadow值更大,那么该点就处于阴影中,从而不做对应点的光照计算。潜在问题本节参考1、Shadow Acne主要表
2020-12-27 05:15:17 1481
原创 Lambert表面的brdf推导
Lambert表面的brdf推导朗伯体性质详细推导引用Lambert表面的brdf推导在微表面模型下,基本的反射公式如下Lo(p,ωo)=∫Ωfr(p,ωi,ωo)Li(p,ωi)n⋅ωidωiL_o(p,\omega_o) = \int\limits_{\Omega} f_r(p,\omega_i,\omega_o) L_i(p,\omega_i) n \cdot \omega_i d\omega_iLo(p,ωo)=Ω∫fr(p,ωi,ωo)Li(p,ωi)n⋅ωi.
2020-12-25 01:05:53 4324 3
原创 球谐光照细节分析
文章目录使用球谐函数的本质蒙特卡洛积分正交基函数球谐(Spherical Harmonics)球谐投影(SH Projection)SH函数的特性(Properties of SH Functions)Rotating Spherical HarmonicsSH光照表面漫反射(SH Lighting Diffuse Surfaces)Envmap的例子说明参考文献使用球谐函数的本质使用球谐函数的本质就是把一个点上的空间光照信息投影到球谐基向量上,然后再在需要使用的时候,使用投影得到的球谐系数来还原逼近
2020-12-20 19:15:16 910
原创 球谐光照简述
本文主要参考作者在Siggraph上的PPT,都在参考文献中给出,详细理论证明请看论文,代码也在以下链接的论文主页上论文作者提出经验和理论证据表明,在实践中,irradiance仅取决于的前2阶spherical harmonic modes of the illumination,并且可以表示为表面法线的笛卡尔分量的二次多项式。 实际上,Lambertian BRDF滤波器的99%能量包含...
2019-03-06 12:15:32 1376
原创 坐标系转换矩阵简单说明
在渲染开始前,从local space转换到world space,再转换到camera space,使用矩阵变换变换矩阵先给出变换矩阵[xpypzp1]=[100xe010ye001ze0001][xuxvxw0yuyvyw0zuzvzw00001][upvpwp1]pxyz=[uvw00001]puvw\begin{bmatrix}x_p \\ y_p \\ z_p \\1...
2019-03-02 14:27:00 6252
原创 C++虚函数表杂谈
通过分析windows平台简单c++程序来验证C++虚函数网上的相关说法,相关汇编是win32 x86汇编,不过都比较简单。同时回顾内存对齐相关知识,以及函数调用的具体过程的相关知识。要分析的代码如下:#include <iostream>#pragma pack(16)using namespace std;struct MyStruct1{ char a; i...
2018-10-09 22:01:39 204
原创 四元数做旋转过程的具体证明
文章目录背景万象节锁数学基础旋转以及证明证明过程组合旋转矩阵表示球面线性插值参考文档背景一般情况下我们都会使用矩阵做旋转变换,绕某个轴或者绕任意向量,这都有在 DirectX数学介绍 做过介绍,虽然直接用矩阵旋转这种方法很直观,但是使用矩阵会遇到两个问题:万象节锁矩阵旋转过程的差值不平滑万象节锁旋转过程中,会有一个自由度消失现有旋转矩阵E(h,p,r)=[e00e01e0...
2018-09-30 20:05:28 3011 4
原创 Chapter 9 On-policy Prediction with Approximation
On-policy Prediction with Approximation
2018-07-08 14:31:13 734
原创 对Tabular方法的总结
sample model比distribution model模型更容易获得对于人工智能问题,value function, backing up value updates, and GPI是非常有用的组织规范。上图说到了两个维度,第三个维度是on-policy与off-policy方法。...
2018-06-28 01:50:27 8837
原创 Chapter 8 Planning and Learning with Tabular Methods
Model-based方法依赖于planning,将模型作为输入并产生或改进与模拟环境交互的策略; Model-free方法依赖于learning,将环境的真实experience作为输入; 现在把两种方法结合起来。8.1 Models and Planning...
2018-06-27 02:34:37 715
原创 根据深度信息重建世界坐标
摘自 https://forum.unity.com/threads/reconstructing-world-pos-from-depth-imprecision.228936/unity的实现代码//main problem encountered is camera.projectionMatrix = ??????? worked but further from camer...
2018-06-24 18:58:30 3209
原创 Direct3D基础--渲染管线
本文为 Introduction to 3D Game Programming with DirectX 11 读书笔记Color的XNA实现Rendering PiplineInput Assembler stagePrimitive TopologyIndicesThe vertex shader stageProjection and Homogeneo...
2018-06-24 13:09:42 864
原创 Direct3D基础--初始化
本文为 Introduction to 3D Game Programming with DirectX 11 读书笔记本篇博客介绍Direct3D的基础,按照书上章节顺序介绍Direct3D初始化图形学的基本概念与DirectX的类型COM纹理和数据资源格式The Swap Chain and Page FlippingDepth BufferingTextu...
2018-06-23 16:49:26 697
原创 DirectX数学介绍
本文为 Introduction to 3D Game Programming with DirectX 11 读书笔记Vector Algebrawin10已经把DirectX11集成到了windows SDK中,所以如果是使用win10做开发,则不需要手动下载DirectX11的类库。对于D3D11,数学计算库用XNA Math library,该库提供了SIMD指令的封装...
2018-06-22 01:19:04 1750
原创 Chapter 7 n-step Bootstrapping
核心思想就是在做bootstrapping之前再向前多走几步7.1 n-step TD Prediction temporal difference 扩展了n步,这就被称为n-step TD methodsn-step returns Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnVt+n−1(Stn)Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γ...
2018-06-08 22:07:07 927
原创 Chapter 5 Monte Carlo Methods
不像以前章节,这里不假设有complete knowledge of the environment。 不需要完美的model,只要有experiences就行,用episodes表示,一个episode就是一个完整的从开始到结束的state、action、reward序列。蒙特卡洛方法的特点就是要使用整个序列,举例来说就是必须在一个episode结束后得到了整个序列才能使用蒙特卡洛方法。...
2018-05-27 11:53:22 432
原创 Chapter 4 Dynamic Programming
本笔记参考《Reinforcement Learning: An Introduction》和 David Silver的公开课及其pptDavid Silver的课程在Tabular Soluction上介绍的比较多。可以配合David Silver的课程来理解《Reinforcement Learning: An Introduction》这本书的内容DP指的是一组算法,可以用来...
2018-05-26 19:12:12 284
原创 Chapter3 Markov Decision Processes(MDP)
Finite Markov Decision ProcessesMDPs are a classical formalization of sequential decision making, where actions influence not just immediate rewards, but also subsequent situations, or states, and t...
2018-05-25 20:34:19 679
原创 Chapter 2 Multi-armed Bandits
本文为看《reinforcement learning :an introduction》时的笔记总结标题解释为:多臂老虎机因为我最开始看的时候不知道这个名词的意思这一章基本上把后面要讲到的所有方法都简介了一遍,初步了解这些方法对理解后面的内容很有帮助1. A k-armed Bandit该问题指老虎机,有k个臂,对应k个不同的options或actions。在每次...
2018-05-25 11:56:46 792
原创 Chapter 1 Introduction
强化学习的主要组成:agent, environment, a policy, a reward signal, a value function, [a model of the environment]Reinforcement learning is a computational approach to understanding and automating goal-directe...
2018-05-25 11:17:23 290
原创 顶点法向量的矩阵变换
本文参考 Introduction to 3D Game Programming with DirectX 11在计算机图形学中法向量的变化跟一般顶点的变化有一定的区别,假设我们有一个切向量u=v1−v0 u=v_1-v_0 ,uu与法向量nn垂直。如果我们使用一个矩阵AA来进行非均匀缩放,我们可以在下图中看到由图(a)到图(b),变换后的切向量uA=v1A−v0AuA=v_1A-v_0A与变换后的
2016-07-16 04:06:38 3674 1
原创 VR体验优化
vr体验优化,防止眩晕镜头的控制权尽量交给玩家最重要的是镜头不能有加速度。只能马上停下或者马上移动镜头向前移动的方式有两种。 第一种是blink的方式,镜头黑一下然后直接跳到之前镜头指向的目标,类似于人类眨眼 第二种是快速移动,移动速度控制在1.5m/s最好,这样符合人类大脑的思维方式镜头不能像螃蟹一样横着移动,严重眩晕旋转的方式最好是镜头马上切换角度,不要慢慢旋转千万不能晃动镜头,
2016-04-11 14:39:20 784
转载 汉罗塔lua实现
local num = 0function MoveDisk( diskQuantity, positionA, positionB, positionC ) if diskQuantity == 1 then num = num + 1 print (num .. "Move disk from position " .. positionA .. " to " .. positi
2015-06-03 00:16:34 534
转载 python使用matplotlib缺少库文件的解决方法
stackoverflow的解决方法如果安装了pip,那么就直接使用pip install numpy python-dateutil pytz pyparsing six --force-reinstall --upgrade安装dateutil,pytz,pyparsing,six这几个库,其中six库强制更新
2015-05-22 21:31:11 1959
转载 关于JNI的使用总结
今天刚整了一下JNI,在百度上看了好多博客,好像在遇到问题方面解释的都比较少,安卓应用程序使用ndk开发的时候就使用了JNI,而且cocos2d-x移植到安卓平台的时候也有JNI的使用。 废话不多说,贴代码,对了,这个例子是在别的博客上看到了,但是他没有解释错误的方面public class Sample1 { public native int intMethod(int n)
2014-12-19 18:30:10 529
latext公式换行对齐\begin{align*}报错
2018-09-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人