自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

起步

分享与记录图形技术

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 [技术]Lightmap Generation

说是Lightmap Generation,其实更多的是direct lighting,具体可参考Lightmap Generation;传统的lightmap生成是通过每像素Tracing大量的射线,在场景中进行弹射,最后累积每根光线的在lightmap的贡献;这种方法在GPU上很难实现,除非是很小的场景,或者易于参数化表示的场景;主要还是场景信息很难在GPU上表达,并且很难在GPU上对大场景进行高效的Tracing;然而,如果lightmap只需要记录一次弹射的光照,光栅化就可以被充分用来进行加速;

2021-09-01 00:30:28 181

原创 [技术]simple global illumination

本技术主要针对非常小的场景进行GI的估计,原技术参考simple global illumination;首先,场景顶点作为GI的采样点,这些顶点都是光照的发射点与接收点;我们使用顶点的颜色来模拟计算每个顶点的Irradiance,初始时所有顶点都为黑色,除了光源的顶点以外;为了模拟第一次光线透射,我们要计算多少光到达了每一个顶点。本来这个光照过程需要在顶点处,沿法线半球面透射光线进行场景相交计算,我们可以借助GPU来更快速的进行这一过程。我们将相机置于每个顶点,并且沿着法线朝向,相机的FOV给180度

2021-08-31 00:47:46 175

原创 [笔记]球谐函数

[笔记]球谐函数前言背景功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言此笔记主要用来记录阅读Stupid Spherical Harmonics (SH) Tricks所总结的要点,内容深度一般,主要用来理清自己胡乱学来的

2021-08-13 21:50:25 5914 3

原创 [总结] better fog

Better Fog起因是因为iq大神的better fog文章[1],伴随着向大神的学习态度,决定对实时雾效进行一个简单总结;雾效是3D场景上非常重要的一个元素,他能增强场景的距离感,同时也能虚化远处的细节,另外对于雾气比较浓的场景,好的雾效能极大的提高场景的氛围感;然而传统的雾效都比较简单,要么是线性雾,要么是指数雾;效果会比较单调基于物理的雾效计算,则是大量使用RayMatching来进行体积雾渲染;对于天空大气部分,还要考虑Rayleigh scatting和Mie scattering[2

2021-07-21 23:48:19 517 1

原创 Light and Color——Gamma

Light and Color——Gamma前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言在项目中,总绕不开的一个名字,Gamma提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pl

2021-06-26 21:09:19 307

原创 GAMES101课程学习笔记4——Color and Perception

GAMES101课程学习笔记4Physical Basis of Color(颜色的物理基础)Biological Basis of Color(颜色的生物基础)Tristimulus Theory of Color(颜色的三色理论)Metamerism(同色异谱)Color Reproduction / Matching(颜色匹配)CIE RGB Color Matching ExperimentPhysical Basis of Color(颜色的物理基础)说道颜色,首先得从光说起,应为光具有真实的

2021-06-16 22:02:02 386

原创 GAMES101课程学习笔记3——Basic Radiometry && Photometry

GAMES101课程学习笔记3Basic radiometryIrradiance vs RadianceBidirectional Reflectance Distribution Function(BRDF)Basic radiometry辐射度量学是基于物理渲染的理论基础,它将渲染使用物理下的单位及公式进行表达,使得PBR能够站住脚跟;Energy(能量):单位J焦耳;Flux(通量):定义为单位时间内通过的能量,单位W瓦特(lm流明,光度学,两者等价);Intensity(强度):定义为

2021-06-15 21:57:10 124

原创 GAMES101课程学习笔记2——Basic Ray Tracing

GAMES101课程学习笔记2Whitted-style ray tracingRay CastingRay-Surface IntersectionRecursive Ray TracingWhitted-style ray tracing现在所称呼的Ray Tracing是指一系列的Ray Tracing技术,包括Path tracing、Photon mapping、Metropolis light transport等;若将 Path tracing与Ray tracing进行区分 的话,此时

2021-06-15 20:18:49 120

原创 GAMES101课程学习笔记1——图形学基础

GAMES101课程学习笔记前言对对对新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言对对对你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅

2021-06-15 16:08:50 360

原创 Ogre初始配置

目录Ogre初始配置ogre下载cmake生成工程VS编译工程编译官方的tutorial样例运行官方的tutorial样例Ogre初始配置ogre下载ogre的下载比较方便,连接在github上,为了便于git仓库的管理,推荐使用GitHub desktop下载,安装GitHub desktop后,直接去前面那个网站,一路确定即可;cmake生成工程如果你没有移动目录的话,在文档的GitHub文件夹下有一个ogre文件夹,里面既是你说下载的引擎源码,也可以配置到其它目录;我的cmake版本为3.

2020-06-18 12:09:09 703

原创 unity屏幕扭曲

unity屏幕扭曲效果这个效果其实比较简单,但要根据具体情况来选择具体的实现方案;对于全屏扭曲,并且扭曲效果后没有其他物体的绘制(除了UI),这个时候可以选择使用全屏后处理效果;比如全屏雨幕效果;如果是半透明物体对背景的扭曲,可以使用内部的GrabPass或者CommandBuffer来实现;比如火焰效果、刀光效果、玻璃效果等;扭曲效果注意事项对于半透明物体对背景的扭曲情况下有一些注...

2019-11-04 23:20:20 1765

原创 Unity打包移动平台产生的渲染不一致问题

最近项目打包遇到了真机运行效果与引擎效果不一致问题,打包走的是AssetBundles,这里对问题及解决办法进行一个罗列:打包AB造成模型中切线丢失:打包AB造成shader中自定义的shader_feature丢失问题:解决方法:创建ShaderVariantsCollection,在引擎内运行场景,导入需要的shader_feature,然后将其拖入Graphics Setting中的...

2019-09-28 23:57:48 2625

原创 色彩空间相关

前言不同的颜色空间常用于不用的场所,因为不同的场所所颜色的需求是不一样的:比如计算机存储更偏向于RGB空间;而美术调色时则更倾向于使用HSV空间;在彩色打印领域,由于对黑色墨水的需求,则更倾向于使用CMYK空间;等等~...

2019-08-31 00:03:06 267

原创 游戏抓帧分析工具及方法

工具列举Nvidia出品的NVIDIA Nsight Graphics,用于PC平台下进行抓帧以及图形性能分析;Intel出品的GPA-Graphics Performance Analyzers,用于PC平台下进行抓帧以及图形性能分析;Unity引擎中自带的Frame Debugger,用于使用Unity开发过程,进行抓帧以及渲染流程的分析;XCode中自带的Debug->Capt...

2019-08-11 22:43:25 11175 1

原创 碎碎念——关于阴影的感悟

关于阴影的感悟首先是阴影产生的原因,产生阴影是由于光照不到物体,所以产生了阴影;两种阴影光照不到物体可以分为两种情况:物体背向光,对于一个实体物体,其背向光的那一部分是接收不到直接光照的,这就是物体背面暗的原因;在计算过程中也就是使用saturate(dot(L, N))来进行计算,背面的该值为0;物体与光源之间有遮挡物,遮挡物遮挡了光线的传输,导致物体接受不了直接光照,这是我们通常看...

2019-08-05 21:34:44 211

原创 unity lighting相关设置

主要参考unity官方文档此文档及其子文档;lighting modeunity内部的light有三种lighting mode:Realtime用于计算实时光照;Mixed用于计算实时光照与全局光照,即混合计算;Baked用于计算全局光照,没有实时部分,其全局光照采用预计算存储于light map与light probe中lighting settingslighting se...

2019-07-14 21:20:42 5153

原创 Unity内部坐标系与矩阵使用坑点

坐标系模型空间:左手坐标系(z轴朝前)世界空间:左手坐标系(z轴朝前)相机空间:右手坐标系(-z轴朝前)camera.worldToCameraMatrix == Shader中的UNITY_MATRIX_V;相当于在左手坐标系下,将所有物体移到相机在原点后,将所有物体的z*-1;camera.projectionMatrix != Shader中的UNITY_MATRIX_P;...

2019-07-06 16:50:07 2613

原创 Unity渲染各种注意事项

pbr材质的光滑反射度流程Albedo Texture的rgb通道对应光照运算方程中的diffuse color;a通道对应于Alpha;Speculer Texture的rgb通道对应光照运算方程的F0;a通道对应光照运算方程的Smoothness;其oneMinusReflectivity = 1-SpecularStrength(specColor);//SpecularSt...

2019-06-18 23:37:06 2786

原创 Unity内部pbr实现1——框架及内部直接光照公式

目的   PBR(Physical Based Rendering) 可以说是很多游戏开发的标配了,理解Unity内部PBR的实现,对我们来说有几点意义:可以让我们对Unity内部材质各种参数的调节有个 更理性的认识 ;可以在其它建模工具中进行此 PBR的插件实现 ,使得建模时就能看到Unity引擎中的光照效果;可以让我们对PBR关照有个系统的认识,便于对其进行 改进(估计要读好几篇论文...

2019-03-17 17:41:27 3165 2

原创 Python中的Numpy数组常用操作

写在前面  最近使用keras做一些东西,然后会经常用到Numpy来进行数组的操作。途中在网上查找了很多操作的相关方法,这里将一些我常用到的方法记录在这,用于遗忘后自己查阅(估计自己以后会经常使用python==),也用于大家查阅。Numpy数组的创建特殊矩阵的创建  np.ones() 函数与np.zeros() 函数可以创建任意维度的全1或全0数组。函数参数可按照IDE的提示来进行填写...

2018-11-27 16:43:14 4285 3

原创 碎碎念——有趣的数学

  最近几天问了为了准备秋招笔试,刷了很多题,其中有一些题目我认为还是挺有趣的,特地在这里记录下来~ PS:估计等过了笔试这一阶段之后,就不怎么会更这篇文章了==。由于是这篇是随缘而写的,所以大家看看就好,如果能因此发现数学的美妙就更好啦~相邻三个整数之间的关系  假设三个整数分别表示为...

2018-09-05 13:59:49 156

原创 使用Ray Matching实现云彩渲染

  这里先贴一个我实现的云彩效果,使用Direct3D11,并在pixel shader中使用RayMatching方法实现的,感兴趣的可以下载源代码查看,绘制效果如下: 实现过程主要使用perlin noise来进行云彩建模,然后根据密度和高度决定云彩的颜色,最后使用ray matching算法进行颜色的累积。云彩绘制部分由于代码中有很多与云彩绘制无关的部分,所以我这里记录以下云彩...

2018-07-06 22:33:09 3122

原创 DirectX学习资料汇总

前提  由于DirectX已经发展了好多年,现在已经发展到了DirectX 12.0,而且DirectX现在还在发展中。这里汇总一下我学DirectX时碰到的一些学习资料,供后来人按需获取。网站篇http://www.d3dcoder.net/ 简介:这是龙书系列的官方网站,含有从DirectX9到DirectX12的教程源代码。http://www.rastertek.co...

2018-04-29 18:15:39 2512

原创 欧拉角与万向节锁

欧拉角与万向节锁之理论解析  翻了一大堆博客,很少有对万向节锁介绍清楚的。这里谈谈我对万向节锁的通俗认识。前提我们这里采用左手坐标系(与Direct3D所使用的一样)。左手坐标系如下图: 我们使用的点用行向量来表示(与Direct3D所使用的一样),所以只能是vector*matrix,而不能是matrix*vector。由于只考虑旋转,所以这里行向量是三维的,矩阵也是3x...

2018-04-17 18:27:43 952

原创 VS调试程序时,内存位置访问无效

今天在运行D3D程序的时候,弹窗说程序无法运行,原因是内存位置访问无效。 了解后得知,是调用第三方库时出现的问题; 建议大家最好Debug程序时使用Debug版的第三方库,发布程序时调用Release版的第三方库; Direct3D的SDK即包含Debug版的库,也包含Release版库。比如,d3d9d.lib、d3d10d.lib、d3d11d.lib这些是Debug版的库;d3d9.l...

2018-04-10 10:02:40 4105

原创 DirectX之三——渲染管线与坐标系(Direct3D9)

DirectX之三——渲染管线与坐标系(Direct3D9)Direct3D渲染管线  使用Direct3D绘制模型是需要经过一个流程的,这个流程就被称为渲染管线或绘制流水线,渲染管线可分为下列几个流程: 另外需要注意的是:Direct3D采用的是左手坐标系,如下图所示: 局部坐标系  局部坐标就是表示单个模型所需要的坐标,一般以模型的中心来作为局部坐标系的原点。而模型...

2018-04-02 17:01:14 3383 1

原创 DirectX之二——Direct3D接口的初始化(Direct3D9)

DirectX之二——Direct3D接口的初始化(Direct3D9)Direct3D与接口的关系  Direct3D是一套底层API,可以被视为应用程序与图形硬件的交互的中介。具体结构图如下图所示: - 图中HAL又称硬件抽象层(Hardware Abstraction Layer),是一个指示设备完成某些操作的设备相关的代码集(硬件制造商来实现),由Direct3D统一调用。...

2018-04-02 08:59:31 965

原创 DirectX之一——Windows编程基础框架

DirectX——Windows编程基础框架前言  DirectX是由微软公司创建的一系列专为多媒体以及游戏开发的应用程序接口,内部组件按照性质可分为:显示部分、声音部分、输入部分和网络部分。其中Direct3D便属于显示部分中的3D图形显示子集,Direct3D按照前后版本的发布可分为Direct3D9、Direct3D10、Direct3D11、Direct3D12;本系列文章介绍...

2018-03-30 15:08:46 2461

原创 腾讯游戏客户端开发面试

碎碎念————第一次腾讯游戏客户端开发面试  作为一个本科、研究生专业都跟计算机不沾边的学生,简历被通过筛选本来就应该是最好的结果了,然而自己还是抱着一点点的期望,万一自己就通过了所有面试,进入腾讯实习了呢==。   实时证明期望终究是期望,现实终究是现实。   发完牢骚,该改进的还是要改进,该学习的还是要学习,不然下一次校招怎么进腾讯呢(笑)?针对这次经历,我发现果然知识还是要归纳整理才...

2018-03-23 13:50:51 26143 20

原创 Qt中信号存在重载情况下的选择

以QComboBox中的currentIndexChanged信号为例:在Qt4中由于填写信号时,需要填写参数,所以不存在此问题。以下解决方法为在Qt5中遇到使的解决方案。解决方法1:connect(&object1, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged, &object2, &Slot);解决方法2:co

2017-06-23 20:49:32 828 1

原创 为什么c++中重载流操作符要用友元函数

1.先来看看友元函数重载流操作符实例class complex{public: complex(int x, int y): real(x), imag(y){} complex():complex(0,0){} ~complex(){} friend ostream& operator << (ostream& cout...

2017-04-24 20:55:32 6939 2

Unity内置shader

Unity 2017.1.2内置的最新Shader,是学习UnityShader编写好资源~

2017-10-08

空空如也

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

TA关注的人

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