[GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellation

Threads related to Google Summer of Code
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

[GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellation

Post by holocronweaver »

Edit: please see the wiki and Bitbucket fork for progress updates

Project Proposal

My project proposal consists of three main areas of development:
1. finish the OpenGL 3+ rendering system
2. create and update sample applications to serve as visual tests for OpenGL 3+ features
3. create and update functional and visual unit tests for the OpenGL 3+ rendering system

1. The completion of the OpenGL 3+ rendering system has a clear path. OGRE developer masterfalcon has compiled a list of extensions from each OpenGL version which remain to be implemented, so it is a matter of coding these features and developing visual tests for them. A great deal of effort will be dedicated to implementing the new shader types (geometry, tessellation, and compute), which will require work to OGRE core, as well as implementing important new features such as atomic counters, transform feedback, and programmable multisampling. The schedule below provides an overview of the pace I plan to proceed through each version of OpenGL as well as the associated features I will be implementing.

2. To both show off the capabilities of OGRE and aid in visually testing features in OpenGL 3+, I intend to create four new sample applications and update several existing ones. These samples will particularly focus on using OpenGL 3+ features to implement advanced graphics techniques. The samples I will work on are:
  • update the Endless World and Volume Terrain samples: fast dynamic level of detail (LOD) using tessellation shaders to allow massive landscapes via the OGRE Terrain and Volume components [1]
  • update Ocean and Water samples: realistic and efficient rain, lightning, and other weather effects (using geometry shaders) [2]
  • update bump mapping sample: real-time procedural displacement mapping of character and terrain meshes to create detailed features such as scales, spikes, and cobblestone using tessellation shaders [3][4]
  • new sample: single pass order-independent transparency (OIT) using image load/store and atomic counters (also useful for deferred lighting) [5]
  • new sample: rendering individual strands of hair on character models (using tessellation and compute shaders) [6]
  • new sample: fast Bokeh depth of field using atomic counters [7]
  • new sample: mesh smoothing and anti-aliasing using a variety of contemporary techniques
    • curved PN-triangles and phong tessellation for improving visual quality by smoothing corners of meshes using tessellation shaders [8][9]
    • compact, smooth representation of highly detailed meshes by approximated Catmull-Clark subdivision surfaces using tessellation and geometry shaders [10]
    • adaptive multisample anti-aliasing (MSAA) to efficiently reduce aliasing using programmable multisampling (especially useful for deferred lighting)
One of the major goals of the sample applications is to provide well written, thoroughly commented example code utilizing advanced graphics techniques which can be studied and reused by OGRE users. Another goal is to demonstrate to the computer graphics community that OGRE is a cutting edge rendering engine capable of efficiently handling advanced graphics techniques. To this end I will create promotional videos for OGRE using the newly created samples and distribute them to YouTube and other social media outlets after GSoC is over. Of course, these applications will also provide a thorough practical visual test of the newly implemented OpenGL 3+ rendering system so that it can be released at production readiness.

In addition to creating and extending the above sample applications, all existing sample applications will be updated to work with the OpenGL 3+ rendering system. This will mostly consist of creating OpenGL 3+ specific GLSL shaders, though some modification of the sample application scenes may be necessary in some cases. Samples which are currently known to fail and will be repaired are:
  • BSP
  • Compositor
  • Deferred Shading
  • Dual Quaternion Skinning
  • Endless World
  • Facial Animation
  • Geometry Shader Particle System
  • Grass
  • Isosurface
  • SSAO Techniques
  • Shader System samples
  • Shadows
  • Terrain
  • Volume CSG and RTSS triplanar texturing
  • Volume Terrain
  • Water
3. To test the OpenGL 3+ rendering system, functional and visual unit tests will be created and existing visual unit tests will be updated.

It is worth noting that both the visual tests and sample applications could be reused to test similar DirectX 11 features. This could provide a standardized means of visually testing both new rendering systems, DirectX 11 and OpenGL 3+. To this end I will attempt to coordinate my efforts on the visual tests and sample applications with the OGRE developers working on the DirectX 11 rendering system.

Schedule

Bonding period (May 27 - June 16)
Get better acquainted with Ogre core. Discuss details of implementation with mentor and community. Further research literature to identify best methods for implementing techniques used in sample applications. Coordinate efforts on visual tests and sample applications with OGRE developers working on the DirectX 11 rendering system.

First coding cycle (June 17 - July 29)
Implement OpenGL 3.x, 4.0, 4.1, and 4.2.

June 17 - June 23: Geometry and tessellation shaders fully implemented, including all core work.
  • Geometry shaders (GL_ARB_geometry_shader4)
  • New tessellation stages and two new corresponding shader types, tessellation control and tessellation evaluation shaders, operating on patches (fixed-sized collections of vertices) (GL_ARB_tessellation_shader)
June 24 - July 7: Computer shaders, atomic counters, priority features.
  • New compute shader (ARB_compute_shader)
  • Shader atomic counters (ARB_shader_atomic_counters)
  • Provide the ability for OpenGL shaders to perform random access reads, writes, and atomic memory operations on variables stored in a buffer object (ARB_shader_storage_buffer_object)
  • Transform feedback (GL_EXT_transform_feedback)
  • Additional transform feedback functionality (GL_ARB_transform_feedback2, GL_ARB_transform_feedback3)
  • Instanced transformed feedback drawing (ARB_transform_feedback_instanced)
  • Texture buffer objects (GL_ARB_texture_buffer_object)
  • Fence sync objects (GL_ARB_sync) - needs performance testing
July 8 - July 14: Finish priority features. OpenGL 3.0, 3.1 and 3.2 features completed.
  • Support for “indirect subroutine calls”, where a single shader can include many subroutines and dynamically select through the API which subroutine is called from each call site (GL_ARB_shader_subroutine)
  • Multisampled textures and texture samplers for specific sample locations (GL_ARB_texture_multisample)
  • OpenGL Shading Language built-in functions allowing loads from and stores to texture images from any shader stage, and application control over the ordering of image load/store operations relative to other OpenGL pipeline operations accessing the same memory (ARB_shader_image_load_store)
  • Support for three-component buffer texture formats RGB32F, RGB32I, and RGB32UI (GL_ARB_texture_buffer_object_rgb32)
  • Sampler objects, which separate sampler state from texture image data (GL_ARB_sampler_objects)
  • Two new vertex in data formats, signed 2.10.10.10 and unsigned 2.10.10.10 (GL_ARB_vertex_type_2_10_10_10_rev)
  • Non-normalized integer color internal formats for textures and renderbuffers (GL_EXT_texture_integer)
  • Per-color-attachment blend enables and colorwrite masks (GL_EXT_draw_buffers2)
  • ClearColor, TexParameter, and GetTexParameter methods for signed and unsigned integer buffers/arrays
  • Floating-point color and depth internal formats for textures and renderbuffers (GL_NV_depth_buffer_float)
  • Primitive restart (GL_NV_primitive_restart)
July 15 - July 22: OpenGL 3.3 and OpenGL 4.0 features completed.
  • BGRA vertex component ordering (GL_ARB_vertex_array_bgra)
  • New blending functions whereby a fragment shader may output two colors, one of which is treated as the source color, and the other used as a blending factor for either source or destination colors (GL_ARB_blend_func_extended)
  • A mechanism to swizzle the components of a texture before they are returned to the shader (GL_ARB_texture_swizzle)
  • A query object-based mechanism to determine the amount of time it takes to fully complete a set of GL commands without stalling the rendering pipeline (GL_ARB_timer_query)
  • Ability to set individual blend equations and blend functions for each color output (GL_ARB_draw_buffers_blend)
  • Mechanism for supplying the arguments to a DrawArraysInstanced or DrawElementsInstancedBaseVertex drawing command from buffer object memory (GL_ARB_draw_indirect)
  • Many new features in OpenGL Shading Language 4.00 and related APIs to support capabilities of current generation GPUs (GL_ARB_gpu_shader5)
  • Ability to explicitly request that an implementation use a minimum number of unique set of fragment computation inputs when multisampling a pixel (GL_ARB_sample_shading)
  • Cube map array textures, 2-dimensional array textures that may contain many cube map layers. Each cube map layer is a unique cube map image set (GL_ARB_texture_cube_map_array)
July 22 - July 29: OpenGL 4.1 and 4.2 features completed.
  • Commands to retrieve and set the binary representation of a program object (GL_ARB_get_program_binary)
  • Expose multiple viewports for use with geometry shader outputs and multiple framebuffer attachments, and floating-point viewport bounds (GL_ARB_viewport_array)
  • Allow pixel storage parameters to affect packing and unpacking of compressed textures (ARB_compressed_texture_pixel_storage)
  • Immutable texture images (ARB_texture_storage)
  • Allow the offset within buffer objects used for instanced rendering to be specified (ARB_base_instance)
  • Queries for sample counts available for a given internal format and usage (ARB_internalformat_query)
  • More restrictive alignment constraints for mapped buffers (ARB_map_buffer_alignment)
Midterm evaluations (July 29 - August 2)
By now all OpenGL 3.x, 4.0, 4.1 and 4.2 extensions should be implemented and accompanying sample tests should successfully demonstrate their use. This portion of the work will be pushed to OGRE main so that OGRE users can gain immediate benefit.
A slack week will be given to complete any unfinished work from the first coding cycle. This week will also feature debugging and visual testing and the first sample applications.
  • visual tests for all implemented OpenGL 3.x, 4.0, 4.1, and 4.2 features
  • update Ocean and Water samples: realistic and efficient rain, lightning, and other weather effects (using geometry shaders)
Second coding cycle (July 29 - September 15)
To begin, OpenGL 4.3 will be implemented, completing the major features of the OpenGL 3+ render system. A grand majority of the time will be dedicated to visual testing and advanced graphics samples to ensure the newly completed render system is bug free and ready for production use. In this coding cycle additional time will be dedicated to visual testing and debugging to ensure that the quality of the sample applications is high, ample documentation and comments are provided, and nasty show stopper bugs are squashed.

July 29 - August 4: OpenGL 4.3 features begun.
  • Multi-dimensional arrays (ARB_arrays_of_arrays)
  • Initialize the content of a buffer to a known value (ARB_clear_buffer_object)
  • Enable efficient image data transfer between image objects without the need to bind the objects or otherwise configure the rendering pipeline (ARB_copy_image)
  • Pre-assign uniform locations to uniform variables in the default uniform block, including subroutine uniforms (ARB_explicit_uniform_location)
  • Make gl_Layer and gl_ViewportIndex built-in variables available to the fragment shader (ARB_fragment_layer_viewport )
  • Allow use of framebuffers with no attachments (ARB_framebuffer_no_attachments)
  • Allow the remainder of the texture-style targets to be specified along with any possible internal format (ARB_internalformat_query2)
  • Tell the GL that the previous contents of a subregion of an image or a range of a buffer may be invalidated (ARB_invalidate_subdata)
  • Invoke multiple draws from a single procedure call (ARB_multi_draw_indirect)
  • Provide a single unified set of query commands that can be used by applications to determine properties of various interfaces and resources used by program objects to communicate with application code, fixed-function OpenGL pipeline stages, and other programs (ARB_program_interface_query)
  • Specify the behavior of out-of-bounds buffer and array accesses (ARB_robust_buffer_access_behavior)
  • Allow shaders to query the size of an image (ARB_shader_image_size)
  • Allow texturing of the stencil component of a packed depth stencil texture (ARB_stencil_texturing)
  • Allow a sub-range of the buffer's data store to be attached to a texture (ARB_texture_buffer_range)
  • New set of texture functions that expose the number of accessible mipmap levels in the texture associated with a GLSL sampler variable (ARB_texture_query_levels)
  • Immutable storage for multisampled textures (ARB_texture_storage_multisample)
  • Allow a texture's data store to be "viewed" in multiple ways, either reinterpreting the data format/type as a different format/type with the same element size, or by clamping the mipmap level range or array slice range (ARB_texture_view)
  • Allow the application to change the mapping between attributes and bindings (ARB_vertex_attrib_binding)
August 5 - August 11: OpenGL 4.3 visual tests, OpenGL 3+ samples begun.
  • OpenGL 4.3 visual tests and debugging
  • update the Endless World and Volume Terrain samples: fast dynamic level of detail (LOD) using tessellation shaders to allow massive landscapes via the OGRE Terrain and Volume components
August 12 - August 18: OpenGL 3+ samples continued.
  • update bump mapping sample: real-time procedural displacement mapping of character and terrain meshes to create detailed features such as scales, spikes, and cobblestone using tessellation shaders
  • new sample: single pass order-independent transparency (OIT) using image load/store and atomic counters (also useful for deferred lighting)
August 19 - August 25: OpenGL 3+ samples continued.
  • new sample: rendering individual strands of hair on character models (using tessellation and compute shaders)
  • new sample: fast Bokeh depth of field using atomic counters
August 26 - September 1: OpenGL 3+ samples completed.
  • new sample: mesh smoothing and anti-aliasing using a variety of contemporary techniques
September 2 - September 8: Fixing samples and unit tests for OpenGL 3+ begun.
  • BSP
  • Compositor
  • Deferred Shading
  • Dual Quaternion Skinning
  • Endless World
  • Facial Animation
  • Geometry Shader Particle System
  • Grass
September 9 - September 15: Fixing samples and unit tests for OpenGL 3+ completed.
  • Isosurface
  • SSAO Techniques
  • Shader System samples
  • Shadows
  • Terrain
  • Volume CSG and RTSS triplanar texturing
  • Volume Terrain
  • Water
  • Improved OpenGL ES 2.0 compatibility by adding features previously found only in OpenGL ES 2.0 and not OpenGL 4.0 (GL_ARB_ES2_compatibility)
  • Add support for features of OpenGL ES 3.0 that are missing from OpenGL 3.x (ARB_ES3_compatibility)

Suggested pencils down (September 16) and firm pencils down (September 23)
By now all major OpenGL 3.x and 4.x features have been implemented and debugged, using visual tests as a benchmark for success. These changes will be pushed to OGRE main (perhaps version 1.9 or 2.0?). Sample applications will be used to create videos on YouTube and social media outlets to promote OGRE.


My Background

I am a Ph.D. student in computational molecular physics at Rutgers University. My bachelor degrees are in computer science, physics, and biomathematics. I have been working on computer graphics and game development as a hobby on and off since 1999, but I became serious about them as a possible career choice in 2011. Since then I been studying modern shader techniques to help develop my first indie retail game. In preparation, I have been developing a variety of disposable tech demos to test out my ideas. I have been using OpenGL for practical applications since 2007 via the fixed pipeline and 2011 via shaders. I began learning OpenGL 3+ shader techniques in early 2012 and have become fairly well accustomed to their use in my tech demos. Prior to using Ogre I used my own (tiny) custom graphics engine for Windows which utilized a fixed function pipeline in OpenGL.

Why I Am The Person For This Project

My own personal still-in-development commercial project uses Ogre and OpenGL 4, so I have a vested financial interest in seeing this through to completion. My eight years of C++ experience and six years of OpenGL experience mean that I am more than capable of handling anything in Ogre core. On top of that, I live to code and love what I do. Game development and computer graphics are more than hobbies to me - they are a way of life. Possibly even a way to make a living.

While I have been using Ogre since late 2011 to make multi-platform tech demos, my first contribution to the project is implementing paging for the voxel terrain Volume component using the Paging component - a project I am a week away from completing. My prior exposure to the core of Ogre has been through investigating bugs while developing my own Ogre-based projects. This project will give me a chance to delve into the OGRE core so that I can continue to make contributions to OGRE long after this year's GSoC is over.

Why OGRE?

OGRE is my rendering system of choice because it is open source, multi-platform, has a clear and well thought out object-oriented design, and has a fantastic community. My confidence in OGRE is so great that I am using it in my first commercial indie game. Gaining more exposure to the internals of the OGRE rendering system by directly working on it myself will provide invaluable technical experience to me as a budding game developer while also giving me a chance to give back to the community that has already given me so much by making OGRE.

[1] http://codeflow.org/entries/2010/nov/07 ... sellation/
[2] http://developer.download.nvidia.com/SD ... mples.html
[3] http://http.developer.nvidia.com/GPUGem ... ter07.html
[4] https://www.sciencedirect.com/science/a ... 8512002394
[5] http://gamerendering.blogspot.com/2012/04/final.html
[6] http://http.developer.nvidia.com/GPUGem ... ter23.html
[7] https://mynameismjp.wordpress.com/2011/02/28/bokeh/
[8] https://www.cise.ufl.edu/research/SurfL ... /00ati.pdf
[9] http://perso.telecom-paristech.fr/~boub ... lation.pdf
[10] https://www.cise.ufl.edu/research/SurfL ... 08poly.pdf
Last edited by holocronweaver on Sat Jun 01, 2013 8:07 pm, edited 10 times in total.
drwbns
Orc Shaman
Posts: 788
Joined: Mon Jan 18, 2010 6:06 pm
Location: Costa Mesa, California
x 24

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by drwbns »

If you can finish all this, it would be amazing. Hats off for even attempting this much. Im looking forward to your voxel paging
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

drwbns wrote:If you can finish all this, it would be amazing. Hats off for even attempting this much. Im looking forward to your voxel paging
Thanks! I am fully expecting to work ten to eleven hour days to get this done, but I think what I learn from the experience will be worth it.

As for the voxel paging, I am working on getting it done ASAP because I am excited about it as well. :)
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

I am planning to submit my GSoC application Saturday evening EST, so any suggestions or constructive criticisms are welcome.
TheSHEEEP
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 972
Joined: Mon Jun 02, 2008 6:52 pm
Location: Berlin
x 65

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by TheSHEEEP »

Well, I can only say that I'd love to see GL3+ finished ASAP, so this is for me, personally, a very important topic.
This and the DX11 system will replace DX9 and "old" GL pretty soon, IMO (not only in Ogre, I mean).

What I'd like to see are more samples. Geometry & Tesselation is nice, but I think GL3+ offers more noew features that can be very helpful and could be shown. Of course, implementing the features is more important than doing samples, and your plan already seems tight, so this may be wishful thinking ;)
My site! - Have a look :)
Also on Twitter - extra fluffy
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

TheSHEEEP wrote:What I'd like to see are more samples. Geometry & Tesselation is nice, but I think GL3+ offers more noew features that can be very helpful and could be shown.
Thanks for the suggestion. I briefly mention this problem in my proposal:
holocronweaver wrote:To test features besides tessellation and geometry shaders, additional visual tests will be created as needed.
I probably should flesh out at least a couple samples that use features besides geometry and tessellation. I will do that this evening and update my proposal accordingly.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

I have added three new samples which can serve as visual tests for compute shaders, atomic counters, and a small assortment of other OpenGL 3+ features.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

Project proposal submitted! I have to admit clicking the 'Submit' button was exhilarating. :D

Now to go finish up paging for the Volume component.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 99

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by Wolfmanfx »

I made comment on your proposal - its to broad plz go into more details

June 17 - June 23: OpenGL 3.0 features completed.
June 24 - July 7: OpenGL 3.1 and 3.2 features completed.
July 8 - July 14: OpenGL 3.3 features completed.
....

That's not enough for me to be considered so please take your time and add more details there. What features are missing and what features you gonna add in concrete.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

Wolfmanfx wrote:I made comment on your proposal - its to broad plz go into more details

June 17 - June 23: OpenGL 3.0 features completed.
June 24 - July 7: OpenGL 3.1 and 3.2 features completed.
July 8 - July 14: OpenGL 3.3 features completed.
....

That's not enough for me to be considered so please take your time and add more details there. What features are missing and what features you gonna add in concrete.
Good point - I really should have fleshed this out better. I have updated the proposal here and on the GSoC website.

After filling in these details I realized I was being a little overly cautious in my scheduling, so I sped up the OpenGL 3+ implementation and provided more time for visual testing and samples. I also expanded my ambition a bit with the OpenGL 3+ and OpenGL ES unification by introducing the OpenGL ES 3 render system. Since OpenGL ES 3 is a subset of OpenGL 4.3, creating the OpenGL ES 3 render system fairly straightforward to implement after unification is complet. Of course I may not have hardware or an emulator to test ES 3 with since no commercial ES 3 products are yet on the market, but that may have changed by the end of the summer. So OpenGL ES 3 should be doable, but testing it is a 'maybe'.
User avatar
masterfalcon
OGRE Team Member
OGRE Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by masterfalcon »

Don't worry about ES 3. I've already started it using emulators and I'll pick it up again once some commercial products start hitting the market.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 99

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by Wolfmanfx »

I also would whipe all ES releated stuff and focus only in the GL3+ RS. Also reshuffel the schedule so that the new shader stages comes first the are far more important for the core.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

masterfalcon wrote:Don't worry about ES 3. I've already started it using emulators and I'll pick it up again once some commercial products start hitting the market.
You are like a genie. :) Have you posted about your progress somewhere? I vaguely remember reading posts you wrote around Fall talking about implementing it once an emulator is available.
Wolfmanfx wrote:I also would whipe all ES releated stuff and focus only in the GL3+ RS. Also reshuffel the schedule so that the new shader stages comes first the are far more important for the core.
I have removed all mention of OpenGL ES from my proposal. Before I move the new shader stages to the top of the schedule, I have a question. Should I allocate whole weeks dedicated to implementing the new shader stages? If so, do you have any suggestions for how long I should spend on each stage (geometry, tessellation, compute - not technically a stage, but still requires core work)? It is difficult for me to time estimate since I am not sure about the magnitude of changes needed in Ogre core.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

I have updated my proposal.
  • New shaders and priority features have been moved to the top of the schedule.
  • I made a sketch of the specific samples I will create or extend.
  • I have also explicitly stated that I will update all existing samples to work with OpenGL 3+ and compiled a list of those known to be non-functional.
The only area I did not have time for was listing the unit tests I will develop. Tomorrow I will do my best to compile such a list, but since it will be time consuming may take until Saturday morning (EST).
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013] OpenGL 3+; Geometry & Tessellation Samples

Post by holocronweaver »

While I am compiling a list of new and updated unit tests, are there any procedural or visual unit tests anyone has burning desire to see made manifest? :)

EDIT:
Only the first visual unit test passed (out of 101) on my Radeon HD 6950 using OpenGL 3+. :( On the upside, procedural unit tests all passed from what I see. Looks like I have some work to do.

The following is a list of new visual unit tests I plan to implement:
  • tessellation shader
  • computer shader
  • atomic counters
  • transform feedback
  • multi-dimensional arrays
  • large terrain
  • large volume
  • shader subroutines
  • MSAA (adaptive and plain)
  • FSAA
  • image load/store
  • Bokeh depth of field
  • order-independent transparency
  • displacement mapping
  • PN-triangles
  • phong tessellation
  • Catmull-Clark subdivision surfaces
As I said before, if there is a particular feature you depend on working in Ogre, please let me know and I will try to create a visual test for it.
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 136

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by spacegaier »

Congratulations! This proposal has been selected as one of our this year's GSoC projects!

Best of luck and happy coding :)!


Mentor: David Rogers <masterfalcon>
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
PhilipLB
Google Summer of Code Student
Google Summer of Code Student
Posts: 550
Joined: Thu Jun 04, 2009 5:07 pm
Location: Berlin
x 108

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by PhilipLB »

Yay, congratz. :)
Google Summer of Code 2012 Student
Topic: "Volume Rendering with LOD aimed at terrain"
Project links: Project thread, WIKI page, Code fork for the project
Mentor: Mattan Furst


Volume GFX, accepting donations.
TheSHEEEP
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 972
Joined: Mon Jun 02, 2008 6:52 pm
Location: Berlin
x 65

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by TheSHEEEP »

Totally deserved :)
My site! - Have a look :)
Also on Twitter - extra fluffy
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by holocronweaver »

Thanks all! This is going to be the best summer ever. :D

Now to begin planning with a series of questions.

What branch should I work out of, 1.9 or 2.0? I would like to move the GL3+ rendering system to 2.0 by the end of the summer. Perhaps Matias, Robert, and I, along with our mentors, should begin discussing how to best coordinate our efforts in that direction.

Are the coding guidelines on SourceForge still current?

Any suggestions or advice? I am fairly new to contributing to Ogre so if there is anything you wish you had known when you started, I would love to hear it. :)
User avatar
masterfalcon
OGRE Team Member
OGRE Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by masterfalcon »

I would work out of the 2.0 branch. It is now in sync with 1.9 and your work will hopefully end up there anyways.

The guidelines are still current so familiarize yourself with them. Also, if you could add the outline and timeline to the wiki page(http://www.ogre3d.org/tikiwiki/tiki-ind ... evelopment) that would be excellent.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by holocronweaver »

I have made a fork on Bitbucket and ported the proposal to a wiki page, both of which have been linked at the top of this thread. I believe I have fulfilled the GSoC tax and identification requirements, and I have e-mailed the contribution agreement.

So everything in order here, move along? :)
User avatar
masterfalcon
OGRE Team Member
OGRE Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by masterfalcon »

Yup yup. And since we're in the bonding/research period if you have any questions for me or about Ogre in general just ask.
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by holocronweaver »

masterfalcon wrote:Yup yup. And since we're in the bonding/research period if you have any questions for me or about Ogre in general just ask.
I have a few questions that hopefully will make things go smoother:
  • What is the status of the new shaders (tessellation, geometry, and compute)? Do any of these shaders have a functioning example? From what I can tell only the tessellation shader has been used in Samples, but no vertices are visible. I am currently looking into this.
  • What is the best mercurial workflow? I want to avoid any messy VCS fiascos if possible. Is the Ogre developers guide still best practice, with rebasing upstream pulls to keep a single commit timeline?
  • What is the best means of debugging GLSL shaders and OpenGL render system code across platforms? I typically rely on a mix of valgrind, GNU debugger and print statements for debugging C++, but I have never found a good multi-platform solution for debugging GLSL shaders. I am considering trying AMD CodeXL. I primarily develop on Linux using an AMD card, but am willing to try other systems if it will make debugging easier.
  • Is there a way to launch an Ogre sample via the command line without having to use the SampleBrowser GUI? It would also be helpful if I could quickly reload shaders via hotkey. Both would be very helpful for rapid testing. I saw mention of a StartupSample parameter in samples.cfg, but setting StartupSample = Sample_Tesselation seems to have no effect.
BTW, I want to give a little hooray for Apple deciding to support OpenGL 4 on Mac OS X 10.9. :)
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 136

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by spacegaier »

holocronweaver wrote:Setting StartupSample = Sample_Tesselation seems to have no effect
Try it without the spaces and might just work ;) .
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
User avatar
holocronweaver
Google Summer of Code Student
Google Summer of Code Student
Posts: 273
Joined: Mon Oct 29, 2012 8:52 pm
Location: Princeton, NJ
x 47

Re: [GSoC 2013 - accepted] OpenGL 3+; Geometry & Tessellatio

Post by holocronweaver »

spacegaier wrote:
holocronweaver wrote:Setting StartupSample = Sample_Tesselation seems to have no effect
Try it without the spaces and might just work ;) .
I typed it into the file without spaces, but I needed to remove the 'Sample_' bit, so I figured that much out. :)
Now to find a way to reload shaders in the SampleBrowser via hotkey, without having to reload lots of materials.