Texture Creator

Community Forums/Showcase/Texture Creator

Rob Farley(Posted 2004) [#1]
Following from Halo's thread 'Progress' I decided to have a go at making a texture creator app that makes life just a bit easier... Not quite ready yet however here's a screeny so far



So what does it do?

Well, you start with a background image, you can then use a palette of 32x32 sprites to draw on that, layering upto 10 times.
You then choose if you want to add a prefab shadow (bottom shadow pictured) and a stain map.

You set the shadow intensity, offset and blur.

Hit render and out pops your texture looking lovely!

Anyway... nearly there... Stay tuned...

Let me know if you've got any ideas.


Beaker(Posted 2004) [#2]
Nice. You doing it all in b+?


Rob Farley(Posted 2004) [#3]
No, B3D, not got b+, it only used 2d commands though.


eBusiness(Posted 2004) [#4]
Yeah, it looks good.


jfk EO-11110(Posted 2004) [#5]
looks very useful! especially those relief style shadows are very usefull for textures!


jfk EO-11110(Posted 2004) [#6]
btw: seen this public domain tileset:
http://www.gamebeavers.org/modules.php?set_albumName=album13&id=AbuseTiles&op=modload&name=gallery&file=index&include=view_photo.php


Ruz(Posted 2004) [#7]
so you can make your own litile sprties and then load them?


N(Posted 2004) [#8]
Dang.. that's neat. Quite nice. Plan to add other effects? (e.g., those similar to Photoshop's blend options, such as "Inner Glow")


darklordz(Posted 2004) [#9]
DB's TextureMaker 2.5 is 1000x better and it's worth every penny....

Also have any of you ever heard of discreet Combustion? It looks cool. But i dunno...


Rob Farley(Posted 2004) [#10]
Ruz: Yep, that's the idea, you create tile sets. I think it's easier to create small sprites that whole textures and it means you can have a running theme through your resultant textures.

Noel: Yep, this is only an evenings work on it, once I've got a beta out I'm sure requests on functionality will be flooding in!

Darklordz: Sorry it's not as good as a commerical product.


Kuron(Posted 2004) [#11]
darklordz: I am not picking on you, but want to point something out. None of those tools, are DB's. They are simply resellers of thos tools. I-Tex, Infinity textures, or Texture maker or whatever the hell it is currently called has been around a long, long time and is a very good product, but go back and look at the screenshots and featureset from the very first public release. It was as lame as ass flavored ice cream and didn't support anything near what the Farleyed one is showing in his program.

Rob's hasn't even been released yet. Based on his past work in this area, I think this will be a very good program. Give it a fair chance, ok?


N(Posted 2004) [#12]
By the way, Rob, if you open source it ever I won't mind hacking in a few of my own 'filters' ;)


Ruz(Posted 2004) [#13]
Thats cool, look forward to trying it


Rob Farley(Posted 2004) [#14]
It's turning out quite complicated really!

Anyway... slowly but surely we're getting there....

Update so far:



You can now add effects at any layer, you create a stack of effects, so far I've got add, multiply and 2x Multiply. One or many of these can be added to the stack at any level. You choose the blend effect, pick the file, choose the level it affects then hit add and it adds it to the stack list. This can be editted afterwards too.

Generally going well... just more complex than I first though!


darklordz(Posted 2004) [#15]
@Rob im sorry of my post sounds rude. I didn't mean it :) The screens do look great tough...


Ross C(Posted 2004) [#16]
Keep it up man :) Looks very promising!


Rob Farley(Posted 2004) [#17]
The FX stack is proving to be a bit of a nightmare! I'll get there!

If anyone wants to write some special fx functions for it here's the basic outline of a fx function, this one is x2 Multiply. I've already got add, multiply and x2 multiply so if you can think of any more to add let me know and I'll have a go at it... or just write it like this and I'll include it (obviously you'll get credit).

; ========================================================================================================
; multiply x2 example.
; ========================================================================================================

; some globals need to be set up for the get_rgb function to work...
Global got_red=0
Global got_green=0
Global got_blue=0

; ========================================================================================================
; source = file to be applied to the output
; output = the current image created thus far
;
; there's also a strength variable 0-255 that can be passed if necessary.
; ========================================================================================================


Function multiplyx2(source,output)
	
	LockBuffer ImageBuffer(source)
	LockBuffer ImageBuffer(output)
	
	For x=0 To 255
	
	; ========================================================================================================
	; Just the working bar so you can check the progress
	;	
	; working(400,320,"Multiply X2",x,255)
	; Flip False
	; ========================================================================================================
	
	For y=0 To 255
	
	get_rgb(source,x,y)
	sr#=2-(Float(255-got_red)/128)
	sg#=2-(Float(255-got_green)/128)
	sb#=2-(Float(255-got_blue)/128)
	
	get_rgb(output,x,y)
	r#=cap(Float(got_red)*sr)
	g#=cap(Float(got_green)*sg)
	b#=cap(Float(got_blue)*sb)
	
	write_rgb(output,x,y,r,g,b)
	
	Next
	Next
	
	UnlockBuffer ImageBuffer(source)
	UnlockBuffer ImageBuffer(output)

	Return output

End Function




; ========================================================================================================
; additional functions needed to make it work
; these just get the rgb bits from images and put rgb bits to images, also stop numbers getting beyond 0-255
; ========================================================================================================


Function get_rgb(image_name,x,y)
argb=ReadPixelFast(x,y,ImageBuffer(image_name))
got_red=(ARGB Shr 16) And $ff 
got_green=(ARGB Shr 8) And $ff 
got_blue=ARGB And $ff
End Function

Function write_rgb(image_name,x,y,red,green,blue)
argb=(blue Or (green Shl 8) Or (red Shl 16) Or ($ff000000))
WritePixelFast x,y,argb,ImageBuffer(image_name)
End Function

Function cap(x)
If x<0 Then x=0
If x>255 Then x=255
Return x
End Function



Rob Farley(Posted 2004) [#18]
Latest screenshots on my site in the project section.


Rob Farley(Posted 2004) [#19]
Obviously no-one's interested... Back to work on my other stuff then.


Beaker(Posted 2004) [#20]
Very quiet round here at the mo. It looks great Rob, but I haven't got any time to take a look right now.

Maybe you'd get more feedback from a graphics/artists forum.

Good luck with it.


fredborg(Posted 2004) [#21]
It looks interesting! About the FX a small script system would rock! It's probably tricky to do, but if it was possible to do something like:
; Blur Script
red = (x-1,y-1) + (x+1,y-1) + (x+1,y+1) + (x-1,y+1) + (x,y+1) + (x,y-1) + (x+1,y) + (x-1,y) + (x,y)
red = red/9
green = (x-1,y-1) + (x+1,y-1) + (x+1,y+1) + (x-1,y+1) + (x,y+1) + (x,y-1) + (x+1,y) + (x-1,y) + (x,y)
green = green/9
blue = (x-1,y-1) + (x+1,y-1) + (x+1,y+1) + (x-1,y+1) + (x,y+1) + (x,y-1) + (x+1,y) + (x-1,y) + (x,y)
blue = blue/9
In an external script, it would be possible to do a large variety of scripts/FX by making simple plug-ins...

Probably too much, but it could be really cool!


Rob Farley(Posted 2004) [#22]
I've considered that fredborg... I thought it would be easier to have them as seperate exes, put the image on the hd as temp.bmp then launch it with a /strength (or something) this way I don't need to parse a script.

This is why I've created a basic bunch of commands so people can write them in blitz and I'll just paste the functions in (for the time being at least).


jfk EO-11110(Posted 2004) [#23]
Of course this is an interesting project!