TypeScript raster 软件渲染器

TypeScript raster 软件渲染器

仓库地址https://github.com/Jecced/raster

如何运行?

  • 安装 nodejs 环境

  • 安装 typescript

  • 安装 yarn

在项目根目录执行:


yarn

yarn start

成功运行完毕后网页访问:http://localhost:9000

默认会访问 **Scene12 **场景

如何修改预览场景

修改index.ts


const scene = await Scene12.creat(width, height);

注意:随着新增的内容推进,可能会是 Scene13、Scene14…,所以直接搜索可能会搜索不到

软件渲染器的初衷

帮助自己学习理解 3d 画面如何出现在画面当中的
知道矩阵和向量之间的运算和关系,各个矩阵之间的意义

由来

在刚刚从 2d 转 3d 的时候会对很多【参数,操作】陌生,不知道是做什么的,也不知道其中的原理

于是开始看各种书籍和视频来恶补知识

好记性不如烂笔头,烂笔头不如自己来亲自实现一个

于是这个仓库诞生了

参考资料

LearnOpenGL:

https://learnopengl-cn.github.io/

闫令琪的 Games101:

https://www.bilibili.com/video/BV1X7411F744?seid=3178513072131573492

线性代数的本质:

乐府软件渲染器:

《计算机图形学》第二版》

《Fundamentals of Computer Graphics(4th Ed)》

《细说图形学渲染管线》

《GPU 编程与 CG 语言之阳春白雪下里巴人》

目前实现效果

解释

渲染出来的三个画面

  1. 正常渲染的画面

  2. 深度信息

  3. 三角形信息

Scene01

绘制一个基础三角形
使用顶点色
片元着色器使用顶点色,使用重心坐标差值获得差值后的颜色

Scene02

绘制一个立方体
使用顶点色
使用摄像机透视投影
颜色规律,根据模型坐标,颜色空间 RGB 分量从 0~1

Scene03

绘制一个立方体
顶点着色器会随着时间推移,围绕 y 轴旋转
QQ20220115-151054-HD

Scene04

新增绘制一个 floor 地板层
用于测试修复透视变形拉伸问题

Scene05

新增 obj 模型解析
将场景中新增一个人物模型

Scene06

实现经典光照模型

QQ20220115-151543-HD

Scene07

读取多个 obj 模型
使用不同的光照参数

QQ20220115-152327

Scene08

新增 sphere 几何体
原理:正二十面体细分法
上方:没有细分,正 20 面体
中间:细分 1 次
下方:细分 2 次

Scene09

新增背面剔除功能
左图:片元着色器使用 UV 滚动
右图:顶点着色器使用绕 Y 轴旋转

**注意:**目前球体 UV 计算没有修复边缘拉伸问题,所以右图有 Z 字穿帮

QQ20220115-154019

Scene10

新增法线贴图

QQ20220115-152854

Scene11

使用镜面高光贴图

QQ20220115-153131

Scene12

TextureCube
反射、折射

广告

欢迎加入 QQ 群:897331800 一起交流

目前刚刚开始接触 3d、图形方向的学习,欢迎一起学习和交流

16赞

赞 

白总 dddd

白总 带带弟弟

dddd 白佬

大佬求带 :heart: :star_struck:

大佬,图片看不到唷

图床在github,可能需要保障网络畅通

Tql dddd

所以这就意味着大部分人看不到

已经切换图床, 修复图片预览问题:lion:

白无敌 带带弟弟

白佬粉丝后援会到此一游

大佬牛皮MARK!

厉害了,我也是看了乐府大佬的帖子学的 GAMES101

大佬牛~~~

太卷了吧,难怪我找不到工作了 :cold_face:

你的帖子已经被社区标记并被临时隐藏。

大魔王,dddd

白佬dddd