软件光栅化渲染器一
来源:互联网 发布:淘宝商家申请 编辑:程序博客网 时间:2024/05/02 14:43
为了了解光栅化渲染器工作原理及底层实现,准备着手写一个光栅化渲染器。
第一节,我打算先实现所需要的数学库。
mathf.h中主要包含如下数学方法:
float radians(float value);float clamp(float value, float min1 = 0, float max1 = 1);float lerp(float min, float max, float gradient);float smoothStep(float min,float max,float x);
vectorf.h中包含vector2和vector3两个结构体,主要实现了:
float Distance(Vector2 &value)const;float Dot(const Vector2 &value)const;float Magnitude()const;Vector2 Normalize()const;Vector3 Cross(const Vector3 &value)const;float Distance(Vector3 &value)const;float Dot(const Vector3 &value)const;float Magnitude()const;Vector3 Normalize()const;
并且实现了运算符重载。
matrix.h中实现了Matrix4x4结构体,内部主要是对运算符进行重载。
重点来了,rmathf.h中实现了所有要用到的通用数学运算方法:
float Distance(Vector2 value1, Vector2 value2)float Dot(const Vector2 &left, const Vector2 &right)float Magnitude(const Vector2 &value)Vector2 Lerp(const Vector2 & start, const Vector2 & end, float amount)Vector2 Normalize(const Vector2 &value)Vector2 Reflect(Vector2 vector, Vector2 normal)Vector3 Cross(const Vector3 &left, const Vector3 &right)float Distance(Vector3 value1, Vector3 value2)float Dot(const Vector3 &left, const Vector3 &right)float Magnitude(const Vector3 &value)Vector3 Normalize(const Vector3 &value)Vector3 Lerp(const Vector3 & start, const Vector3 & end, float amount)Vector3 Reflect(Vector3 vector, Vector3 normal)Vector3 TransformCoordinate(Vector3 &coord, Matrix4x4 &transMat)Matrix4x4 LookAtRH(Vector3 &cameraPos, Vector3 &target, Vector3 &up)Matrix4x4 LookAtLH(Vector3 &cameraPos, Vector3 &target, Vector3 &up)Matrix4x4 Translation(Vector3 &value)Matrix4x4 PerspectiveFovRH(float fov, float aspect, float znear, float zfar)Matrix4x4 PerspectiveFovLH(float fov, float aspect, float znear, float zfar)Matrix4x4 RotationX(float angle)Matrix4x4 RotationY(float angle)Matrix4x4 RotationZ(float angle)Matrix4x4 RotationYawPitchRoll(float yaw, float pitch, float roll)Matrix4x4 Rotate(Vector3 &rotate)Matrix4x4 Scale(float x, float y, float z)Matrix4x4 Scale(Vector3 &scale)
以上再结合c++的数学库可以满足这个demo的基本需求。
github地址:https://github.com/wenshuiqing/Render3D
阅读全文
0 0
- 软件光栅化渲染器(一)
- 软件光栅化渲染器一
- 软件光栅化渲染器(二)
- 软件光栅化渲染器(三)
- 软件光栅化渲染器(四)
- 软件光栅化渲染器(五)
- 软件光栅化渲染器(六)
- 软件光栅化渲染器(七)
- 软件光栅化渲染器(八)
- 软件光栅化渲染器(九)
- 软件光栅化渲染器(十)
- 软件光栅化渲染器二
- 从零开始写光栅化渲染器3:三角形光栅化
- 光栅渲染器(三)光栅化2D三角形
- 光栅渲染器
- [软件渲染器入门]四,填充光栅化的三角形并使用深度缓冲
- 用C#实现一个简易的软件光栅化渲染器
- 从零开始写光栅化渲染器2:直线绘制光栅化算法
- Android----OKHttp网络请求-拦截器
- Java消息队列
- matplotlib基础
- 20171206
- php+apache+yaf框架开发环境搭建
- 软件光栅化渲染器一
- Spring 获取方法参数名
- Agri-Net POJ
- UML总结(一)----学习主要重点概述
- 系统调用和库函数及API的区别
- Java Web中实现文件上传(一)
- 相比于C,python更简便
- [jzoj]2248. 【2017.12.02普及组模拟】送快递(二分+set)
- oracle查询哪些表被谁锁住了