[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