MinusculeRender/src/minus_renderer.h

41 lines
1013 B
C
Raw Normal View History

// Copyright 2024 Bytedance Inc. All Rights Reserved.
// Author: tianlei.richard@bytedance.com (tianlei.richard)
#pragma once
#include "triangle.h"
#include <opencv2/core/core.hpp>
class MinusRenderer {
public:
MinusRenderer(float near, float far, float fov, float aspect_ratio,
std::vector<Triangle> &&primitives);
public:
cv::Mat render(const int resolution_width, const int resolution_height);
public:
2024-03-06 22:23:48 +08:00
void model_transform(const TransformMatrix &m);
private:
2024-03-06 22:23:48 +08:00
static float calculate_height(const float fov, const float near);
static float calculate_width(const float height, const float ratio);
static TransformMatrix view_port_transform(const float width,
const float height);
2024-03-06 22:23:48 +08:00
private:
TransformMatrix squish_tranform();
TransformMatrix orthographic_tranform();
private:
float near_;
float far_;
float fov_; // In radian
float aspect_ratio_;
2024-03-06 22:23:48 +08:00
float height_;
float width_;
std::vector<Triangle> primitives_;
};