mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:21:16 +02:00
cleanup code
This commit is contained in:
parent
77ec588b64
commit
8eb5f6682a
2 changed files with 19 additions and 105 deletions
|
@ -138,15 +138,6 @@ ivec4 HmdDisplayPlugin::getViewportForSourceSize(const uvec2& size) const {
|
||||||
float sceneAspect = aspect(size);
|
float sceneAspect = aspect(size);
|
||||||
float aspectRatio = sceneAspect / windowAspect;
|
float aspectRatio = sceneAspect / windowAspect;
|
||||||
|
|
||||||
qDebug() << "size:" << size;
|
|
||||||
|
|
||||||
/*
|
|
||||||
qDebug() << "windowSize:" << windowSize;
|
|
||||||
qDebug() << "windowAspect:" << windowAspect;
|
|
||||||
qDebug() << "sceneAspect:" << sceneAspect;
|
|
||||||
qDebug() << "aspectRatio:" << aspectRatio;
|
|
||||||
*/
|
|
||||||
|
|
||||||
uvec2 targetViewportSize = windowSize;
|
uvec2 targetViewportSize = windowSize;
|
||||||
if (aspectRatio < 1.0f) {
|
if (aspectRatio < 1.0f) {
|
||||||
targetViewportSize.x *= aspectRatio;
|
targetViewportSize.x *= aspectRatio;
|
||||||
|
@ -162,41 +153,6 @@ ivec4 HmdDisplayPlugin::getViewportForSourceSize(const uvec2& size) const {
|
||||||
return ivec4(targetViewportPosition, targetViewportSize);
|
return ivec4(targetViewportPosition, targetViewportSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
ivec4 HmdDisplayPlugin::getViewportForClippedSource(const uvec2& sourceSize, const uvec2& clippedRatio) const {
|
|
||||||
// screen preview mirroring
|
|
||||||
auto window = _container->getPrimaryWidget();
|
|
||||||
auto devicePixelRatio = window->devicePixelRatio();
|
|
||||||
auto windowSize = toGlm(window->size());
|
|
||||||
windowSize *= devicePixelRatio;
|
|
||||||
float windowAspect = aspect(windowSize);
|
|
||||||
float sceneAspect = aspect(sourceSize);
|
|
||||||
float clippedAspect = aspect(clippedRatio);
|
|
||||||
|
|
||||||
float aspectRatio = sceneAspect / windowAspect; // old way
|
|
||||||
//float aspectRatio = clippedAspect / windowAspect;
|
|
||||||
|
|
||||||
qDebug() << "size:" << sourceSize;
|
|
||||||
qDebug() << "windowSize:" << windowSize;
|
|
||||||
qDebug() << "windowAspect:" << windowAspect;
|
|
||||||
qDebug() << "sceneAspect:" << sceneAspect;
|
|
||||||
qDebug() << "aspectRatio:" << aspectRatio;
|
|
||||||
|
|
||||||
uvec2 targetViewportSize = windowSize;
|
|
||||||
if (aspectRatio < 1.0f) {
|
|
||||||
targetViewportSize.x *= aspectRatio;
|
|
||||||
} else {
|
|
||||||
targetViewportSize.y /= aspectRatio;
|
|
||||||
}
|
|
||||||
uvec2 targetViewportPosition;
|
|
||||||
if (targetViewportSize.x < windowSize.x) {
|
|
||||||
targetViewportPosition.x = (windowSize.x - targetViewportSize.x) / 2;
|
|
||||||
} else if (targetViewportSize.y < windowSize.y) {
|
|
||||||
targetViewportPosition.y = (windowSize.y - targetViewportSize.y) / 2;
|
|
||||||
}
|
|
||||||
return ivec4(targetViewportPosition, targetViewportSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HmdDisplayPlugin::internalPresent() {
|
void HmdDisplayPlugin::internalPresent() {
|
||||||
PROFILE_RANGE_EX(__FUNCTION__, 0xff00ff00, (uint64_t)presentCount())
|
PROFILE_RANGE_EX(__FUNCTION__, 0xff00ff00, (uint64_t)presentCount())
|
||||||
|
|
||||||
|
@ -210,27 +166,6 @@ void HmdDisplayPlugin::internalPresent() {
|
||||||
sourceSize.x >>= 1;
|
sourceSize.x >>= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****
|
|
||||||
eye image size: (1512, 1680)
|
|
||||||
desired aspect ratio: 16:9
|
|
||||||
desired clipped image: 1512x850
|
|
||||||
|
|
||||||
original clipping: 0,415
|
|
||||||
|
|
||||||
|
|
||||||
examples:
|
|
||||||
window size: 1512x850
|
|
||||||
|
|
||||||
viewport: 0, -415,
|
|
||||||
1512, 1680
|
|
||||||
|
|
||||||
scissor: 0,0, 1512, 850
|
|
||||||
****/
|
|
||||||
|
|
||||||
// viewport is ivec4(targetViewportPosition, targetViewportSize);
|
|
||||||
|
|
||||||
//qDebug() << "sourceSize:" << sourceSize.x << "," << sourceSize.y;
|
|
||||||
|
|
||||||
const unsigned int RATIO_Y = 9;
|
const unsigned int RATIO_Y = 9;
|
||||||
const unsigned int RATIO_X = 16;
|
const unsigned int RATIO_X = 16;
|
||||||
glm::uvec2 originalClippedSize { sourceSize.x, sourceSize.x * RATIO_Y / RATIO_X };
|
glm::uvec2 originalClippedSize { sourceSize.x, sourceSize.x * RATIO_Y / RATIO_X };
|
||||||
|
@ -238,34 +173,9 @@ void HmdDisplayPlugin::internalPresent() {
|
||||||
glm::ivec4 viewport = getViewportForSourceSize(sourceSize);
|
glm::ivec4 viewport = getViewportForSourceSize(sourceSize);
|
||||||
glm::ivec4 scissor = viewport;
|
glm::ivec4 scissor = viewport;
|
||||||
|
|
||||||
/*
|
|
||||||
qDebug() << "viewport.pos:" << viewport.x << "," << viewport.y
|
|
||||||
<< "viewport.size:" << viewport.z << "," << viewport.w;
|
|
||||||
*/
|
|
||||||
|
|
||||||
render([&](gpu::Batch& batch) {
|
render([&](gpu::Batch& batch) {
|
||||||
|
|
||||||
if (_monoPreview) {
|
if (_monoPreview) {
|
||||||
/*
|
|
||||||
glm::mat4 eyeProjection;
|
|
||||||
eyeProjection[0] = vec4 { 0.759056330, 0.000000000, 0.000000000, 0.000000000 };
|
|
||||||
eyeProjection[1] = vec4 { 0.000000000, 0.682773232, 0.000000000, 0.000000000 };
|
|
||||||
eyeProjection[2] = vec4 { -0.0580431037, -0.00619550655, -1.00000489, -1.00000000 };
|
|
||||||
eyeProjection[3] = vec4 { 0.000000000, 0.000000000, -0.0800003856, 0.000000000 };
|
|
||||||
glm::mat4 inverseEyeProjection = glm::inverse(eyeProjection);
|
|
||||||
vec2 eyeRenderTargetSize = viewport;// sourceSize; // { 3024 / 2, 1680 };
|
|
||||||
|
|
||||||
vec4 left = vec4(-1, 0, -1, 1);
|
|
||||||
vec4 right = vec4(1, 0, -1, 1);
|
|
||||||
vec4 right2 = inverseEyeProjection * right;
|
|
||||||
vec4 left2 = inverseEyeProjection * left;
|
|
||||||
left2 /= left2.w;
|
|
||||||
right2 /= right2.w;
|
|
||||||
float width = -left2.x + right2.x;
|
|
||||||
float leftBias = -left2.x / width;
|
|
||||||
float leftCenterPixel = eyeRenderTargetSize.x * leftBias;
|
|
||||||
*/
|
|
||||||
|
|
||||||
auto window = _container->getPrimaryWidget();
|
auto window = _container->getPrimaryWidget();
|
||||||
float devicePixelRatio = window->devicePixelRatio();
|
float devicePixelRatio = window->devicePixelRatio();
|
||||||
glm::vec2 windowSize = toGlm(window->size());
|
glm::vec2 windowSize = toGlm(window->size());
|
||||||
|
@ -279,27 +189,32 @@ void HmdDisplayPlugin::internalPresent() {
|
||||||
|
|
||||||
bool scaleToWidth = windowAspect < sceneAspect;
|
bool scaleToWidth = windowAspect < sceneAspect;
|
||||||
|
|
||||||
|
float ratio;
|
||||||
|
int scissorOffset;
|
||||||
|
|
||||||
if (scaleToWidth) {
|
if (scaleToWidth) {
|
||||||
float ratio = (float)windowSize.x / (float)sourceSize.x;
|
ratio = (float)windowSize.x / (float)sourceSize.x;
|
||||||
int viewportSizeX = sourceSize.x * ratio;
|
} else {
|
||||||
int viewportSizeY = sourceSize.y * ratio;
|
ratio = (float)windowSize.y / (float)originalClippedSize.y;
|
||||||
int scissorSizeX = originalClippedSize.x * ratio;
|
}
|
||||||
int scissorSizeY = originalClippedSize.y * ratio;
|
|
||||||
int viewportOffset = ((int)windowSize.y - viewportSizeY) / 2;
|
int scissorSizeX = originalClippedSize.x * ratio;
|
||||||
int scissorOffset = ((int)windowSize.y - scissorSizeY) / 2;
|
int scissorSizeY = originalClippedSize.y * ratio;
|
||||||
|
|
||||||
|
int viewportSizeX = sourceSize.x * ratio;
|
||||||
|
int viewportSizeY = sourceSize.y * ratio;
|
||||||
|
int viewportOffset = ((int)windowSize.y - viewportSizeY) / 2;
|
||||||
|
|
||||||
|
if (scaleToWidth) {
|
||||||
|
scissorOffset = ((int)windowSize.y - scissorSizeY) / 2;
|
||||||
scissor = ivec4(0, scissorOffset, scissorSizeX, scissorSizeY);
|
scissor = ivec4(0, scissorOffset, scissorSizeX, scissorSizeY);
|
||||||
viewport = ivec4(0, viewportOffset, viewportSizeX, viewportSizeY);
|
viewport = ivec4(0, viewportOffset, viewportSizeX, viewportSizeY);
|
||||||
} else {
|
} else {
|
||||||
float ratio = (float)windowSize.y / (float)originalClippedSize.y;
|
scissorOffset = ((int)windowSize.x - scissorSizeX) / 2;
|
||||||
int viewportSizeX = sourceSize.x * ratio;
|
|
||||||
int viewportSizeY = sourceSize.y * ratio;
|
|
||||||
int scissorSizeX = originalClippedSize.x * ratio;
|
|
||||||
int scissorSizeY = originalClippedSize.y * ratio;
|
|
||||||
int viewportOffset = ((int)windowSize.y - viewportSizeY) / 2;
|
|
||||||
int scissorOffset = ((int)windowSize.x - scissorSizeX) / 2;
|
|
||||||
scissor = ivec4(scissorOffset, 0, scissorSizeX, scissorSizeY);
|
scissor = ivec4(scissorOffset, 0, scissorSizeX, scissorSizeY);
|
||||||
viewport = ivec4(scissorOffset, viewportOffset, viewportSizeX, viewportSizeY);
|
viewport = ivec4(scissorOffset, viewportOffset, viewportSizeX, viewportSizeY);
|
||||||
}
|
}
|
||||||
|
|
||||||
viewport.z *= 2;
|
viewport.z *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,6 @@ protected:
|
||||||
bool _disablePreview{ true };
|
bool _disablePreview{ true };
|
||||||
private:
|
private:
|
||||||
ivec4 getViewportForSourceSize(const uvec2& size) const;
|
ivec4 getViewportForSourceSize(const uvec2& size) const;
|
||||||
ivec4 getViewportForClippedSource(const uvec2& sourceSize, const uvec2& clippedRatio) const;
|
|
||||||
|
|
||||||
|
|
||||||
bool _disablePreviewItemAdded { false };
|
bool _disablePreviewItemAdded { false };
|
||||||
|
|
Loading…
Reference in a new issue