Skip to content

Commit de44713

Browse files
committed
修复gamma矫正(含imgui)
1 parent f62770a commit de44713

2 files changed

Lines changed: 81 additions & 1 deletion

File tree

src/Context/Matrix.h

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,86 @@ namespace FCT
6060
};
6161
*this = *this * trans;
6262
}
63+
64+
Mat4 transpose() const
65+
{
66+
return Mat4(
67+
m[0], m[4], m[8], m[12],
68+
m[1], m[5], m[9], m[13],
69+
m[2], m[6], m[10], m[14],
70+
m[3], m[7], m[11], m[15]
71+
);
72+
}
73+
74+
Mat4 inverse() const
75+
{
76+
Mat4 inv;
77+
float det;
78+
79+
inv.m[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] +
80+
m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10];
81+
82+
inv.m[4] = -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] -
83+
m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10];
84+
85+
inv.m[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] +
86+
m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9];
87+
88+
inv.m[12] = -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] + m[8] * m[5] * m[14] -
89+
m[8] * m[6] * m[13] - m[12] * m[5] * m[10] + m[12] * m[6] * m[9];
90+
91+
inv.m[1] = -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] + m[9] * m[2] * m[15] -
92+
m[9] * m[3] * m[14] - m[13] * m[2] * m[11] + m[13] * m[3] * m[10];
93+
94+
inv.m[5] = m[0] * m[10] * m[15] - m[0] * m[11] * m[14] - m[8] * m[2] * m[15] +
95+
m[8] * m[3] * m[14] + m[12] * m[2] * m[11] - m[12] * m[3] * m[10];
96+
97+
inv.m[9] = -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] + m[8] * m[1] * m[15] -
98+
m[8] * m[3] * m[13] - m[12] * m[1] * m[11] + m[12] * m[3] * m[9];
99+
100+
inv.m[13] = m[0] * m[9] * m[14] - m[0] * m[10] * m[13] - m[8] * m[1] * m[14] +
101+
m[8] * m[2] * m[13] + m[12] * m[1] * m[10] - m[12] * m[2] * m[9];
102+
103+
inv.m[2] = m[1] * m[6] * m[15] - m[1] * m[7] * m[14] - m[5] * m[2] * m[15] +
104+
m[5] * m[3] * m[14] + m[13] * m[2] * m[7] - m[13] * m[3] * m[6];
105+
106+
inv.m[6] = -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] + m[4] * m[2] * m[15] -
107+
m[4] * m[3] * m[14] - m[12] * m[2] * m[7] + m[12] * m[3] * m[6];
108+
109+
inv.m[10] = m[0] * m[5] * m[15] - m[0] * m[7] * m[13] - m[4] * m[1] * m[15] +
110+
m[4] * m[3] * m[13] + m[12] * m[1] * m[7] - m[12] * m[3] * m[5];
111+
112+
inv.m[14] = -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] + m[4] * m[1] * m[14] -
113+
m[4] * m[2] * m[13] - m[12] * m[1] * m[6] + m[12] * m[2] * m[5];
114+
115+
inv.m[3] = -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] + m[5] * m[2] * m[11] -
116+
m[5] * m[3] * m[10] - m[9] * m[2] * m[7] + m[9] * m[3] * m[6];
117+
118+
inv.m[7] = m[0] * m[6] * m[11] - m[0] * m[7] * m[10] - m[4] * m[2] * m[11] +
119+
m[4] * m[3] * m[10] + m[8] * m[2] * m[7] - m[8] * m[3] * m[6];
120+
121+
inv.m[11] = -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] + m[4] * m[1] * m[11] -
122+
m[4] * m[3] * m[9] - m[8] * m[1] * m[7] + m[8] * m[3] * m[5];
123+
124+
inv.m[15] = m[0] * m[5] * m[10] - m[0] * m[6] * m[9] - m[4] * m[1] * m[10] +
125+
m[4] * m[2] * m[9] + m[8] * m[1] * m[6] - m[8] * m[2] * m[5];
126+
127+
det = m[0] * inv.m[0] + m[1] * inv.m[4] + m[2] * inv.m[8] + m[3] * inv.m[12];
128+
129+
if (det == 0.0f)
130+
{
131+
inv.identity();
132+
return inv;
133+
}
134+
135+
det = 1.0f / det;
136+
for (int i = 0; i < 16; i++)
137+
{
138+
inv.m[i] *= det;
139+
}
140+
141+
return inv;
142+
}
63143
void rotateX(float degrees)
64144
{
65145
float radians = degrees * 3.14159265f / 180.0f;

src/RHI/VK_Swapchain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ namespace FCT {
186186
vk::SurfaceFormatKHR VK_Swapchain::chooseSwapSurfaceFormat(
187187
const std::vector<vk::SurfaceFormatKHR> &availableFormats) {
188188
for (const auto &availableFormat : availableFormats) {
189-
if (availableFormat.format == vk::Format::eB8G8R8A8Unorm &&
189+
if (availableFormat.format == vk::Format::eB8G8R8A8Srgb &&
190190
availableFormat.colorSpace == vk::ColorSpaceKHR::eSrgbNonlinear) {
191191
return availableFormat;
192192
}

0 commit comments

Comments
 (0)