自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Tone mapping

转自KlayGE游戏引擎Reinhard早期的普遍做法是一篇叫做Photographic Tone Reproduction for Digital Images的论文,大家就用作者的名字称它为Reinhard tone mapping。这是个经验公式,把HDR到LDR的变换简单的描述了出来。123456float3 ReinhardToneMapping(float3 color, float ...

2018-03-12 16:22:39 8181

原创 软件光栅化渲染器二

在上节完成了数学库后,这节先写出所需要的基本窗口结构。

2017-12-13 19:01:42 529

原创 软件光栅化渲染器一

为了了解光栅化渲染器工作原理及底层实现,准备着手写一个光栅化渲染器。第一节,我打算先实现所需要的数学库。Matrix的主要函数主要如下:

2017-12-13 11:03:37 658

原创 对Opengl中的帧缓冲的一些理解(延迟渲染,后处理等)

用最通俗的话来说:咱们能在屏幕上看到东西,这是默认的帧缓冲的信息输出,这个帧缓冲里面包括,颜色缓冲,深度缓冲,模板缓冲等。而一个默认的帧缓冲是不够用的,不能灵活的处理一些想要的效果。所以咱们要创建新的帧缓冲,创建一个普通的帧缓冲,需要至少一个颜色附件、一个缓冲,这个颜色附件也就是一张纹理,在绑定这个帧缓冲之后,渲染的东西会全部存储到这张纹理中,可以把这个纹理理解成一个普通的颜色/深度或

2017-11-29 17:26:21 8163 6

原创 利用几何着色器实现物体表面法线的可视化

法向量的可视化主要原理:先不使用几何着色器绘制一遍原模型,再利用几何着色器接受三角图元,再图片的每个顶点向法线方向发射一条射线,射线长度自定义。因为几何着色器中顶点已经变换到了裁剪空间,为了适配,我们也需要要将法线变换到裁剪空间。主要代码如下:#version 330 corelayout (location = 0) in vec3 aPos;layout (locati

2017-11-23 11:13:33 389

原创 opengl几何着色器实现爆破效果

主要代码如下:vs代码:#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aNormal;layout (location = 2) in vec2 aTexCoords;layout(std140) uniform Matrix{ mat4 projection

2017-11-22 19:41:46 2065

原创 基础知识汇总三(BRDF)未完

双向反射分布函数(BRDF)-描述的是物体表面对光的反射性质。光照可分为全局和局部两种---局部光照:和物体直接被光源照射的情况有关。---全局光照:和物体被光源以外的其他地方来的光线照射的情况相关,包括其他物体反射和投射过来的光线。预备知识:1.球面坐标由于光线主要是通过方向来表达,通常用球面坐标表达它们比用笛卡尔坐标更方便。如图所示,球面坐标中的向量用三个元

2017-11-22 15:27:24 684

原创 高级GLSL

GLSL中的内建变量顶点着色器变量gl_Positiongl_PointSize 控制点的大小 (需要开启glEnable(GL_PROGRAM_POINT_SIZE))gl_VertexID  这是一个读取变量,如果当前使用的事glDrawElements进行索引渲染,这个变量存储的是当前绘制顶点的索引,当使用glDrawArrays惊醒渲染时,这个变量存储的是从调用渲染开始到已

2017-11-22 15:24:00 629

原创 知识汇总二(简单光照模型)

简单光照模型一、什么是光照模型?1.光照模型当物体的集合形态确定知乎,光照决定了整个场景的显示结果。因此,真实感图形的生成取决于如何建立一个合适的光照模型。光照模型:模拟物体表面的光照明物理现象的数学模型。简单光照模型只考虑光源对物体的直接光照。二、物理知识1.光的传播规律反射定律:入射角等于反射角,而且反射光线、入射光线与法向量在同一平面上。

2017-11-10 09:47:02 3770

原创 知识汇总一 (颜色模型)

颜色模型一、颜色模型概述  1.什么是颜色?颜色是人的视觉系统对可见光的感知结果,感知到的颜色由光波的波长决定。人眼对于颜色的观察和处理是一种生理和心理现象,其机理还没有完全搞清楚。视觉系统能感觉的波长范围为380-760nm。2.什么是颜色模型?颜色模型(空间),是表示颜色的一种数学方法,人们用它来指定颜色和标定产生的颜色。通常用三个参数表示。几乎所有的颜色模型都

2017-11-09 16:56:27 2071

原创 光线追踪

1.光线追踪基本原理光线跟踪算法是真实感图形学中的主要算法之一,该算法具有原理简单、实现方便和能够生成各种逼真的视觉效果等突出的优点,综合考虑了光的反射、折射、阴影等。2.光线追踪的基本过程在这个场景中,有一个点光源L,两个透明体O1与O2,一个不透明体O3。首先,从视点出发经过视屏一个像素点的视线E传播到达球体O1,交点为P1。从P1向光源L作一条阴影测试线S1,可以

2017-11-09 10:58:23 2123 2

原创 游戏中各向异性头发的渲染

趁有时间写一篇关于各向异性头发的渲染。先上效果图(不含Ao)。这个是04年的一个ppt,主要介绍了头发的渲染,其追到源头还是要看这个原理。各向异性的主要计算公式:主要代码如下:切线混合扰动部分(这部分也可以用T+k*N,来对切线进行扰动):float3x3 tangentTransform = float3x3(i.tan

2017-11-03 16:29:33 13907

原创 游戏中实时皮肤渲染第二弹

继上次渲染的皮肤之后,这次再写一篇可在游戏中应用的shader。先上效果图(PS:游戏中的效果会比截图更好)。、这个shader主要用了以下几张贴图,皮肤贴图,法线贴图,AO贴图(g通道存储的在人脸越薄的地方值越大,例如耳朵,鼻子),曲率图。shader面板如下:接下来介绍主要部分代码:光照衰减部分:float attenuation = LIG

2017-11-03 15:29:08 1129

原创 NPR的一些总结

NPR也就是非真实感渲染,它与PBR是相对的。卡通渲染,素描,油画,水墨等都是属于NPR。总的来说卡通渲染主要分为两部分。第一部分就是描边。描边主要分为一下几类:1.传统利用dot(N,V)来检测2.利用两个Pass扩张顶点3.Z便宜4.利用几何着色器的线框5.屏幕后效基于深度和法线的检测第二部分是内部颜色部分。首先我们观察到卡通变化的光照颜色变

2017-10-27 17:00:54 9560

原创 程序性天空盒,unity实现

最近参考http://www.e2gamedev.com/skybox写了一个程序性的天空盒子,主要有动态体积云,日落月升,黄昏,夜空星星等这些参数都是可调的,可以调节不同天气。先献上效果图吧:白天的太阳和云彩黄昏的太阳和云彩:夜晚的太阳云彩及星星:shader的可调参数列表:天空部分云彩部分接下来进入主题,开

2017-10-27 15:32:26 2232 1

转载 Low Polygon风格的渲染

转自http://blog.csdn.net/candycat1992/article/details/51511433原理Low polygon风格的渲染也被称为flat shading。虽然把这篇文章归到Shader类别里,但其实是完全可以用非Shader的方法来解决的。下面两张图片,左边是我们不希望得到的结果,而右边是我们想要得到的效果。做美术

2017-10-17 16:49:32 2454

转载 噪声

转自 http://blog.csdn.net/candycat1992写在前面很早就想学习和整理下噪声,稍微接触过图形学的人大概都听到过噪声,然后就会发现有各种噪声,Perlin噪声,Worley噪声,分形(fractal)噪声等等。尤其是Perlin噪声,一搜资料发现大家说的各不相同,更加不明所以。我也总是困惑,后来发现还是要相信wiki和paper。这篇文章在于总结上

2017-10-17 16:28:55 508

原创 LTC-PolygonLighting

由于多边形在球面上的分部积分比较复杂,再考虑到各种物理因素,材质的粗糙度,各向异性,偏角等等,为了解决这些个问题,出现了一种新的球面分布,它包含各种球面,并且可以对任意多边形分析并积分。根据上图我们可以知道,原覆盖区域进行一个3x3矩阵M的变换可以得到我们想要的任意形状,所以线性变换余弦近似于物理上的BRDF。下图是和物理上的BRDF和LTC的一个比较:

2017-08-18 15:27:03 610

原创 关于BRDF

BRDF理论BRDF表示Bidirectional Reflectance Distribution Function(双向反射率分布函数)。它用来描述物体的材料属性,表示光如何从一个表面反射出去。该函数的输入为入射及发射光的方位角ø和仰角θ。另一个输入为入射光的波长。该函数的输出为一个无单位的值,表示对于给定的入射方向,在发射方向反射出去能量的比例。 BRDF给出了入射光子在

2017-08-11 15:54:55 1835

原创 曲率的计算和曲率图的采样

预积分渲染人体皮肤,实际上就是一个反推,就是把次表面反射的结果存入一张2维查找纹理中,然后根据ndotl和1/r去作为参数查找,为什么要这样做?因为,我们发现散射往往发生在弯曲度比较大的部位,在平面的散射效果就比较弱。曲率图如下:1/r是个什么东西?就是模型表面的曲率,如何计算?计算方式:

2017-07-27 15:59:28 5104

原创 游戏中人体皮肤实时渲染第一弹

要渲染皮肤,首先要知道皮肤的整体构成及属于一种什么样的材质,根据现代医学分析,皮肤大致的整体结构分为表皮层,真皮层和皮下组织,并且是轻微半透明的,所以我们知道了,皮肤是一种多层半透明材质。然后我们分析光射射到皮肤上的变化。一小部分光在接触到皮肤的时候会直接发生镜面反射,这部分光大约占据入射光光能的百分之六,这主要以为菲涅尔互动和最上层含油的皮肤。下图展示了光在皮肤表面反射示意图。另

2017-07-27 10:38:21 2945 1

转载 投影矩阵的推导(Deriving Projection Matrices)

在3D图形程序的基本矩阵变换中,投影矩阵是其中比较复杂的。平移和缩放浏览一下就能理解,旋转矩阵只要掌握了三角函数知识也可以理解,但投影矩阵有点棘手。如果你曾经看过投影矩阵,你会发现你的常识不足以告诉你它是怎么来的。而且,我在网上还未看到许多关于如何推导投影矩阵的教程资源。本文的话题就是如何推导投影矩阵。        对于刚刚开始接触3D图形的人,我应该指出,理解投影矩阵如何推导可能是我们

2017-07-24 11:53:47 932

原创 抗锯齿

锯齿的产生:从技术上来说,这些混叠之所以产生,是由于我们使用离散的像素集对原本圆滑的、连续的二维信号进行采样。抗锯齿是一种降低有混叠所形成的视觉缺乏的技术,抗锯齿的效果是,三角形边缘和帧缓冲附近的颜色混合起来。全屏抗锯齿 FSAA基本原理:把影像渲染至比实际屏幕宽一倍,高一倍的帧缓冲里,然后再把该帧缓冲缩减采样至所需要的分辨率,FSAA很耗时,因为渲染长宽两

2017-07-23 22:34:28 571

原创 次表面反射二

使用摄像机计算物体的厚度,薄的地方透光率高,后的地方透光率低,首先需要一个shader去计算物体背面的深度,然后在渲染物体表面的时候,两者做差值即可得出物体的厚度。在上面文章的基础上摄像机代码做如下修改:using System.Collections;using System.Collections.Generic;using UnityEngine;public class D

2017-07-14 14:33:30 1065 1

原创 unity玉石渲染

在正常情况下,Diffuse在背光面都是纯黑的,为了模拟简单的次表面散射,引入环绕光照,环绕光照对Diffuse做出如下修改。 float diffuse = max(0,dot(L,N)); float wrap_diffuse = max(0,(dot(L,N)+_Wrap)/(1+_Wrap));//_Wrap为外部传入参数下图是环绕光照函数的图标:在进行了对环绕光照处

2017-07-14 13:30:12 5759 1

空空如也

空空如也

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

TA关注的人

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