summaryrefslogtreecommitdiff
path: root/src/core/rasterizer.h
blob: c7ccc3cbdc7aa9b070dcb2acb1f39eee7260e18c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _SOFTSHADEROOM_GEOMETRY_H_
#define _SOFTSHADEROOM_GEOMETRY_H_

#include "../math/math.h"
#include "shader.h"
#include "clip.h"

void ssrR_putline(int x0, int y0, int x1, int y1, Color color);

float ssrR_area(Vec2* v1, Vec2* v2, Vec2* v3); /*计算三角形面积,注意v1v2v3按逆时针顺序定义*/

bool ssrR_barycentric(Vec2* A, Vec2* B, Vec2* C, Vec2* p, Vec3* out); /*计算重心坐标*/
void ssrR_center(Vec2* A, Vec2* B, Vec2* C, Vec2* out); /*获得重心*/
bool ssrR_ispointintriangle(Vec2* A, Vec2* B, Vec2* C, Vec2* p);

void ssrR_triangle(Vec4* CA, Vec4* CB, Vec4* CC, uint IA, uint IB, uint IC, Program* program);
void ssrR_line(Vec4* CA, Vec4* CB, uint IA, uint IB, Program* program);
void ssrR_point(Vec4* CA, uint IA, Program* program);

#endif