Hi detail Terrain Texturing

I’m new to Panda; I want to get high detail textures on terrain.

What is the best image resolution, image size, file format etc. (or whatever) to use in order
to get the highest possible terrain texture from p3d 1.8.1(stock without rewriting the engine features).
I’ve seen example of toon quality textures on terrain, but can stock Panda do/manage hi-res detail
terrain texturing ? If so, where can I look for info. on implementing this.
Thanks for your help.

Why yes: Terrain rev. 3

The best technique for you to use will depend on what your needs are for your project. One technique is called texture splatting – searching here and on google will give some awesome details and examples.

In short: Information from your terrain, such as height and slope, plus tiled terrain textures, are sent into a shader. The shader will then determine which texture will be used for that pixel on the screen.

Eric Brunetons did the baseline work on that stuff.
That’s NOT Panda 3D, That’s from Proland Or a modded version. (proland.inrialpes.fr/)

I’ve already looked at that very outdated source for this stuff.

Don’t get me wrong, it looks like an attempt was made to do that in Panda 3D
But it dident work, for whatever reasons.

Thats why there’s no REAL resource that you can download that works.
You would haft to re-wite the entire panda engine to get a 30fps with that quality.

Proland has nice water also…

That’s all done in native OpenGL.

NO WAY ! I Know it’s not !

If they claim that, and you believe it. well,
I Know it’s not. It’s proland. Or some type OpenGL MOD.

I’ve worked with it for years.

There’s allot of nice pretty pictures everywhere.
Don’t believe everything you see !


It was based on Eric Brunetons work, but it was implemented in Panda3D all right.

Why do you think that it would not be possible to do in Panda3D? In the end, Panda3D is just a more friendly wrapper around OpenGL.

For someone new to Panda3D you seem to be very familiar with its capabilities to make such statements.
Are you sure you aren’t really our famous forum troll returned for another go?


I think if the STOCK Panda3D engine was able to do this. Someone would have done it Successfully by now.
(keyword being successfully). And that it would be published in a forum where the exact results could be duplicated easily.

Point of fact. It’s not. And there’s a reason for that.

I said…
“You would haft to re-wite the entire panda engine to get a 30fps with that quality.”

Obviously, I can’t know this to be fact. As I said “I’m new to Panda”. And , well, you should have realized that.

However, you ask if I’m a cave troll, because I challenge my knowledge of the mediocre. PROVE ME WRONG. And I’ll apologize,
and we’ll all be the better for it.

But until then, try to stretch yourself a little. Got to admit, It did get a rise out of you. :laughing:

And don’t forget…

“Everyone was so eager to thank the bus driver, as they exited the bus, and they smiled as it pulled away,
only to find they were on the wrong side of town”

– By Some Genius


But someone has - TobiasSpringer, who did post in the forums, and as far as I know people from the community have tried his code. Did you even search around the forums or try to contact him to verify the authenticity of the screenshot before you? In fact, I’ve been personally working with him to add new technological enhancements to the Panda3D engine that have helped him to implement this.

You seem to not really understand what an engine like Panda3D does, though. As Panda3D is a wrapper around OpenGL, a great majority of the things you can do in raw OpenGL, you can do in Panda3D. As such, the question in these matters is not really what the engine can do, but what the programmers and artists are able to do. A skilled programmer can make a great production in a crappy engine, and a crappy programmer can make something terrible in the best of engines.
Occasionally, the engine can be a limiting factor, but Panda3D has made great strides in recent years to keep up with the latest graphics technology, and not everyone has been able to take advantage of this to the fullest extent.

Keep in mind, though, just because it’s doable, doesn’t mean it’s easy. This takes a lot of advanced coding, GLSL programming, and careful instrumentation of Panda3D’s lower level features. I certainly don’t believe that if someone implements something nice in Panda3D after a lot of hard effort, that this implies that anyone can duplicate the results. That’s like saying that any unskilled programmer can sit in front of CryEngine and make the next best game just because someone else has done it before.

You’d do well to inform yourself better before you make such bold and outrageous statements in the future.

PS. Your statement that Panda3D would have to be rewritten to get 30 fps with that quality is utterly baseless, if not completely nonsensical at the very face of it. It’s you upon whom the burden of proof rests with regards to such claims.

Einstein, was never obligated to explain his theories to those who could not understand.
He did it because he could.

Sorry you feel so threatened.

Back on topic…

The best resolution is closest to the on-screen resolution of the texture and at the same time as small as possible. the upper limit used to be 8192x8192 but modern GPU can use even bigger textures. Note that a texture that big can take 256MB or more video memory (512x512 takes about 1MB, 1024x1024 takes 4MB, ~1.5 and 6MB with mipmaps )
If you have a box in a game and that box is about 1/4 of the screen when the character/camera is as close as it gets, then you can divide the screen resolution by 4 and you will get the optimum texture size. If you have a screen resolution of 1280x1024 then your texture for the box should not be larger then 320x256, and since some GPU don’t do so when with non-power-of-two textures then 256x256 is a good choice.
Game developers usually understand this and provide default textures in sane resolutions, but then come along community moders and you get 4k texture pack… but that’s another story.

For terrain the textures are tiling, that means they go on repeating in each direction- and in this case the 4k (4096x4096) textures could make sense, but 1024x1024 is usually all you need.

Most people will tell you to use a lossless format. They have a point, but for terrain, controlling mip-maps could be more important.
The thing is that the terrain texture up close should be detailed and sharp, while far away it should not show the repetitive pattern. It’s almost impossible to have one texture that has both high and low frequency details that look good near and far - but if you manually generate mipmaps you can blend 2 or more textures into one.
Here’s an example (in pview):
Auto generated mipmaps:

Manually made:

Since the only universal file format that can store mipmaps is DDS, I’d say that’s the format you should use (this gimp dds plugin allows you to save the mipmaps, not just open them as the default one: code.google.com/p/gimp-dds/)


Thank you so very much. That was exactly what I needed. It looks wonderfull.

Very mature, educational, good detail. Doesn’t pretend to be something it’s not. etc…
I will try to implement this into my project.

And thats really what I needed all along.

*---- Meanwhile back on the dark side…

See ! We really do know why the chicken crossed the road…
It was because he could.

It was not my intent to bash Panda or anyone’s hard work.

Panda seems to be very well written. and I’m sure IT has high abilities.
Especially in the field of cartoons and such. Thats been proven.


Okay, you got me! This demo was not running on panda3d, it was running on my calculator.
No seriously, why shouldn’t it? If you wan’t the source code, tell me and I’ll send it to you. Also, the terrain only uses a small feature set from panda3d. I built my own quadtree in c++, and various other stuff like vegetation distribution. 90% is done in shaders. That’s why it does not matter at all which engine you use. The gpu will do the stuff in the end.

Also, If you need help for your own terrain, or modifying it, I can help you :slight_smile:

To answer your question:

The limit is set by your gpu. I managed to load a 16k texture with 2GB vram, but that took about 1,6gb vram. So your vram is the limit, and sometimes openGL too. But when streaming textures, you can have a texture of unlimited size. I once implemented streaming in my terrain and was able to stream a 32k texture from disk. So it only matters about your implementation.

About shader splatting: I think you wanted to use one big texture for the whole terrain. This might work for small terrains, but on a big terrain like mine (8x8 kilometers), this might get easy just to big. Just imagine a resolution of 100x100 pixels per meter. That would be an image of 8000000x8000000 Pixels. So you usually have a smaller texture, like 1024x1024, which determines the material at that place. Then, given the right material, you sample a tiled material texture.

Hope I could help you a bit :slight_smile:

Does this mean we’re getting a port of Panda to TI-83? :slight_smile:

TI Nspire CX :stuck_out_tongue: