https://wiki.librecad.org/api.php?action=feedcontributions&user=Kartik+Kumar&feedformat=atomLibreCAD wiki - User contributions [en]2019-07-20T10:13:07ZUser contributionsMediaWiki 1.22.5https://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-18T22:49:46Z<p>Kartik Kumar: /* Week 8 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> Working on GLSL shaders to render more line patterns<br />
<br />
'''July 11th'''<br />
<br />
> Trying to save the line pattern data as an array of ratios representing dash and gap<br />
<br />
> The pattern with even elements is to repeated directly while the one with odd elements gets flipped every time.<br />
<br />
'''July 12th'''<br />
<br />
> made new GLSL Shaders to render thick , continous , seamless dashed lines with miter at edges<br />
<br />
> Tessellate line with 2 triangles using Geometry Shader and then rendering or discarding fragments according to dash/gap in fragment shader<br />
<br />
> Now have basic , gradient , thickline , dashed thickline etc as new shaders<br />
<br />
> Next is to start with revamping code which can send data in correct format accordingly to shader type<br />
<br />
'''July 13th'''<br />
<br />
> made new commit , tried to solve the gradient background issue<br />
<br />
> Gradient Repo seems working all ok, Current repo work fine on different machines too<br />
<br />
'''July 14th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 8''' ==<br />
'''July 15th'''<br />
<br />
> Finding ways to integrate the thick line and line pattern shaders with codebase<br />
<br />
'''July 16th'''<br />
<br />
> finalize the shaders to be used with librecad opengl module for linepatterns<br />
<br />
> Reviewing how much and where the changes would be required for integrating the shaders<br />
<br />
'''July 17th'''<br />
<br />
> Got reported by mentor about the OpenGL Debugger with Qt<br />
<br />
> Found a number of gl calls which are depreciated and replaced then with latest compatible calls<br />
<br />
> Still there is the issue of gradient background freeing memory<br />
<br />
'''July 18th'''<br />
<br />
> On AMD GPUs the repo works perfect , now checking on NVIDIA GPU<br />
<br />
> Got the bug on NVIDIA systems, trying to seperate glDelete*** calls from destructors of CPU side objects<br />
<br />
> Fixed the bug and got it reviewed by the mentor, Finally its done!!!<br />
<br />
'''July 19th'''<br />
<br />
> <br />
<br />
'''July 20th'''<br />
<br />
> <br />
<br />
'''July 21st'''<br />
<br />
></div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-15T17:35:16Z<p>Kartik Kumar: /* Week 8 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> Working on GLSL shaders to render more line patterns<br />
<br />
'''July 11th'''<br />
<br />
> Trying to save the line pattern data as an array of ratios representing dash and gap<br />
<br />
> The pattern with even elements is to repeated directly while the one with odd elements gets flipped every time.<br />
<br />
'''July 12th'''<br />
<br />
> made new GLSL Shaders to render thick , continous , seamless dashed lines with miter at edges<br />
<br />
> Tessellate line with 2 triangles using Geometry Shader and then rendering or discarding fragments according to dash/gap in fragment shader<br />
<br />
> Now have basic , gradient , thickline , dashed thickline etc as new shaders<br />
<br />
> Next is to start with revamping code which can send data in correct format accordingly to shader type<br />
<br />
'''July 13th'''<br />
<br />
> made new commit , tried to solve the gradient background issue<br />
<br />
> Gradient Repo seems working all ok, Current repo work fine on different machines too<br />
<br />
'''July 14th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 8''' ==<br />
'''July 15th'''<br />
<br />
> Finding ways to integrate the thick line and line pattern shaders with codebase<br />
<br />
'''July 16th'''<br />
<br />
> <br />
<br />
'''July 17th'''<br />
<br />
> <br />
<br />
'''July 18th'''<br />
<br />
> <br />
<br />
'''July 19th'''<br />
<br />
> <br />
<br />
'''July 20th'''<br />
<br />
> <br />
<br />
'''July 21st'''<br />
<br />
></div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-15T17:35:02Z<p>Kartik Kumar: /* Week 7 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> Working on GLSL shaders to render more line patterns<br />
<br />
'''July 11th'''<br />
<br />
> Trying to save the line pattern data as an array of ratios representing dash and gap<br />
<br />
> The pattern with even elements is to repeated directly while the one with odd elements gets flipped every time.<br />
<br />
'''July 12th'''<br />
<br />
> made new GLSL Shaders to render thick , continous , seamless dashed lines with miter at edges<br />
<br />
> Tessellate line with 2 triangles using Geometry Shader and then rendering or discarding fragments according to dash/gap in fragment shader<br />
<br />
> Now have basic , gradient , thickline , dashed thickline etc as new shaders<br />
<br />
> Next is to start with revamping code which can send data in correct format accordingly to shader type<br />
<br />
'''July 13th'''<br />
<br />
> made new commit , tried to solve the gradient background issue<br />
<br />
> Gradient Repo seems working all ok, Current repo work fine on different machines too<br />
<br />
'''July 14th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 8''' ==<br />
'''July 15th'''<br />
<br />
> Finding ways to integrate the thick line and line pattern shaders with codebase<br />
<br />
'''July 16th'''<br />
<br />
> <br />
<br />
'''July 17th'''<br />
<br />
> <br />
<br />
'''July 18th'''<br />
<br />
> <br />
<br />
'''July 19th'''<br />
<br />
> <br />
<br />
'''July 20th'''<br />
<br />
> <br />
<br />
'''July 21st'''<br />
<br />
> BREAK</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-12T19:01:35Z<p>Kartik Kumar: /* Week 7 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> Working on GLSL shaders to render more line patterns<br />
<br />
'''July 11th'''<br />
<br />
> Trying to save the line pattern data as an array of ratios representing dash and gap<br />
<br />
> The pattern with even elements is to repeated directly while the one with odd elements gets flipped every time.<br />
<br />
'''July 12th'''<br />
<br />
> made new GLSL Shaders to render thick , continous , seamless dashed lines with miter at edges<br />
<br />
> Tessellate line with 2 triangles using Geometry Shader and then rendering or discarding fragments according to dash/gap in fragment shader<br />
<br />
> Now have basic , gradient , thickline , dashed thickline etc as new shaders<br />
<br />
> Next is to start with revamping code which can send data in correct format accordingly to shader type<br />
<br />
'''July 13th'''<br />
<br />
> <br />
<br />
'''July 14th'''<br />
<br />
></div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-11T18:10:11Z<p>Kartik Kumar: /* Week 7 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> Working on GLSL shaders to render more line patterns<br />
<br />
'''July 11th'''<br />
<br />
> Trying to save the line pattern data as an array of ratios representing dash and gap<br />
<br />
> The pattern with even elements is to repeated directly while the one with odd elements gets flipped every time.<br />
<br />
'''July 12th'''<br />
<br />
> <br />
<br />
'''July 13th'''<br />
<br />
> <br />
<br />
'''July 14th'''<br />
<br />
></div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-10T01:45:58Z<p>Kartik Kumar: /* Week 7 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 8th'''<br />
<br />
> Still finding Some concrete method for line pattern which is optimal and feasible ( It should have less CPU computations and support caching also )<br />
<br />
> Trying Some GLSL Shaders to get results<br />
<br />
'''July 9th'''<br />
<br />
> Found out a mathematical way by which CPU computation is required only once , trying to implement this method with GLSL<br />
<br />
> First Time successfully rendered correct line patterns , Now this looks integrable with LC3 and could support caching also <br />
<br />
'''July 10th'''<br />
<br />
> <br />
<br />
'''July 11th'''<br />
<br />
> <br />
<br />
'''July 12th'''<br />
<br />
> <br />
<br />
'''July 13th'''<br />
<br />
> <br />
<br />
'''July 14th'''<br />
<br />
></div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-09T13:35:01Z<p>Kartik Kumar: /* Week 7 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-09T13:23:53Z<p>Kartik Kumar: /* Week 6 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.<br />
<br />
== '''Week 7''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-07T16:37:43Z<p>Kartik Kumar: /* Week 6 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes<br />
<br />
'''July 4th'''<br />
<br />
> Searched some articles on how to render linepattern and dashes<br />
<br />
> Learning how to design the fragment shader to render dashes<br />
<br />
'''July 5th'''<br />
<br />
> Implemented few simple linepattern ( consist of dash and gap only ) roughly in seperate codes<br />
<br />
> Debugging how the LC3 stores the line pattern in vector<br />
<br />
'''July 6th'''<br />
<br />
> BREAK<br />
<br />
'''July 7th'''<br />
<br />
> Discussion with mentor on how to implement the linepattern based on the research work done yet<br />
<br />
> Got a bug reported by mentor , discussing with him and trying to debug.</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-03T03:04:15Z<p>Kartik Kumar: /* Week 6 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''<br />
<br />
> Found out some issues with the coordinate system <br />
<br />
> Solved the issue , Finally the coordinate system is corrected , rendering correct , gradient correct , DXF files opening correctly<br />
<br />
'''July 3rd'''<br />
<br />
> Started learning about the shader based linepattern, dashes</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-07-01T18:49:32Z<p>Kartik Kumar: /* Week 6 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==<br />
'''July 1st'''<br />
<br />
> Completed the Gradient rendering ( Gradient Entity , functions etc )<br />
<br />
> Implemented the Linear_Gradient calculation function using vector geometry math<br />
<br />
> Finally got the correct gradient background and paper background result all working OK<br />
<br />
'''July 2nd'''</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-30T13:32:52Z<p>Kartik Kumar: /* Coding Period Phase 2 (June 29th - July 26th) */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> Discussed more with Mentor to make the entities more abstracted and robust<br />
<br />
> Avoiding the conditional statements and now implementing the draw logic of different entity in their respective classes<br />
<br />
'''June 30th'''<br />
<br />
> First time successfully separated the draw code , working OK<br />
<br />
> Now working on making a Base class of entity which others will implement<br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-30T13:30:16Z<p>Kartik Kumar: /* Week 5 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> Got the Feedback on the caching mechanism implemented<br />
<br />
> Discussed with mentor how to separate the classes for different types<br />
<br />
'''June 27th'''<br />
<br />
> Started with separating the draw() code from renderer to entity class<br />
<br />
> Redesigning the structure of classes to work accordingly<br />
<br />
'''June 28th'''<br />
<br />
> Tried Compiling more than one shader working OK<br />
<br />
> One Shader for the basic shape drawing the second one for rendering the gradients<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:37:25Z<p>Kartik Kumar: /* Week 5 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating and cleaning the repo till worked done now<br />
<br />
> Submitted the first evaluation form<br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
><br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:34:19Z<p>Kartik Kumar: /* Week 5 */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
> Started with updating the gl_entity to hold the attributes of text rendering<br />
<br />
> Making some temporary functions to render direct quads<br />
<br />
'''June 25th'''<br />
<br />
> Merged the old commits from the original repo <br />
<br />
> Resolved the issues during compiling and finally updating the repo till worked done now<br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
><br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:31:11Z<p>Kartik Kumar: /* Community Bonding Period (May 6th - May 27th) */</p>
<hr />
<div><br />
== ''' <pre style="color: green"> Community Bonding Period (May 6th - May 27th) </pre> ''' ==<br />
<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:29:47Z<p>Kartik Kumar: /* Coding Period Phase 2 (June 29th - July 26th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 2 (June 29th - July 26th) </pre> ''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:28:41Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:27:57Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
=== ''''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''''' ===<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:22:25Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:20:16Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
<br />
== ''' <pre style="color: green"> Coding Period Phase 1 (May 27th - June 28th) </pre> ''' ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:19:10Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
<br />
== <pre style="color: green"> '''Coding Period Phase 1 (May 27th - June 28th)''' </pre> ==<br />
<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:14:51Z<p>Kartik Kumar: /* Coding Period Phase 2 (June 29th - July 26th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''<br />
<br />
><br />
<br />
== '''Week 6''' ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:12:38Z<p>Kartik Kumar: /* Week 5 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
== '''Coding Period Phase 2 (June 29th - July 26th)''' ==<br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:11:32Z<p>Kartik Kumar: /* Week 5 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
'''June 29th'''<br />
<br />
> <br />
<br />
'''June 30th'''</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:11:15Z<p>Kartik Kumar: /* Week 4 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 5''' ==<br />
'''June 24th'''<br />
<br />
><br />
<br />
'''June 25th'''<br />
<br />
> <br />
<br />
'''June 26th'''<br />
<br />
> <br />
<br />
'''June 27th'''<br />
<br />
> <br />
<br />
'''June 28th'''<br />
<br />
> <br />
<br />
'''June 29th'''<br />
<br />
> <br />
'''June 30th'''</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-25T18:05:26Z<p>Kartik Kumar: /* Week 4 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-24T14:04:06Z<p>Kartik Kumar: /* Week 4 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK<br />
<br />
'''June 22nd'''<br />
<br />
> BREAK<br />
<br />
'''June 23rd'''<br />
<br />
> Fixed the entity storage issue and signals<br />
<br />
> Changed the entityDrawItem map in document canvas with key as entity's ID<br />
<br />
> Cleaned the Code till now</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-21T17:25:16Z<p>Kartik Kumar: /* Week 4 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching<br />
<br />
'''June 21st'''<br />
<br />
> Ran Caching with basic entities lines , circle , arc etc and with dimensions ( leaving text) all working OK<br />
<br />
> Fixed caching issues , all caching working OK<br />
<br />
> Found some signal issues in PAPER viewer while MODEL viewer is all OK</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-20T16:25:49Z<p>Kartik Kumar: /* Week 4 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes<br />
<br />
'''June 20th'''<br />
<br />
> Almost completed with the gl_entity, gl_pack, cacher , cacherpainter classes<br />
<br />
> Now able to run the draw() codes through caching painter<br />
<br />
> Able to cache the gl_packs and implemented the required query functions regarding caching</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-19T08:45:15Z<p>Kartik Kumar: /* Week 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 4''' ==<br />
'''June 17th'''<br />
<br />
> Discussed the different ways of caching with mentors and decided to implement a particular<br />
<br />
> Started with making a separate class named caching painter which will only cache things without any rendering<br />
<br />
'''June 18th'''<br />
<br />
> Started making other classes like Cacher, gl_pack etc which will work in caching<br />
<br />
> Added few more functions in main painter and documentcanvas for making caching more abstracted<br />
<br />
'''June 19th'''<br />
<br />
> Continuing working on these classes</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-19T08:38:58Z<p>Kartik Kumar: /* Week 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-19T08:38:14Z<p>Kartik Kumar: /* Week 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )<br />
<br />
'''June 15th'''<br />
<br />
> Reviewed all draw() codes and planned the structure of caching , things which are constant and which are variable<br />
<br />
> Updated the gl_entity class to hold attributes need in caching<br />
<br />
'''June 16th'''<br />
<br />
> BREAK</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-14T16:30:38Z<p>Kartik Kumar: /* Week 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity<br />
<br />
'''June 14th'''<br />
<br />
> Found some issue with the draw code of paperbackground<br />
<br />
> Fixed the missing stroke() call , now the paper background is rendering correct ( Temporary as a white rectangle )</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-13T21:26:57Z<p>Kartik Kumar: /* Week 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter<br />
<br />
'''June 11th'''<br />
<br />
> Understanding the kernel and storage part of librecad<br />
<br />
> Found the Signal and slot connections of events between the document and documentcanvas <br />
<br />
'''June 12th'''<br />
<br />
> Found error with the remove entity signal emitting code ( of paperviewer )<br />
<br />
> Fixed some function in storage manager to solve the issue , now entities are rendering OK in paperviewer tab also<br />
<br />
'''June 13th'''<br />
<br />
> Found the duplication of entities storing in entity container of document canvas<br />
<br />
> Tried to make a new cached container with key = id of entity</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:30:00Z<p>Kartik Kumar: /* WEEK 3 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''Week 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:29:43Z<p>Kartik Kumar: /* WEEK 2 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''Week 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''WEEK 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:29:24Z<p>Kartik Kumar: /* WEEK 1 */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''Week 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''WEEK 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''WEEK 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:28:05Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''WEEK 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''WEEK 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== '''WEEK 3''' ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:27:33Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''WEEK 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== '''WEEK 2'''==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:26:55Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
== '''WEEK 1''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:25:37Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== ==<br />
'''June 10th'''<br />
<br />
> Found possible issue with multiple matrix transformations, Need to remember the transformations after caching<br />
<br />
> Redesigned the painter matrix manipulations with single CTM and MVP<br />
<br />
> Shifting the model matrix to caching painter</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:22:36Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK<br />
<br />
== ==</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-11T10:22:02Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class<br />
<br />
'''June 8th'''<br />
<br />
> Found some possible errors which can clash with opengl painter<br />
<br />
> Fix those draw codes to work correctly with painter<br />
<br />
'''June 9th'''<br />
<br />
> BREAK</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-07T10:47:25Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
> Now the basic operations of OpenGL painter are functioning correct ( without caching mechanism )<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-07T10:46:04Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine<br />
<br />
'''June 6th'''<br />
<br />
> Implemented the Rotation Matrix manipulation methods<br />
<br />
> The Text Quads are now getting rendered with correct angle, working OK<br />
<br />
'''June 7th'''<br />
<br />
> Starting with Caching mechanism<br />
<br />
> Reviewing all draw() codes once again to design and finalize the gl_entity class</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-05T08:29:49Z<p>Kartik Kumar: /* */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations<br />
<br />
> Need of context saving and restoring which stores the transformation matrices, linewidth, color etc<br />
<br />
'''June 4th'''<br />
<br />
> Created a structure which can save the context attributes like glm::mat , linewidth , color<br />
<br />
> Created Stack Implementation for the saving and restoring of context<br />
<br />
> Implemented the painters save() and restore() methods, now isolated transformations working correctly<br />
<br />
'''June 5th'''<br />
<br />
> Joined the lcvdimensions with the render calls, dimensions all working fine now<br />
<br />
> Temporary Implemented the rendering of empty quads in place of text , just to check the saving and restoring of context. Working fine</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-06-03T06:03:44Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing<br />
<br />
'''June 1st'''<br />
<br />
> Separated the translate,rotate,scale matrix from the model,view,projection matrix in Renderer <br />
<br />
> Fixed the clipping of grid while zooming out also speed up the cursor at high zoom.<br />
<br />
'''June 2nd'''<br />
<br />
> Implemented the reset_transformation function <br />
<br />
> Now the zoom is perfect working , zooming into the cursor with stability<br />
<br />
> In Cairo all matrix are 3*3 so manually implemented all with 4*4 matrices in OpenGL Renderer Class<br />
== ==<br />
<br />
'''June 3rd'''<br />
<br />
> Found need of Isolated Transformations</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-05-31T19:02:32Z<p>Kartik Kumar: /* Coding Period Phase 1 (May 27th - June 28th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation<br />
<br />
== '''Coding Period Phase 1 (May 27th - June 28th)''' ==<br />
'''May 27th'''<br />
<br />
> I started with reviewing the partially implemented opengl painter and used only one painter instance with each viewer (which was earlier 3 instances for background,foreground and document using cairo)<br />
<br />
> making the painter instance creation more robust starting from UI<br />
<br />
'''May 28th'''<br />
<br />
> Started with testing the drawables rendering with opengl painter , drawables doest require caching<br />
<br />
> Connect the signal(drawevent) and slot(grid's draw() code) , Tested the grid drawing calls with the opengl painter<br />
<br />
TODO: Debug later -- the zooming out of grid misses some lines<br />
<br />
'''May 29th'''<br />
<br />
> Connect the lccursor with drawevent signal , Tested the cursor drawing calls with the opengl painter<br />
<br />
'''May 30th'''<br />
<br />
> Connected the tempentities with the signal, Now the entities (during drawing/editing process) can also be rendered<br />
<br />
> Connected the dragpoints with the signal, Now the entities can be edited using dragpoints<br />
<br />
> Checked the editing options correct working like- translate, rotate, scale , copy etc<br />
<br />
'''May 31st'''<br />
<br />
> Found some errors in cursor during high zoom, debugging the lccursor<br />
<br />
> Trying to get the perfect viewport with error free pan and zoom so that later the new entities can be seen while testing</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-05-26T17:44:58Z<p>Kartik Kumar: /* Community Bonding Period (May 6th - May 27th) */</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Implemented few more functions in opengl painter (analogous to Cairo) which does Matrix/Vector/Coordinate manipulations(manually with GLM)<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns and continuing work to complete the painter implementation</div>Kartik Kumarhttps://wiki.librecad.org/index.php?title=GSoC_2019_Dev_LogGSoC 2019 Dev Log2019-05-26T17:39:54Z<p>Kartik Kumar: Community bonding period</p>
<hr />
<div><br />
== '''Community Bonding Period (May 6th - May 27th)''' ==<br />
> During Community Bonding Period i continued doing more research work for the LibreCAD OpenGL rendering project.<br />
<br />
> Linked a partial implemented OpenGL painter with the LibreCAD 3 which uses BufferObjects for rendering<br />
<br />
> Implemented basic facilities like pan, zoom<br />
<br />
> I started with finding the connections of rendering functions of drawables,drawentities etc.<br />
<br />
> Implement and connect the drawables like grid,cursor, origin pointer etc.<br />
<br />
> Found connection of tempentities , drawentities <br />
<br />
> Tried and check ways of Text Rendering with OpenGL painter( basic ttf type / MSDF type )<br />
<br />
> Found place for the caching the saved entities.<br />
<br />
> Deciding the basic complete layout of OpenGL painter and found possible ways of complete implementation : https://github.com/sckorpio/LibreCAD_3<br />
<br />
> I created blog for the development log on LibreCAD blog : https://blog.librecad.org/tag/google-summer-of-code-gsoc-2019/<br />
<br />
''' TODO:'''<br />
<br />
> Finalize and implement basic gl_entity class which could hold all type of possible entities and render them<br />
<br />
> Create a gl_pack class which could hold a number of gl_entities to cache and render complex entities (like dimensions)<br />
<br />
> Decide which text rendering should be used (basic ttf or MSDF or both..)<br />
<br />
> little research work left on gradient rendering and line patterns</div>Kartik Kumar