njbrown / texturelab Goto Github PK
View Code? Open in Web Editor NEWFree, Cross-Platform, GPU-Accelerated Procedural Texture Generator
License: Other
Free, Cross-Platform, GPU-Accelerated Procedural Texture Generator
License: Other
When I made my first texture with texturelab I wanted to export it at an higher resolution and got a different result.
Then I found out that some nodes change when changing resolution, like the blur, directional blur, bevel or warp node while others worked as expected.
System: Xubuntu
texturelab version: v0.3.0
@njbrown Is this possible in Texture Lab currently?
How do you draw a line through a reference image or on screen to pick a range of colors for the gradient map node or colorize node?
Cheers.
When loading the Linux builds provided from https://njbrown.itch.io/texturelab via zip or appimage and loading builds from current github texturelab source nothing but a dark gray window briefly that turns to white appears and that's it. Launching from the terminal reveals its crashing with seccomp-bpf failure in syscall 0230
3 times in a row and then just sits there.
[retro@retro-mcp TextureLabLinux-v0.2.0]$ ./texturelab
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
[retro@retro-mcp TextureLabLinux-v0.2.0]$
Here is a screenshot of texturelab window and my terminal under it.
I give it a few minutes and nothing happens, forcing me to kill the process to unload it.
This is on Manjaro Linux 64bit KDE with an AMD Ryzen 7 2700X, Nvidia GTX 1660 running current Nvidia proprietary driver. If you need any other info related to this issue I would be happy to share.
I thought it was one of the dependencies on my system and not texturelab, but the required dependencies seem to be installed.
Launcher or a button within the software to auto update to the latest version
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/color.d.ts
85:9 An accessor cannot be declared in an ambient context.
83 | readonly rgba: RGBA;
84 | private _hsla;
85 | get hsla(): HSLA;
| ^
86 | private _hsva;
87 | get hsva(): HSVA;
88 | constructor(arg: RGBA | HSLA | HSVA);
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/color.d.ts
87:9 An accessor cannot be declared in an ambient context.
85 | get hsla(): HSLA;
86 | private _hsva;
87 | get hsva(): HSVA;
| ^
88 | constructor(arg: RGBA | HSLA | HSVA);
89 | equals(other: Color): boolean;
90 | /**
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/event.d.ts
158:9 An accessor cannot be declared in an ambient context.
156 | * to events from this Emitter
157 | /
158 | get event(): Event;
| ^
159 | /*
160 | * To be kept private to fire an event to
161 | * subscribers
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/event.d.ts
210:9 An accessor cannot be declared in an ambient context.
208 | private emitter;
209 | readonly event: Event;
210 | set input(event: Event);
| ^
211 | dispose(): void;
212 | }
213 | export {};
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/lifecycle.d.ts
13:19 An accessor cannot be declared in an ambient context.
11 | static None: Readonly;
12 | protected _toDispose: IDisposable[];
13 | protected get toDispose(): IDisposable[];
| ^
14 | private _lifecycle_disposable_isDisposed;
15 | dispose(): void;
16 | protected _register(t: T): T;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/common/linkedList.d.ts
6:9 An accessor cannot be declared in an ambient context.
4 | private _last;
5 | private _size;
6 | get size(): number;
| ^
7 | isEmpty(): boolean;
8 | clear(): void;
9 | unshift(element: E): () => void;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menu/menu.d.ts
33:9 An accessor cannot be declared in an ambient context.
31 | parentData: ISubMenuData;
32 | private _onDidCancel;
33 | get onDidCancel(): Event;
| ^
34 | constructor(container: HTMLElement, options?: IMenuOptions, closeSubMenu?: () => void);
35 | setAriaLabel(label: string): void;
36 | private isTriggerKeyEvent;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
48:9 An accessor cannot be declared in an ambient context.
46 | setupMenubar(): void;
47 | private onClick;
48 | get onVisibilityChange(): Event;
| ^
49 | get onFocusStateChange(): Event;
50 | dispose(): void;
51 | blur(): void;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
49:9 An accessor cannot be declared in an ambient context.
47 | private onClick;
48 | get onVisibilityChange(): Event;
49 | get onFocusStateChange(): Event;
| ^
50 | dispose(): void;
51 | blur(): void;
52 | setStyles(style: IMenuStyle): void;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
57:17 An accessor cannot be declared in an ambient context.
55 | private hideMenubar;
56 | private showMenubar;
57 | private get focusState();
| ^
58 | private set focusState(value);
59 | private get isVisible();
60 | private get isFocused();
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
58:17 An accessor cannot be declared in an ambient context.
56 | private showMenubar;
57 | private get focusState();
58 | private set focusState(value);
| ^
59 | private get isVisible();
60 | private get isFocused();
61 | private get isOpen();
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
59:17 An accessor cannot be declared in an ambient context.
57 | private get focusState();
58 | private set focusState(value);
59 | private get isVisible();
| ^
60 | private get isFocused();
61 | private get isOpen();
62 | private setUnfocusedState;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
60:17 An accessor cannot be declared in an ambient context.
58 | private set focusState(value);
59 | private get isVisible();
60 | private get isFocused();
| ^
61 | private get isOpen();
62 | private setUnfocusedState;
63 | private focusPrevious;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
61:17 An accessor cannot be declared in an ambient context.
59 | private get isVisible();
60 | private get isFocused();
61 | private get isOpen();
| ^
62 | private setUnfocusedState;
63 | private focusPrevious;
64 | private focusNext;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
66:17 An accessor cannot be declared in an ambient context.
64 | private focusNext;
65 | private updateMnemonicVisibility;
66 | private get mnemonicsInUse();
| ^
67 | private set mnemonicsInUse(value);
68 | private onMenuTriggered;
69 | private onModifierKeyToggled;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/menubar.d.ts
67:17 An accessor cannot be declared in an ambient context.
65 | private updateMnemonicVisibility;
66 | private get mnemonicsInUse();
67 | private set mnemonicsInUse(value);
| ^
68 | private onMenuTriggered;
69 | private onModifierKeyToggled;
70 | private isCurrentMenu;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/themebar.d.ts
11:16 An accessor cannot be declared in an ambient context.
9 | constructor();
10 | protected registerTheme(theme: Theme): void;
11 | static get win(): Theme;
| ^
12 | static get mac(): Theme;
13 | }
14 | export interface CssStyle {
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/themebar.d.ts
12:16 An accessor cannot be declared in an ambient context.
10 | protected registerTheme(theme: Theme): void;
11 | static get win(): Theme;
12 | static get mac(): Theme;
| ^
13 | }
14 | export interface CssStyle {
15 | addRule(rule: string): void;
ERROR in D:/ELECTRON/texturelab/node_modules/custom-electron-titlebar/lib/titlebar.d.ts
94:9 An accessor cannot be declared in an ambient context.
92 | * get the options of the titlebar
93 | /
94 | get options(): TitlebarOptions;
| ^
95 | /*
96 | * Update the background color of the title bar
97 | * @param backgroundColor The color for the background
ERROR in D:/ELECTRON/texturelab/src/lib/designer.ts
63:5 Type 'CanvasRenderingContext2D | WebGLRenderingContext' is not assignable to type 'WebGLRenderingContext'.
Type 'CanvasRenderingContext2D' is missing the following properties from type 'WebGLRenderingContext': drawingBufferHeight, drawingBufferWidth, activeTexture, attachShader, and 429 more.
61 | this.canvas.width = this.width;
62 | this.canvas.height = this.height;
63 | this.gl = this.canvas.getContext("webgl2");
| ^
64 |
65 | this.nodes = new Array();
66 | this.conns = new Array();
@njbrown Just wanted to humbly ask if there are any plans for a distance node?
Appreciate all the features you have added so far.
Cheers.
It's not an easy issue but it could happen and there's no way to fix it beside restart the program.
Step to replicate the bug (Removing a window)
I have try this many time, It take effort but I can even make the program became full blank screen.
But this can be happen accidentally.
Video of me try to remove some of the window
https://user-images.githubusercontent.com/30751699/129976178-0ef059dc-cb29-4c1d-a249-7b0313bd609e.mp4
Hi,
Amazing tool.
But noise is very blurry or very repeated.
An improved or new noise nodes would be very nice.
Need Add, Multiply, One Minus, Divide, Sin, Cos, Lerp ..... Nodes
This occurs on the current code base or the last few nightlies for Linux & Windows builds available from the Discord channel.
-Open TL, use the default nodes that it opens with, add a brick generator into a colorizer node then plug into the output node that's set to the albedo channel just to give the 3d view an easy to see pattern and color.
-Change the output node that links from the normal node from the normal texture channel to emission. The 3d view model turns the current color of the normal channel.
-Change that output node back to the normal texture channel and the 3d view does not change.
-Unconnect the normal map node from the output node that is set to normal texture channel the 3d view doesn't change.
-Reconnect normal map node to output node set to normal texture channel and the 3d view doesn't change.
-Change the output node connected to the normal map node to none the 3d view turn solid white(no shading).
-Change that same output node to emission again and the 3d view turns the color of the normal channel.
-Now change the color of the same node and the 3d view doesn't change.
The only thing I seem to be able to do to change the 3D view texture is to change the out to emission.
It pretty much stays like this until you exit out of TL and restart.
After all that, upon further testing I find this to happen after changing any node's texture channel to emission than to none.
This application is so cool. I like how easy it is to connect components and that there are many ready to use ones.
I just have a suggestion to add a glsl exporter (to shadertoy).
Thanks :)
Example would be creating and exporting a 4k (future 8k?) with an option to have the tool also exporting 2 or 3 lower resolution textures as well so you got a nice set of textures to use for games or other projects.
TextureLab defaults to the integrated gpu instead of the dedicated gpu on a laptop that has both. There does appear to be a way to force electron apps to chose dedicated by default (as mentioned on discord). This is just a tracking issue to ensure it's not forgotten.
Platform: Windows 10
GPU-0: Intel UHD 630
GPU-1: GeForce GTX 1070 with Max-Q Design (4.5.0 NVIDIA 451.67)
For example it won't let me input 0.125
as a scale in the Transform node properties. I think it may be because the step size is 0.01
here.
Would be quite useful to be able to invert normal in 3d view in case there is mismatch between Texturelab and target application. Sure you can use invert node but then you have to remember to unplug it before export every time.
After I import a normal map in the image node, I link it to "height" node, expecting baking a height map.
However, after I check the source code, I found it just simply sample from the normal map's R/G/B channel as output.
does that exactly mean height ? Thanks!
It would be awesome if there was some kinda of link between TextureLab and Blender that allowed node translations of some sort or material creation. Being able to modify/use inside ob Blender would be even crazier.
This would be really great to add variation to the sampler. It should randomly choose one of the images when it creates a tile.
This is very useful to add variation. It could be used to improve the "grass and rocks" example to include more than one rock shape this way. Thank you!
Hi there! I hope you are doing great @njbrown!
I was using TextureLab yesterday and I found out a new node called "Flood Fill sampler". This is a great node that can be tile an image in a particular way with amazing parameters such as random rotation, random scale, and random position.
However, when I started using it, I found it very unstable. It was giving me some problems.
First of all, if you try to use random scaling, it clamps the output. This is the original image:
Now, this is what happens with random scaling:
Adjusting the precision hasn't helped. I also have seen that there is a problem with the random rotation:
It creates some weird lines (see the tiles at the side).
For now I'll focus on NPM. Got these as errors:
npm ERR! Linux 5.3.0-28-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! code EREADFILE
npm ERR! Error extracting /home/peter/.npm/custom-electron-titlebar/3.2.1/package.tgz archive: ENOENT: no such file or directory, open '/home/peter/.npm/custom-electron-titlebar/3.2.1/package.tgz'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /home/peter/prj-src/extapps/texturelab/npm-debug.log
Ubuntu 18.03
Python 3.9.0a3
steps to reproduce:
1: copy and paste a node (the new pasted node is highlighted)
2: change some parameters
expected: the new pasted node is changed
result: the original node is changed instead
to change the pasted node you need to deselect and re-select it before
System: Xubuntu
texturelab version: v0.3.0
Wanted to recommend Alt + rightclick or Ctrl + rightclick for zooming for the 2d view for wacom or graphics tablet users due to the absence of mouse scroll wheel when using these devices.
Any combination using right click, I think is fine.
Cheers.
Really looking forward to the next release. Hope you are doing well. More power to you.
Type checking in progress...
App running at:
ERROR in D:/Projects/Electron/texturelab/node_modules/three/src/geometries/ExtrudeGeometry.d.ts
2:10 Import declaration conflicts with local declaration of 'UVGenerator'.
1 | import { CurvePath } from './../extras/core/CurvePath';
2 | import { UVGenerator } from './ExtrudeGeometry';
| ^
3 | import { Vector2 } from './../math/Vector2';
4 | import { Vector3 } from './../math/Vector3';
5 | import { Shape } from './../extras/core/Shape';
ERROR in D:/Projects/Electron/texturelab/node_modules/three/src/materials/ShaderMaterial.d.ts
1:10 Import declaration conflicts with local declaration of 'ShaderMaterialParameters'.
1 | import { ShaderMaterialParameters } from './ShaderMaterial';
| ^
2 | import { IUniform } from '../renderers/shaders/UniformsLib';
3 | import { MaterialParameters, Material } from './Material';
4 |
Version: typescript 3.9.6
Time: 6045ms
Really cool project! The biggest advantage of procedurally generated textures is they can take merely kilobytes compared to megabytes of prerendered textures. This means a browser-based enviroment can benefit from these immensely. They can make browser games, galleries and other 3D enviornments load 10x faster and use less bandwith of the creator's CDN. I've been working on a browser-based game engine for a while and the textures have always been an issue(even when using webp with client-side transcoding, they're still the heaviest element). I see that there's a branch converting the whole project to Qt but what about going the other way? Considering the project is already running in Electron would it be complicated to transform it into a fully browser-based solution utilising WebGL/GPU? It would be cool to have something like ShaderToy but for procedural textures plus integrations with different environments i.e. Three.js or Blender to load the textures directly from a link in development and bundle them in production.
P.S. .kkrieger was too far ahead of its time but the progress in the browsers' tech enables client-side procedurally generated textures to be something practical now.
I've seen more and more mappers & modder use Substance Designer not realizing there was a Linux build of it. I was searching for free and open-source alternatives to it that run under Linux when I found Texturelab.
I work with a lot of older games like doom, quake, quake 2, etc and the minimum resolution size of 256 is huge relatively speaking in comparison to those game textures. Texturelab's smallest size is
Sure you can use 256 and scale it down, but that adds extra steps and it sometimes helps r to work in the actual texture size you need when making textures. This may fall under the lacking UI elements you mention on the website.
It would be nice to be able to pick your own sizes or at least offer a few smaller sizes than 256x256.
This is a great software. Wanted to ask if a node that crops part of an image can be added to the node library. Or a node that can seperate say a leaf atlas based on rows and columns and scatter or splatter them on a surface.
Thanks and keep up the good work
要是可以载入语言配置让这个软件可以支持多种语言就好了
TextureLab continually uses a high percentage of both cpu and gpu while idle - other DCC apps do not (e.g. blender).
I don't have access to the substance suite to compare there.
It looks to use 100% of 1 cpu core (I have 12 so that's the ~8% in the pic below) and 75% of gpu.
Here is what TextureLab looks like sitting completely idle when first opened from a recent nightly build:
OS: Ubuntu Linux 20.04
GPU: GeForce RTX 2060 SUPER
CPU: AMD Ryzen 7 1800X
There is a strange problem. There are two computers here, both use (xfce) XUbuntu 20.04.
TextureLab works fine on my 2-core Celeron shoebox. But on the other (Ryzen based) PC it just opens a white window.
TextureLab's Console feedback (Ryzen system). I tried the TextureLab-AppImage and the TextureLab from compressed archive.
# The AppImage
leonard@LuckDragon:~$ TextureLabLinux-v0.2.0.AppImage
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
# Decompressed from archive
leonard@LuckDragon:~$ cd app/TextureLab/
leonard@LuckDragon:~/app/TextureLab$ ls
chrome_100_percent.pak chrome-sandbox libEGL.so libGLESv2.so LICENSES.chromium.html natives_blob.bin resources.pak swiftshader v8_context_snapshot.bin
chrome_200_percent.pak icudtl.dat libffmpeg.so LICENSE.electron.txt locales resources snapshot_blob.bin texturelab
leonard@LuckDragon:~/app/TextureLab$ ./texturelab
../../sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc:**CRASHING**:seccomp-bpf failure in syscall 0230
Just now I refreshed both Ubuntu systems with
sudo apt update; sudo apt upgrade
Still the same issue on the other Pc.
Right now the range on normal map is quite useless. RGB channels for tiny details basically just go seperate directions. So for a tiny detail even range 2 produces bad effect.
I know that Substance Designer has 3ds max, unity and Maya integration and I just thought I'd ask if texturelab has any of these. I've never actually used substance or texturelab, however I'm trying to pick one for making textures to use in unity and 3ds max (my 3d modelling software)
look into using a better GLSL RNG:
https://stackoverflow.com/a/17479300
PCG RNG:
https://www.pcg-random.org/download.html#minimal-c-implementation
Which if you have 2 drawnodes you can merged them together to create something cool
For example the first drawing could be a leaf, while the 2nd can be the steam or veins of the leaf.
Plus you can use the blur nodes or other nodes just to spice it up a bit.
Could also be using for many things like concepting or fixing up/clean up!
I see there is no curvature node. Any workaround I am not thinking about?
By the way really nice looking app. All it misses now is extra hundreds of nodes :).
Hi Nic, just wondering if there is any plan to have Mac version?
The stonegrass example, if left at its default resolution of 1024x1024
, causes GPU timeouts (at least with amdgpu.gpu_recovery=1
).
The GPU recovery is followed by the complete failure of texturelab's rendered UI elements, as shown here:
From looking at the rendering timings, my theory is that this is due to an intensive use of the Tile Sampler node.
It is worth noting that the following two steps avoid the crash:
OS: Ubuntu 22.04.1 LTS (Ubuntu MATE with compositor disabled)
Hardware: AMD Ryzen 3 3200U with Radeon Vega Mobile Gfx
glxinfo Extended renderer info details:
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon Vega 3 Graphics (raven2, LLVM 13.0.1, DRM 3.42, 5.15.0-52
-generic) (0x15d8)
Version: 22.0.5
Accelerated: yes
Video memory: 2048MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
dmesg header (kernel command-line options, etc.):
[ 0.000000] Linux version 5.15.0-52-generic (buildd@lcy02-amd64-032) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #58-Ubuntu SMP Thu Oct 13 08:03:55 UTC 2022 (Ubuntu 5.15.0-52.58-generic 5.15.60)
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-52-generic root=UUID=6e30e75a-1dc6-4bf9-8298-b9b7eaf57cdc ro amdgpu.gpu_recovery=1 amdgpu.gpu_recovery=1 quiet splash vt.handoff=7
dmesg output caused by timeouts:
[24391.081498] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout, but soft recovered
[24436.906387] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout, but soft recovered
[24554.667974] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout, but soft recovered
Environment: Linux Mint 19.3 64-bit (Cinnamon)
Version: 0.1.0
Description: When I'm trying to open the exported texture zip and not all channels are defined, the zip file comes out invalid (unreadable) for the GNOME archive manager. It looks like you're using a binary export instead of the proper library or Electron abstraction layer.
Btw you should really set up issue templates. It makes them way more readable and manageable.
Is this supposed to be something that is basically shader graph in a separate application without using shaders or something that can be used with it? To me, it seems like the former, because shader graph basically seems like the exact same thing.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.