自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LittleLittleWind

我拥有的都是侥幸啊,我失去的都是人生

  • 博客(7)
  • 资源 (5)
  • 收藏
  • 关注

原创 从零开始软渲染6-ShadowMap

这一节我们来讨论阴影。ShadowMap我们如何判断一个点是否处于阴影中呢?比如说在图中的ABCD四个点,B和C处于阴影中,A和D不处于阴影中,我们要做的事情就是能够把这两组点区分开来。这两组点有什么区别呢?我们把自己放在光源的位置,这就一目了然了:在光源的位置,沿着光源方向观察,A和D在视野内,B和C不在视野内,这就很容易判断出,B和C是处于阴影中的。ShadowMap的原理就是如此,先在光源的位置,沿着光源方向渲染一张深度图,然后在实际渲染场景时,把每个点变换到光源视角下,比较其深度

2021-02-10 21:29:30 235

原创 从零开始软渲染5-Shader

上一篇我们聊得比较偏理论,这篇我们来实际操作。渲染管线在实际动手之前,我们来看看图形API是如何做的。上图是OpenGL 2的渲染管线,和新版本略有差异,但大体流程是相似的。这里我们主要关注其中的Vertex Shader和Fragment Shader。Vertex Shader主要负责顶点变换,就是把一个顶点从模型空间变换到裁剪空间,并为后面的Fragment Shader准备相关的数据。Fragment Shader主要负责输出颜色,就是决定一个像素究竟应该输出什么样的颜色。从

2021-01-24 14:00:45 198 2

原创 从零开始软渲染4-以Unity为例的坐标变换

这一篇我们来聊一聊坐标变换。坐标变换比较偏理论,这里我们以Unity为参照,介绍一下顶点坐标变换的流程,详细的推导可以参考《Real time rendering》或者《Unity Shader入门精要》。齐次坐标(Homogeneous Coordinates)所谓齐次坐标,就是用N+1维来表示N维。那么多一个维度有什么好处呢?首先,可以通过这个维度来区分向量和点。以三维空间为例,(1,0,0,0)表示的是一个向量,而(1,0,0,1)表示的是一个点。另外,齐次坐标可以很方便地处理空间变换。依

2020-12-29 14:30:36 464 1

原创 从零开始软渲染3-深度缓冲和纹理贴图

上一回我们画出了一个茶壶的雏形,现在我们把茶壶打扮得更好看一点。之前画茶壶的时候,我们把背面的三角形都裁剪掉了,正面的三角形一股脑都画了出来,而壶盖的边缘处于壶身内部,应该被壶身遮挡,不应该被画出来。如何判断什么应该画,什么不该画呢?有一个算法称为画家算法(Painter's algorithm),含义就是一个画家在画画的时候,会先画最远的物体,再画近一点的物体,这样就可以遮住最远的物体,最后画距离最近的物体,这样就可以遮住其他所有物体。然而画家算法无法处理物体相互穿插的情况:比如说这三个.

2020-07-17 18:06:27 465

原创 从零开始软渲染2-HelloWorld

上回我们能够画出直线和三角形了,现在我们来尝试画模型。读取模型模型文件的格式繁多,这里就选择最简单常用的Obj格式,Obj格式的介绍可以参考:https://www.jianshu.com/p/f7f3e7b6ebf5Obj文件是文本格式的,所以可以自己写一个Obj的解析函数。如果不想自己造轮子,就可以直接使用tinyobjloader这个开源库:https://github.com/tinyobjloader/tinyobjloadertinyobjloader用起来也很简单,只需要两个文

2020-07-09 10:24:03 520

原创 从零开始软渲染1-直线和三角形

上回我们已经可以在屏幕上画出点了,现在我们开始画直线和三角形。基础数据结构我们先准备一些数据结构,如二维向量和三维向量,方便后面使用。template <class t> struct Vec2 { union { struct { t u, v; }; struct { t x, y; }; t raw[2]; }; Vec2() : u(0), v(0) {} Vec2(t _u, t...

2020-07-03 19:24:21 377

原创 从零开始软渲染0-从点开始

什么是软渲染?所谓软渲染,就是用软件实现的渲染,相对于GPU绘制而言,把渲染流水线在CPU上实现一遍,最终调用画点的函数,把整个渲染结果绘制出来。为什么写软渲染?入门图形学和渲染管线最硬核的方式,彻底理解光栅化的流程,写完之后再看原先懵懵懂懂的DX和OpenGL,便觉醍醐灌顶。环境搭建工欲善其事必先利其器,先把环境搭好,才能开始漫漫长征路。开发环境我用的是Windows 10 + VS2019,图形界面我用的是SDL。为了方便看渲染结果,图形界面是必要的。图形界面有很..

2020-06-28 17:35:07 1090 1

基于STM32的12864液晶显示驱动

基于STM32的12864液晶LCD显示驱动,包含初始化等操作函数,代码已测试成功,如果要嵌入自己的项目需要修改GPIO的宏定义。

2016-10-25

基于STM32的12832液晶显示驱动

基于STM32的12832液晶显示驱动,包含LCD的初始化,字符显示,清屏等操作。

2016-10-12

STM32驱动OCMJ5X10D系列LCD驱动

STM32系列单片机驱动16080LCD,型号为OCMJ5X10D,驱动器芯片RA8822

2015-01-24

linux-2.4.21-51Board_EDR.tar.gz

linux-2.4.21-51Board_EDR eeliod实验开发板所用2.4内核linux系统源代码

2011-12-24

数字频率计的基本原理和实现

了解数字频率计计算测量原理,熟练掌握数字频率计的设计和调试方法以及减少误差的方法。

2011-04-24

空空如也

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

TA关注的人

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