Surforge 1.4.7 - 3D rendered PBR texturing in Unity

Asset Store Page | Videos | Features | User Guide

Surforge 1.4.7
Added mesh scatter along curve for Poly Lasso tool, with handy options to control step, rotation, align and variations.
added: 6 stitches Poly Lasso assets.
added: 3 chain Poly Lasso assets.

Surforge is an editor extension that enables you to easily make quality 3d rendered PBR textures from scratch directly in Unity, with an extremely productive and intuitive workflow. The exported maps are fully compatible with Unity Standard Shader, looking exactly the same as while you working on them.

It's a modeling toolset, kitbash library, map render, and material composer. All in one, everything you need to create great textures.

- Import Surforge into a clean new project.
- Press “Go Ahead” button to update scripts for your Unity version.
- If something went wrong, you may need to press "Window - Layouts - Revert Factory Settings". Although this should not be necessary in this version.

Thank you for interest in Surforge!
If you have issues, please mail me before leaving a negative review and I'll be happy to help you out.
Good luck in creating magnificent works. Faster, easier, more effective than ever before.


Really Really impressive! Congrats.
Will buy this ASAP!

1 Like

This looks great for inorganic models. Could it also be use for organic models, characters, monsters etc. Painting directly on the model to apply the textures with pressure sensitive settings would be a great addition to this tool.

1 Like

Thank you very much for your comments.

You're right, Surforge is designed primarily for effective texturing of inorganic models, such as equipment and level elements.

As you know, character design is a complex task, with individual approach techniques like sculpting, high-poly modeling with retopology and hand painting.
These techniques are time consuming and require professional skills.

Surfoge is based on kitbash approach - fast and simple using of prefabricated elements and patterns.
For the common tasks, it could be very effective. When you need to create a large amount of simple things, Surforge saves you a lot of time.
It's also designed to be easy to use - it is not necessarily be a professional in texturing and 3d to achieve quality results after little practice.
It is particularly beneficial for indie projects, where people often share multiple tasks.

Painting directly on the model is planned in future versions.


Fantastic asset. This is another of those, how the hell did they do that in unity, assets.

As for inorganic materials, I think your right. But don't limit your thinking necessarily to sci-fi ships, corridors and containers. I could imagine this could be hugely useful for clothing, shields, rings, armor, etc (your crown design video says to me that you get this). Fast retexturing of an outfit for a character would be incredibly useful to a great deal of people I imagine.

Kitbash is low-hanging fruit for this type of editing but having a huge library of clothing patterns, fantasy decals, component bumpmap outlines, etc, would make this a product of a lot of developers dreams. More stuff like your celtic knots over sci-fi knobs and decals and I really think you could impress a lot of people. Not that we couldn't add this to the library ourselves I would imagine.


Great words @Enoch

I am really wanting to use this asset with this one....

1 Like

Nice tools, simply, fast and powerfull.
I miss add your own detail models, decals, the best free substance smart materials and visual show. In the future may want to consider a simple painting the object 3d.

I can create additional graphics, Form as 3D textures and masks as a free add-ons to increase the potential tools.

You could add your own detail models, labels and other assets.

Surforge is based on Unity prefabs, and you could create your own if needed, import models, setup custom Poly Lasso profiles. Its described in the user guide (only in general terms at this moment).

1 Like

This is a game changer! great work, any chance I can export the color ID map? I already have quixel suite, and it would be nice to have that option, I've spent a lot of time creating a custom material library, and in the video it looks like that is being created. Just curious.


You can export Color ID map, but this feature still work in progress, added it just before 1.0 release.
Not yet tested with Quixel for possible antialiasing issues on mask borders, no settings for colors yet.
There is also option for export separate black and white masks for each id.

1 Like

Great work still playing with this.

First question of many I imagine.

I want to import my own material but there doesn't seem to be a way to import anything but an albedo. The documentation goes on to mention specular and glossiness extraction but doesn't go into specifics. There doesn't seem to be gloss or specular data buried in the alpha so I am little confused as to how your extracting this data. Straight from albedo based on luminance or something? Looks like you have sliders for Detail Intensity, Contrast and shift, allowing us to tweak toward something good looking I guess, but I probably would have prefered some way to specify a map.

Also does the Material tools panel pick up new materials as they are added to the proper directory, or is the some other place we need to assign them?

Sorry for the wall of text, trying to answer in detail.

Feature extraction

Surforge uses albedo for specular and glossiness extraction. Along with customizable noises, worn edges, two paint masks, two dirt layers, two separate emission masks, global material adjustments, and other settings it represents a powerful and flexible material system.

I know that its uncommon and may be somewhat confusing, comparing to just drag and drop separate bitmaps for albedo and specular/glossiness, or albedo with separate map on alpha. There are several reasons for that.
The main reason is Surforge material is actually a shader. This has its pros and cons, and the main advantage is true real-time tweaking.

But as you know, maximum number of texture samplers is 16 in Shader Model 3. Each texture sampler is 4 grayscale channels.
It is not so much, and all used for features like worn edges, noises, emission, paint, dirt tweaking and so on. Although Surforge use every channel of every sampler optimized/packed/reused as much as possible, no extra space left.
All that is connected together in shader, for example worn edges interact with paint layer, imitating grind through it. So it cannot be implemented as layered separate shaders, with separate extra samplers. (Material Set in Surforge is layered set of such shaders + some shared things).
Also it adds flexibility - with features extraction, you could use less bitmaps, reuse same bitmaps with different settings to get different unique materials.

About features extraction itself, it works like in programs such as Crazy Bump, that turn your single bitmap into a set of textures, or manual features extraction in Photoshop.
Its based on picking out the desired range of texture, tweaking it with contrast and other math like pow, outside (0,1) range and then picking desired range and clamping it.
Similar like if you use Levels in Photoshop and for manual turning albedo into specular/glossiness maps, emphasizing the details of desired range.
Also, as with Photoshop approach (or tweaking different frequency sliders in Crazy Bump) you have to find desired settings for your custom material manually (fortunately, Surforge updates all that in realtime).

Material presets

You could add custom materials to the material list with saving it with arrow button.
Unfortunately, now there is no comfort way in 1.0 version to add it to the list (will be improved as soon as possible).
You could add it manually, dragging into the appropriate field of "surforgeSettings" prefab in "Assets/Surforge/Editor/" after saving, as any of your custom assets you create: mesh details, labels etc.

But actually, there is much more convenient and powerful way of working with materials, that Surforge main focused on: to create and use not single materials, but Material Sets.
This concept needs a little getting used to, but it offers very powerful features. Its like operate complete texture color designs instead of single materials, as set switching is realtime.
There are buttons for create, copy, save, select, shuffle material sets, and dropdown menu with prebuild sets.
Material Set stores materials itself, not link to materials. Just 8 materials instead of one ( + shared settings for the whole set), in desired order matching corresponding IDs. It could be shuffled, realtime changed for other set, saved with Unity scene along with all other sets.
Custom sets could also be saved in the "Assets/Surforge/CustomPresets/MaterialSets/" folder for future use (will appear in that dropdown menu when new texture/scene created).

I'm sorry that it is somewhat confusing. But please treat with understanding, that Surforge is in the early stage of development. Confusing things will be improved in the next versions, as well as documentation.
Detailed video about the materials will be as soon as possible.

Wow. I wasn't expecting that. I have to admit I am apprehensive about this method of material creation but I will give it go. I will say it will definitely require some convenience methods for interacting with a material set.

-There needs to be a way for you to copy the data from your material list to one of the slots in the material set. I can imagine reusing a particular material over and over again in lots of material sets.

-I would suggest even a way to copy just particular parts of a material (from the set or list) to other materials in the set. Every thing might be exactly the same but albedo, and feature or two and it will be cumbersome to re-enter the common data. Perhaps a way to copy from a one index in the material set to another index, etc.

-I would also love to see the tool window, the model view and material window all be true unity editor, docking capable windows of their own so we can move resize, etc.

-I had trouble initially with starting a new texture because the model I was using was modified by probuilder (to rapidly adjust the UVs) and saved as an asset. It allowed me to drag the model to the appropriate place but it simply wouldn't load the model. Once I re-exported it as a .obj it was fine however. Perhaps don't let users drag assets that aren't objs to the model selection.

-As I said I was using probuilder and I personally think probuilder is almost impossible to use without progrids. However, Surforge won't show its uv grid with progrids installed for whatever reason. Those users that want to use probuilder, progrids and use surforge for an all in one unity model creation tool will have an issue.

As a brainstorming exercise is there a way to translate a spec, gloss, bump, etc from an existing PBR material into the feature extraction parameters that Surforge will need? Having to redo the entire PBR material library from scratch will be a non started for some developers I imagine. You might also consider some more PBR material creation videos (ones that show how easy it is to create seamless pbr textures right in Surforge). I know you have one but a few more of these would probably help sell the concept more.

I see tons of potential here so don't get discouraged. I hope my feedback was helpful.

Thank you very much for detailed feedback.
Had taken note about issues with ProBuilder, I will try to make compatible.

By the way, you could easily copy your material from the list to one of the slots in the material set, just drag-and-drop it with desired set active to the texture area with desired ID.

Edit: I found no problems with ProGrids and working with exported ProBuilder object. Everything seems fine.
Surforge react on .obj resaving and update its preview and UVs.

I googled the word awesome and all the links pointed to Surforge in the asset store.

I look forward to future versions, sounds like even more great stuff.

I like the videos a lot. Great demos. I think they would be extremely more helpful if they were narrated. It's obvious that Surforge is doing a ton of stuff under the hood to make the process of making awesome textures a lot easier. I think it would be helpful to hear about some of it in the videos along with some tips on creating a work flow and such.

I did find a show stopper with a work around.

After selecting "New Texture" three items are created in the hierarchy.


Deleting any one of these will bring up the beginning menus so you can start a New Texture. There may be a better way to do this but I have just begun to mess with stuff. If so please let me know. I may have miss that in the Docs. Surforge is just so cool I just want to plunk around it all day and not do anything else like eat, bathe the plants or water the children. :eyes:

The problem occurs if you select all three of those items and delete them at the same time. Unity goes Bub-bye on the spot.

Again selecting any one of them and deleting it works fine.

Even with this I still find not only is surforge an AWESOME tool, you did a great job on the first public release. Other than that one issue, I found Surforge to be very stable. Thanks for taking the time it took to make surforge such a great tool.

1 Like

Thank you very much for your feedback.

About this three items: they are necessary for the package to work. As you can't forbid the objects to be deleted from the scene by user, there are two variants: hide them, or react on its delete.
I'm not a fan of things hidden from user, and the remove of these items interrupts the packege work, return to the starting point was the most suitable solution.

Since all the information, used by package is stored in a scene for possibility to save/load, it can't exist in the state, with partially erased critical components.
Also, the implementation of undo after deleting its core items (what leads to re-initialization), have the undo data of two complete different setups to be combined together, thats really to complex to support in stable way.

The best solution here, is to intercept the delete of this objects with a warning window. But I could not find the way to implement this functionality.
All code you call on delete, is actually run after the delete. If at all possible, it will be done.

I'm sorry that there are not too much videos, i am working on more detailed and tutorial style videos.
Please write what kind of videos would you like to see first. I will try to make it narrated, but it is a bit difficult because English is not my native language.
I added the highlight of all used functions and shortcut keys to partly compensate it.

I think i may have come across as harsh with my critique and that was not my intent. Sorry about that. Surforge is just plain awesome. I only wish more assets were as complete as yours when they have been released.

You asked "Please let me know, what else could i do to earn your higher rate."

Nothing, I changed it. Just continue with what your doing because you are doing a great job. Really.:)

Sorry, but I just had to log in to say that YOU ARE AWESOME.

EDIT: Also, don't be afraid of making this tool good for organics texturing too, not just hard surface.


Thank you very much!
Very happy that you like it. I will try to do my best to meet your expectations.


That material dragging and replacing a material set slot pretty much solves my issue with the material sets and useage. Though it can be pretty easy to overwrite your slot changes that way.

Progrids still can't be active at the same time for me. But as long as I fully close it, I can open up Surforge and it will work so switching back and forth should be fine.

I have yet another feature request: There needs to be some way to adjust the scale of poly lasso profiles on a global scale. The use case I have is that I am modifying a section of an existing atlas. So basically a small section of the whole uv map. When you work with a small section the profiles seem too large so bevel details take up the entire lasso'd area.

Here is screenshot of my test effort. I've needed to retexture the Multistory Dungeon Asset for awhile as its texture style doesn't really fit my game. Surforge seems to be what I needed:

It's a start. I am not artist (programming is my thing) but even for me this was very easy to do once I understood the controls and got the model setup.

In full disclosure I had scale and move the uvs on those models with probuilder before I could edit the texture in Surforge. I just couldn't get Surforge to work right on the base atlas.