nxdk_pgraph_tests
A collection of tests for the Xbox nv2a graphics processor
 
Loading...
Searching...
No Matches
lighting_spotlight_tests.h
1#ifndef NXDK_PGRAPH_TESTS_LIGHTING_SPOTLIGHT_TESTS_H
2#define NXDK_PGRAPH_TESTS_LIGHTING_SPOTLIGHT_TESTS_H
3
4#include <cstdint>
5#include <memory>
6#include <vector>
7
8#include "test_suite.h"
9#include "xbox_math_types.h"
10
11class TestHost;
12namespace PBKitPlusPlus {
13class VertexBuffer;
14}
15
16using namespace PBKitPlusPlus;
17
41 public:
44 typedef struct Spotlight {
45 Spotlight(const XboxMath::vector_t& position, const XboxMath::vector_t& direction, float phi, float theta,
46 float attenuation_1, float attenuation_2, float attenuation_3, float falloff_1, float falloff_2,
47 float falloff_3);
48 void Commit(uint32_t light_index, const XboxMath::matrix4_t& view_matrix) const;
49
50 XboxMath::vector_t position;
51
52 XboxMath::vector_t direction;
53
55 float phi;
56
58 float theta;
59
61 float attenuation[3];
62
64 float falloff[3];
65 } Spotlight;
66
67 public:
68 LightingSpotlightTests(TestHost& host, std::string output_dir, const Config& config);
69
70 void Initialize() override;
71 void Deinitialize() override;
72
73 private:
74 void Test(const std::string& name, const Spotlight& light);
75 void TestFixed(const std::string& name, const Spotlight& light);
76
77 void CreateGeometry();
78
79 private:
80 std::shared_ptr<VertexBuffer> vertex_buffer_plane_;
81 std::shared_ptr<VertexBuffer> vertex_buffer_cylinder_;
82};
83
84#endif // NXDK_PGRAPH_TESTS_LIGHTING_SPOTLIGHT_TESTS_H
Definition lighting_spotlight_tests.h:40
void Deinitialize() override
Called to tear down the test suite.
Definition lighting_spotlight_tests.cpp:167
void Initialize() override
Called to initialize the test suite.
Definition lighting_spotlight_tests.cpp:130
Definition test_host.h:33
Definition test_suite.h:20
Definition lighting_spotlight_tests.h:44
float theta
umbra (inner cone) angle in degrees.
Definition lighting_spotlight_tests.h:58
float phi
penumbra (outer cone) angle in degrees.
Definition lighting_spotlight_tests.h:55
float attenuation[3]
Attenuation: {constant, linear (distance), quadratic (distance^2)}.
Definition lighting_spotlight_tests.h:61
float falloff[3]
Raw nv2a falloff coefficients.
Definition lighting_spotlight_tests.h:64