mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
3d4dfb2077
- Add "tfrag-water" tfrag tree support (may just be the same as Jak 1's 'dirt' for the settings) - Add "tfrag-trans" tfrag tree support, reusing "trans-tfrag" from jak 1. - Add a hack to `LinkedObjectFileCreation` to handle `oracle`, which is accidentally multiply defined as a type leftover from jak 1 (an entity in village1), and level info for jak 2. - Add `VI1.DGO` - add `time-of-day.gc`, and a few other stub functions so it works - Set up some time of day stuff in GOAL for jak 2/PC renderers - Clean up time of day in c++ renderers, support the more complicated weight system used by jak 2 (backward compatible with jak 1, thankfully) The mood functions now run, so this could cause problems if they rely on stuff we don't have yet. But it seems fine for ctysluma and prison for now. ![image](https://user-images.githubusercontent.com/48171810/194719441-d185f59c-19dc-4cd3-a5c4-00b0cfe1d6c3.png) ![image](https://user-images.githubusercontent.com/48171810/194719449-6e051bf3-0750-42e5-a654-901313dbe479.png) ![image](https://user-images.githubusercontent.com/48171810/194719455-3ca6793e-873a-449a-8e85-9c20ffeb4da3.png) ![image](https://user-images.githubusercontent.com/48171810/194719461-8f27af17-4434-4492-96cd-8c5eec6eafdf.png) ![image](https://user-images.githubusercontent.com/48171810/194719468-720715b9-985a-4acf-928c-eab948cfcb03.png) ![image](https://user-images.githubusercontent.com/48171810/194719486-bfb91e83-f6ca-4585-80ad-3b2c0cbbd5af.png) ![image](https://user-images.githubusercontent.com/48171810/194719492-df065d2f-cb5a-47e3-a248-f5317c42082f.png) ![image](https://user-images.githubusercontent.com/48171810/194719507-91e1f477-ecfe-4d6c-b744-5f24646255ca.png)
82 lines
2 KiB
C++
82 lines
2 KiB
C++
#pragma once
|
|
|
|
#include "common/dma/gs.h"
|
|
#include "common/math/Vector.h"
|
|
|
|
#include "game/graphics/opengl_renderer/BucketRenderer.h"
|
|
#include "game/graphics/opengl_renderer/DirectRenderer.h"
|
|
#include "game/graphics/opengl_renderer/background/Tfrag3.h"
|
|
#include "game/graphics/opengl_renderer/background/Tie3.h"
|
|
|
|
using math::Matrix4f;
|
|
using math::Vector4f;
|
|
|
|
struct TFragData {
|
|
Vector4f fog; // 0 656 (vf01)
|
|
Vector4f val; // 1 657 (vf02)
|
|
GifTag str_gif; // 2 658 (vf06)
|
|
GifTag fan_gif; // 3 659
|
|
GifTag ad_gif; // 4 660
|
|
Vector4f hvdf_offset; // 5 661 (vf10)
|
|
Vector4f hmge_scale; // 6 662 (vf11)
|
|
Vector4f invh_scale; // 7 663
|
|
Vector4f ambient; // 8 664
|
|
Vector4f guard; // 9 665
|
|
Vector4f k0s[2]; // 10/11 666, 667
|
|
Vector4f k1s[2]; // 12/13 668, 669
|
|
|
|
std::string print() const;
|
|
};
|
|
static_assert(sizeof(TFragData) == 0xe0, "TFragData size");
|
|
|
|
struct TFragBufferedData {
|
|
u8 pad[328 * 16];
|
|
};
|
|
static_assert(sizeof(TFragBufferedData) == 328 * 16);
|
|
|
|
class TFragment : public BucketRenderer {
|
|
public:
|
|
TFragment(const std::string& name,
|
|
int my_id,
|
|
const std::vector<tfrag3::TFragmentTreeKind>& trees,
|
|
bool child_mode,
|
|
int level_id);
|
|
void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override;
|
|
void draw_debug_window() override;
|
|
|
|
private:
|
|
void handle_initialization(DmaFollower& dma);
|
|
|
|
bool m_child_mode = false;
|
|
|
|
// GS setup data
|
|
u8 m_test_setup[32];
|
|
|
|
// VU data
|
|
TFragData m_tfrag_data;
|
|
|
|
TfragPcPortData m_pc_port_data;
|
|
|
|
// buffers
|
|
TFragBufferedData m_buffered_data[2];
|
|
|
|
enum TFragDataMem {
|
|
Buffer0_Start = 0,
|
|
TFragMatrix0 = 5,
|
|
|
|
Buffer1_Start = 328,
|
|
TFragMatrix1 = TFragMatrix0 + Buffer1_Start,
|
|
|
|
TFragFrameData = 656,
|
|
TFragKickZoneData = 670,
|
|
};
|
|
|
|
enum TFragProgMem {
|
|
TFragSetup = 0,
|
|
};
|
|
|
|
Tfrag3 m_tfrag3;
|
|
std::vector<tfrag3::TFragmentTreeKind> m_tree_kinds;
|
|
int m_level_id;
|
|
};
|