Jump to content

Krita/GSoC2010: Difference between revisions

From KDE Community Wiki
Pentalis (talk | contribs)
No edit summary
Pentalis (talk | contribs)
Changed plan
Line 36: Line 36:
* <del>Create a heightmap-enabled colorspace.</del> Ugly and hacky at the moment.
* <del>Create a heightmap-enabled colorspace.</del> Ugly and hacky at the moment.
* Bumpmapping algorithm: Allow illumination to work with different color spaces (use simple, hackish, temporary solution).
* Bumpmapping algorithm: Allow illumination to work with different color spaces (use simple, hackish, temporary solution).
* Test point: take a Krita layer with a heightmap-enabled colorspace, save the impasted projection.
<del>* Test point: take a Krita layer with a heightmap-enabled colorspace, save the impasted projection.
* Create or patch a paintop to be able to write to the heightmap ("The fifth channel").
* Create or patch a paintop to be able to write to the heightmap ("The fifth channel").</del>  Heightmap-enabled colorspaces turned out to be something REALLY complex to do, so...
* Integrate the class into Krita runtime through a hidden or visible experimental layer, celebrate with champagne when it works.
* Attach a greyscale paint device to KisImage that works as a height channel.
* Create or patch a paintop to be able to write to this greyscale device.
* Celebrate with champagne when it all works.
* <del>Create a basic GUI to let the user control light sources and impasto behavior.</del>
* <del>Create a basic GUI to let the user control light sources and impasto behavior.</del>
* Device a method to allow all relevant paintops to write to the impasto channel (This point may be extended later).
* Device a method to allow all relevant paintops to write to the impasto channel (This point may be extended later).

Revision as of 13:42, 12 August 2010

Pentalis

TODO to the midterm

  • Fixing the current glitch with duplicated hatching
  • Pressure sensitivity to make lines thicker
  • Adding a mode without sub-pixel precision
  • Making an intuitive GUI to let
  • Pressure sensitivity to make more lines
  • Ability to make crosshatching
  • Enabling pressure sensitivity to create crosshatching

Roadmap:

  • Finish the GUI containing all the widgets for a finished brush. Finished rc1, Evaluating design. Finish the GUI containing all widgets for a final release; crosshatching will have a prototype simplified interface.
  • Clean all the code: 4 space indentation, use self-explaining long names, change class names to the definite ones, eliminate all chalk brush residuals.
  • Link GUI. Only a window left.
  • Implement the functions described by the GUI, from easiest to hardest or from most important to least important.
  • (Most important: Scratch off algorithm not so important, the algorithm would slow down both development and the user's computer by a huge amount, this may not be implemented; stylus setting sensitivity Implemented; Hard: interval based settings this was obsoleted by a discussion in IRC I'm reconsidering this, contrary to what others may think, the need for a DISCRETE list of settings controlled by the GUI is real and not perceived, the tool can only reach its full potential in that way).


Currently doing:

  • Considering how to approach impasto.
  • Finishing the hatching brush. Fixing small remaining bugs.
  • Intoxicating with yoghurt
  • Heading to sleep after a long day of doing interesting things and learning, see today's commit 00:02, 27 June 2010 (PDT)
  • Linking the last bits of GUI 11:39, 21 June 2010 (PDT)
  • Linking the GUI 05:19, 18 June 2010 (PDT)
  • Learning how to link new GUI widgets to the general config widget: the basic curve dialog and the BrushTip dialog. 07:08, 17 June 2010 (PDT)



Roadmap for Impasto:

  • Bumpmapping algorithm: Allow multiple light sources.
  • Test point: take a greyscale Krita layer acting as a heightmap and bumpmap it.
  • Create a heightmap-enabled colorspace. Ugly and hacky at the moment.
  • Bumpmapping algorithm: Allow illumination to work with different color spaces (use simple, hackish, temporary solution).

* Test point: take a Krita layer with a heightmap-enabled colorspace, save the impasted projection.

  • Create or patch a paintop to be able to write to the heightmap ("The fifth channel"). Heightmap-enabled colorspaces turned out to be something REALLY complex to do, so...
  • Attach a greyscale paint device to KisImage that works as a height channel.
  • Create or patch a paintop to be able to write to this greyscale device.
  • Celebrate with champagne when it all works.
  • Create a basic GUI to let the user control light sources and impasto behavior.
  • Device a method to allow all relevant paintops to write to the impasto channel (This point may be extended later).
  • Pretty Gimmick: Find the perfect heightmap to cause circles to look like semispheres and the impasto settings to make them look like droplets of water or a similar good-looking effect. Ask LukasT to make the spray brush able to create such droplets.
  • Bumpmapping algorithm: Speed enhancements.
    • Optimize cross products.
    • Optimize the algorithm itself.
    • Optimize colorspace interaction.


Note: When I made this roadmap, I really had no idea of the difficulties I had to face. Speed was really, really important and nowhere in this list I took that into account. Anyway, speed is a solved matter, so here I go: SPEED