Search Unity

Games SurfaceEdit - open-source surfaces processing software

Discussion in 'Works In Progress - Archive' started by Grenqa, Oct 5, 2018.

  1. Grenqa

    Grenqa

    Joined:
    Jun 6, 2018
    Posts:
    5
    Platform: Windows only
    Source Code: GitHub
    Releases: GitHub Releases

    SurfaceEdit is an open-source software for processing photo scanned PBR surfaces.
    This processing includes:
    1. Selecting the size of the surface in meters.
    2. Setting the scale of the raw surface, immediately after baking, according to the size in the real world and the selected surface size.
    3. Removing artifacts and filling empty spaces with the clone tool, just like in photoshop.
    4. Manual or automatic seams removal.
    5. Color correction and tweaking of textures of each channel. For example, the intensity of a normal map, the blurriness or contrast of a heightmap, and so on.
    All texture processing is done on gpu with shaders so SurfaceEdit is runs very well even on computers with cheap videocards.

    Development started on September 6, 2018. At the moment, the program is in the early alpha version, and most of the functionality has not yet been implemented.

    At the moment I have already released several demos(OLD, ~150 commits since this release. If you want to try the latest version, you need to build it by yourself), you can download them on GitHub.

    Some screenshots (OLD, ~150 commits since this release):



    Last demo video (OLD, ~150 commits since this release):
     
    Last edited: Nov 3, 2018
    Mauri, khos and Mark_01 like this.
  2. Grenqa

    Grenqa

    Joined:
    Jun 6, 2018
    Posts:
    5
    Hi guys, i have some news for you about SurfaceEdit development.

    First of all, I got sick, so I could not work for some time, but at the moment I feel good. However, the release of the first fully working version of the program will be delayed.
    Secondly, I would like to share with you what I have been working on recently:
    1. I implemented what I call the "resource system". Something like a library of textures/alphas/brushes, etc. The resource system has the ability to import resources from files and automatically determine what type of resource it is using the file extension. Resources are saved in the cache on the disk in order to not take up space in the RAM, as well as to be able to load them again at the next time the application starts. Resources are loaded into RAM only when they are used somewhere. If the resource is no longer needed, it will automatically be removed from the RAM.
    2. I have greatly improved and optimized the painting system. I also added the ability to load custom alpha to the brush (from resources or procedurally generated). In addition, I have added the ability to change the rotation angle of the brush, as well as several settings for randomizing the brush.
    3. I continue to work on the GUI. I added a Color Picker, a container for a Texture2D resource, and a few more menus.










    In general, I changed / improved a lot of things, I can’t even enumerate everything. Since the last demo I have added 114 commits to GitHub.

    Well that's all. Thanks for attention!
     
    Last edited: Oct 21, 2018
    Mark_01 likes this.
  3. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    632
    Being sick not fun at all.
     
  4. Grenqa

    Grenqa

    Joined:
    Jun 6, 2018
    Posts:
    5
    So, almost two weeks have passed, and I am here again to share with you the latest news from the development world.
    1. First of all, I recreated almost the entire GUI from scratch. This is, in fact, my first experience in GUI creating, so in the first attempts, there are some dirty hacks and kludges. Now in this regard, everything is much better. I finally added the animation and also fixed a few bugs of standard controls. For beauty, I added gradients, borders and slightly changed the color palette.
    Look at this:

    Cool, right?
    2. I implemented the GUI generation using attributes. In the screenshot above, this system is used. You just need to inherit the class from the interface, add attributes to the properties - and that's it. The system will do the rest for you.
    3. I added blending modes between layers. As in Photoshop or Substance Painter. At the moment there is support for the following modes: Normal, Add, Subtract, AddSubtract, Multiply, Divide, InverseDivide, Min, Max,
    Screen, Overlay, Difference, Exclusion, ColorDodge, ColorBurn, LinearBurn, HardLight, SoftLight, VividLight, LinearLight.
    Examples of some modes (applied only to albedo):


     
    Mark_01 likes this.