[Scummvm-devel] GSOC 2013 - Hardware accelerated blitting

Hotea Cristian hotea.cristian at yahoo.com
Wed Apr 17 15:03:38 CEST 2013


Hello guys, 


I am Hotea Cristian, a third year student at Polytechnic University of Bucharest, Computer Science Department. Some of you knows me from #scummvm(user: Cristian_H). I am passionate about games and graphics. I have a good knowledge of C/C++, data structures, algorithms, bitwise operations. 


At the university i studied the graphics class where i learned things about graphics pipeline(programmable and non-programmable), the models of colors representation (RGB,CMY,HSL,HSV), algorithms used for clipping and rasterisation, transparency, and many other things. All of this was presented relative to OpenGL so the practic applications 

was designed using OpenGL.


Besides my classes on the university, i applied in the past semester on a Workshop held by Gameloft Bucharest and i was accepted. During the workshop i wrote a 3D-Engine in C++ using
OpenGL ES 2.0. The Engine was designed using Singleton pattern, with Resource Manager, Scene Manager and Effects Manager. I wrote some shaders (for water, fire, reflection, lights, etc.). If you want to see my project: https://github.com/hoteacristi/Workshop . There are already loaded some shaders on the models, you have to download and build the project with Microsoft Visual Studio/C(i used 2008) and you can explore the scene using keys specified in README.

Enough about me, I am interested in your project: "Hardware accelerated blitting" and i want to know more about it. I know that hardware acceleration means to execute some functions/instructions faster using hardware instead of software. About blitting now, i read that blitting means manipulation of a pattern(a square/rectangle zone) by reproducing it many times on the screen without modify zones beside the Hardware-sprite. Hardware-sprites have the advantage being stored in separate memory and they don't disturb the main display memory.So the difference between Hardware-Sprites and blitting is that blitting suppose moving the patterns about the screen by using the same memory as the display uses.
The main idea is that the out-color must be something like this: ((Background) AND (Mask)) OR (Sprite).And that using a mask with 0,1. So, the operation (Background) AND (Mask)
will erase the actual color of the BACKGROUND or will keep it unchanged. This approach can not be used for patterns or backgrounds who have the alpha component less than 1.0 .


The task of the project is to write an API for hardware acceleration.An API is an interface between software components and in this case between your engines and OpenGL,OpenGL ES .  You said " for fast alpha (transparency) blitting, rotation, scaling, etc ". If i understood correctly i have to work with "alpha compositing" / "alpha blending" for alpha blitting. And for rotation and scaling i have to use that approach for optimising the computing of the 2d-scene ? 

I hope my post is not very silly :).

I look forward to reading your opinions and suggestions.

Thank you,
Hotea Cristian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20130417/61d1cb1f/attachment.html>


More information about the Scummvm-devel mailing list