[Scummvm-git-logs] scummvm master -> 89c64611907368d8625855f378f0f15e9f17d5d9
neuromancer
noreply at scummvm.org
Sun Apr 2 13:56:25 UTC 2023
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4f29dd4299 FREESCAPE: renamed shaders filenames and added them into shader.dat
8542975b2b FREESCAPE: implemented lines in shader renderer
89c6461190 FREESCAPE: implemented player shoot in shader renderer
Commit: 4f29dd4299e8db3fe98f8f987f158f38a65fd35f
https://github.com/scummvm/scummvm/commit/4f29dd4299e8db3fe98f8f987f158f38a65fd35f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-04-02T15:56:10+02:00
Commit Message:
FREESCAPE: renamed shaders filenames and added them into shader.dat
Changed paths:
A engines/freescape/shaders/freescape_bitmap.fragment
A engines/freescape/shaders/freescape_bitmap.vertex
A engines/freescape/shaders/freescape_triangle.fragment
A engines/freescape/shaders/freescape_triangle.vertex
R engines/freescape/shaders/bitmap.fragment
R engines/freescape/shaders/bitmap.vertex
R engines/freescape/shaders/triangle.fragment
R engines/freescape/shaders/triangle.vertex
Makefile.common
devtools/create_project/xcode.cpp
dists/scummvm.rc
engines/freescape/gfx_opengl_shaders.cpp
diff --git a/Makefile.common b/Makefile.common
index 833100a684c..82fea459b0f 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -522,6 +522,9 @@ endif
ifdef ENABLE_HPL1
DIST_FILES_SHADERS+=$(wildcard $(srcdir)/engines/hpl1/engine/impl/shaders/*)
endif
+ifdef ENABLE_FREESCAPE
+DIST_FILES_SHADERS+=$(wildcard $(srcdir)/engines/freescape/shaders/*)
+endif
endif
.PHONY: all clean distclean plugins dist-src clean-toplevel manual
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index 7662c8f24ca..c66ae4d5905 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -1083,6 +1083,12 @@ XcodeProvider::ValueList& XcodeProvider::getResourceFiles(const BuildSetup &setu
files.push_back("engines/wintermute/base/gfx/opengl/shaders/wme_sprite.fragment");
files.push_back("engines/wintermute/base/gfx/opengl/shaders/wme_sprite.vertex");
}
+ if (CONTAINS_DEFINE(setup.defines, "ENABLE_FREESCAPE")) {
+ files.push_back("engines/freescape/shaders/freescape_bitmap.fragment");
+ files.push_back("engines/freescape/shaders/freescape_bitmap.vertex");
+ files.push_back("engines/freescape/shaders/freescape_triangle.fragment");
+ files.push_back("engines/freescape/shaders/freescape_triange.vertex");
+ }
files.push_back("icons/scummvm.icns");
files.push_back("AUTHORS");
files.push_back("COPYING");
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index 83cf898f0eb..c6765a447f3 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -281,6 +281,12 @@ shaders/hpl1_refract_special.fragment FILE "engines/hpl1/engi
shaders/hpl1_refract_water.fragment FILE "engines/hpl1/engine/impl/shaders/hpl1_refract_water.fragment"
shaders/hpl1_refract_water.vertex FILE "engines/hpl1/engine/impl/shaders/hpl1_refract_water.vertex"
#endif
+#if PLUGIN_ENABLED_STATIC(FREESCAPE)
+shaders/freescape_bitmap.fragment FILE "engines/freescape/shaders/freescape_bitmap.fragment"
+shaders/freescape_bitmap.vertex FILE "engines/freescape/shaders/freescape_bitmap.vertex"
+shaders/freescape_triangle.fragment FILE "engines/freescape/shaders/freescape_cube.fragment"
+shaders/freescape_triangle.vertex FILE "engines/freescape/shaders/freescape_cube.vertex"
+#endif
#endif
#endif
diff --git a/engines/freescape/gfx_opengl_shaders.cpp b/engines/freescape/gfx_opengl_shaders.cpp
index a30c22935db..b6799bbfcfa 100644
--- a/engines/freescape/gfx_opengl_shaders.cpp
+++ b/engines/freescape/gfx_opengl_shaders.cpp
@@ -75,13 +75,13 @@ void OpenGLShaderRenderer::init() {
_verts = (Vertex *)malloc(sizeof(Vertex) * kVertexArraySize);
static const char *triangleAttributes[] = { "position", nullptr };
- _triangleShader = OpenGL::Shader::fromFiles("triangle", triangleAttributes);
+ _triangleShader = OpenGL::Shader::fromFiles("freescape_triangle", triangleAttributes);
_triangleVBO = OpenGL::Shader::createBuffer(GL_ARRAY_BUFFER, sizeof(Vertex) * kVertexArraySize, _verts, GL_DYNAMIC_DRAW);
// TODO: Check if 3 * sizeof(float) == sizeof(Vertex)
_triangleShader->enableVertexAttribute("position", _triangleVBO, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
static const char *bitmapAttributes[] = { "position", "texcoord", nullptr };
- _bitmapShader = OpenGL::Shader::fromFiles("bitmap", bitmapAttributes);
+ _bitmapShader = OpenGL::Shader::fromFiles("freescape_bitmap", bitmapAttributes);
_bitmapVBO = OpenGL::Shader::createBuffer(GL_ARRAY_BUFFER, sizeof(bitmapVertices), bitmapVertices);
_bitmapShader->enableVertexAttribute("position", _bitmapVBO, 2, GL_FLOAT, GL_TRUE, 2 * sizeof(float), 0);
_bitmapShader->enableVertexAttribute("texcoord", _bitmapVBO, 2, GL_FLOAT, GL_TRUE, 2 * sizeof(float), 0);
diff --git a/engines/freescape/shaders/bitmap.fragment b/engines/freescape/shaders/freescape_bitmap.fragment
similarity index 100%
rename from engines/freescape/shaders/bitmap.fragment
rename to engines/freescape/shaders/freescape_bitmap.fragment
diff --git a/engines/freescape/shaders/bitmap.vertex b/engines/freescape/shaders/freescape_bitmap.vertex
similarity index 100%
rename from engines/freescape/shaders/bitmap.vertex
rename to engines/freescape/shaders/freescape_bitmap.vertex
diff --git a/engines/freescape/shaders/triangle.fragment b/engines/freescape/shaders/freescape_triangle.fragment
similarity index 100%
rename from engines/freescape/shaders/triangle.fragment
rename to engines/freescape/shaders/freescape_triangle.fragment
diff --git a/engines/freescape/shaders/triangle.vertex b/engines/freescape/shaders/freescape_triangle.vertex
similarity index 100%
rename from engines/freescape/shaders/triangle.vertex
rename to engines/freescape/shaders/freescape_triangle.vertex
Commit: 8542975b2b24ba2c071b225cddd083de28c46a5f
https://github.com/scummvm/scummvm/commit/8542975b2b24ba2c071b225cddd083de28c46a5f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-04-02T15:56:10+02:00
Commit Message:
FREESCAPE: implemented lines in shader renderer
Changed paths:
engines/freescape/gfx_opengl_shaders.cpp
diff --git a/engines/freescape/gfx_opengl_shaders.cpp b/engines/freescape/gfx_opengl_shaders.cpp
index b6799bbfcfa..e62e57d9e59 100644
--- a/engines/freescape/gfx_opengl_shaders.cpp
+++ b/engines/freescape/gfx_opengl_shaders.cpp
@@ -216,25 +216,28 @@ void OpenGLShaderRenderer::renderFace(const Common::Array<Math::Vector3d> &verti
assert(vertices.size() >= 2);
const Math::Vector3d &v0 = vertices[0];
- /*if (vertices.size() == 2) {
+ _triangleShader->use();
+ _triangleShader->setUniform("mvpMatrix", _mvpMatrix);
+
+ if (vertices.size() == 2) {
const Math::Vector3d &v1 = vertices[1];
if (v0 == v1)
return;
- glEnableClientState(GL_VERTEX_ARRAY);
copyToVertexArray(0, v0);
copyToVertexArray(1, v1);
- glVertexPointer(3, GL_FLOAT, 0, _verts);
+
glLineWidth(MAX(1, g_system->getWidth() / 192));
+
+ glBindBuffer(GL_ARRAY_BUFFER, _triangleVBO);
+ glBufferData(GL_ARRAY_BUFFER, 2 * 3 * sizeof(float), _verts, GL_DYNAMIC_DRAW);
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), nullptr);
glDrawArrays(GL_LINES, 0, 2);
+
glLineWidth(1);
- glDisableClientState(GL_VERTEX_ARRAY);
return;
- }*/
+ }
- //glEnableClientState(GL_VERTEX_ARRAY);
- _triangleShader->use();
- _triangleShader->setUniform("mvpMatrix", _mvpMatrix);
uint vi = 0;
for (uint i = 1; i < vertices.size() - 1; i++) { // no underflow since vertices.size() > 2
const Math::Vector3d &v1 = vertices[i];
@@ -247,11 +250,8 @@ void OpenGLShaderRenderer::renderFace(const Common::Array<Math::Vector3d> &verti
glBindBuffer(GL_ARRAY_BUFFER, _triangleVBO);
glBufferData(GL_ARRAY_BUFFER, (vi + 3) * 3 * sizeof(float), _verts, GL_DYNAMIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), nullptr);
- //glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, vi + 3);
- //glDisableVertexAttribArray(0);
- //glDisableClientState(GL_VERTEX_ARRAY);
}
void OpenGLShaderRenderer::polygonOffset(bool enabled) {
Commit: 89c64611907368d8625855f378f0f15e9f17d5d9
https://github.com/scummvm/scummvm/commit/89c64611907368d8625855f378f0f15e9f17d5d9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-04-02T15:56:10+02:00
Commit Message:
FREESCAPE: implemented player shoot in shader renderer
Changed paths:
engines/freescape/gfx_opengl_shaders.cpp
diff --git a/engines/freescape/gfx_opengl_shaders.cpp b/engines/freescape/gfx_opengl_shaders.cpp
index e62e57d9e59..1a1d0717074 100644
--- a/engines/freescape/gfx_opengl_shaders.cpp
+++ b/engines/freescape/gfx_opengl_shaders.cpp
@@ -167,14 +167,23 @@ void OpenGLShaderRenderer::renderSensorShoot(byte color, const Math::Vector3d se
glLineWidth(1);*/
}
+// TODO: move inside the shader?
+float remap(float f, float s) {
+ return 2. * f / s - 1;
+}
+
void OpenGLShaderRenderer::renderPlayerShoot(byte color, const Common::Point position, const Common::Rect viewArea) {
- /*uint8 a, r, g, b;
+ uint8 a, r, g, b;
+
+ Math::Matrix4 identity;
+ identity(0, 0) = 1.0;
+ identity(1, 1) = 1.0;
+ identity(2, 2) = 1.0;
+ identity(3, 3) = 1.0;
+
+ _triangleShader->use();
+ _triangleShader->setUniform("mvpMatrix", identity);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(0, _screenW, _screenH, 0, 0, 1);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
if (_renderMode == Common::kRenderCGA || _renderMode == Common::kRenderZX) {
r = g = b = 255;
} else {
@@ -188,28 +197,31 @@ void OpenGLShaderRenderer::renderPlayerShoot(byte color, const Common::Point pos
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
- glColor3ub(r, g, b);
+ useColor(r, g, b);
glLineWidth(5); // It will not work in every OpenGL implementation since the
// spec doesn't require support for line widths other than 1
- glEnableClientState(GL_VERTEX_ARRAY);
- copyToVertexArray(0, Math::Vector3d(viewArea.left, viewArea.height() + viewArea.top, 0));
- copyToVertexArray(1, Math::Vector3d(position.x, position.y, 0));
- copyToVertexArray(2, Math::Vector3d(viewArea.left, viewArea.height() + viewArea.top + 3, 0));
- copyToVertexArray(3, Math::Vector3d(position.x, position.y, 0));
+ copyToVertexArray(0, Math::Vector3d(remap(viewArea.left, _screenW), remap(viewArea.height() - viewArea.top, _screenH), 0));
+ copyToVertexArray(1, Math::Vector3d(remap(position.x, _screenW), remap(_screenH - position.y, _screenH), 0));
- copyToVertexArray(4, Math::Vector3d(viewArea.right, viewArea.height() + viewArea.top, 0));
- copyToVertexArray(5, Math::Vector3d(position.x, position.y, 0));
- copyToVertexArray(6, Math::Vector3d(viewArea.right, viewArea.height() + viewArea.top + 3, 0));
- copyToVertexArray(7, Math::Vector3d(position.x, position.y, 0));
+ copyToVertexArray(2, Math::Vector3d(remap(viewArea.left, _screenW), remap(viewArea.height() - viewArea.top + 3, _screenH), 0));
+ copyToVertexArray(3, Math::Vector3d(remap(position.x, _screenW), remap(_screenH - position.y, _screenH), 0));
- glVertexPointer(3, GL_FLOAT, 0, _verts);
+ copyToVertexArray(4, Math::Vector3d(remap(viewArea.right, _screenW), remap(_screenH - viewArea.bottom, _screenH), 0));
+ copyToVertexArray(5, Math::Vector3d(remap(position.x, _screenW), remap(_screenH - position.y, _screenH), 0));
+
+ copyToVertexArray(6, Math::Vector3d(remap(viewArea.right, _screenW), remap(_screenH - viewArea.bottom + 3, _screenH), 0));
+ copyToVertexArray(7, Math::Vector3d(remap(position.x, _screenW), remap(_screenH - position.y, _screenH), 0));
+
+ glBindBuffer(GL_ARRAY_BUFFER, _triangleVBO);
+ glBufferData(GL_ARRAY_BUFFER, 8 * 3 * sizeof(float), _verts, GL_DYNAMIC_DRAW);
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), nullptr);
glDrawArrays(GL_LINES, 0, 8);
- glDisableClientState(GL_VERTEX_ARRAY);
+
glLineWidth(1);
glEnable(GL_DEPTH_TEST);
- glDepthMask(GL_TRUE);*/
+ glDepthMask(GL_TRUE);
}
void OpenGLShaderRenderer::renderFace(const Common::Array<Math::Vector3d> &vertices) {
More information about the Scummvm-git-logs
mailing list