Sign in to follow this  
SiliconMunky

Looking for some tips/constructive criticism. Version 1.12

Recommended Posts

Hey guys, I've been working on a simple graphics demo for the last week or so and was looking for some advice on what I should work on next. EDIT: the new link is at the last post. or here ;) So far I've implemented - a simple batched rendering system for the meshes and few other engine components - a rigging system for moving objects like the camera and meshes on - simple heightmapped terrain - a skybox - a timer class - control of the camera in spaceship-mode I was planning on learning how to use shaders next, and was going to start with multitexturing the terrain. What do you all think? Edit: Oh and could you tell me how well it runs on your systems, and what kind of systems you guys have? Thanks. I've got an x800 pro, so everything runs smooth on my system, lol. :) [Edited by - SiliconMunky on July 16, 2005 8:26:48 AM]

Share this post


Link to post
Share on other sites
Does not work in my system. (P4 6800GT 77.72)
Unfortunately there is no debug information. Maybe you can start doing/constructing a small debuging system.

Good luck.

Edit: The problem: it gets stuck when initializing the rendering context. It also block the mouse.

Share this post


Link to post
Share on other sites
Hmmm very odd, you have the latest copy of the directx runtimes?
Does your monitor support 1280*1024*32bits @ 60 hertz?

I tihnk you're right about starting on a logging system, and capability testing.

Thanks for trying :)

Share this post


Link to post
Share on other sites
Quote:
Original post by SiliconMunky
Hmmm very odd, you have the latest copy of the directx runtimes?
Does your monitor support 1280*1024*32bits @ 60 hertz?

I tihnk you're right about starting on a logging system, and capability testing.

Thanks for trying :)


YEp Im running:
DirectX Version: DirectX 9.0c (4.09.0000.0904)
Current Mode: 1280 x 1024 (32 bit) (60Hz)

Share this post


Link to post
Share on other sites
Quote:
Original post by BlackBox
YEp Im running:
DirectX Version: DirectX 9.0c (4.09.0000.0904)
Current Mode: 1280 x 1024 (32 bit) (60Hz)


Ok that's just weird then, all my friends with a smiliar setup to yours aren't having any problems running it at all.

Anyone else?

Share this post


Link to post
Share on other sites
It runs fine on my system. Nice work! I miss a fps counter though so I can get a rough idea how it performs. Camera movement was kind of slow also. Consider adding a directional light to the scene instead of just using ambient light. Good lighting can make a huge difference. The trees look kind of.. ugly :), there are lot of resources on the web on rendering trees.

Share this post


Link to post
Share on other sites
Quote:
Original post by Opwiz
It runs fine on my system. Nice work! I miss a fps counter though so I can get a rough idea how it performs. Camera movement was kind of slow also. Consider adding a directional light to the scene instead of just using ambient light. Good lighting can make a huge difference. The trees look kind of.. ugly :), there are lot of resources on the web on rendering trees.


Thanks! Now that I've got the text system working I can easily put in the fps counter. The here actually is a directional light, but I'll try lowering the ambient a bit. The tree was the first mesh made by a fellow programmer, so you can expect it to be a bit ugly. I'll take a look for some better models online. :)

Share this post


Link to post
Share on other sites
Quote:
Original post by DudeMiester
Worked well and smooth. Took a little while to load though for something so simple. (Athlon XP 2000, 768MB RAM, 6800GT)


Yeah, unfortunatly right now it calculates all the normals on load up, and there's something else that's taking forever to load too. It's on my list of things to look into.
I think I'll have to create a normal map that I can load in with my heightmap.

Share this post


Link to post
Share on other sites
Good start, there is alot you could to add to this. Runs well on my 9700 pro.

Maybe some water? Animated wildlife? Perhase a moving sun (would change the lighting over time. Keep up the good work.

Share this post


Link to post
Share on other sites
Shaders for the terrain sounds like a good idea for your next thing to do/learn - terrain might be a good place to try some detail texturing and bump mapping to get some higher resolution on the terrain textures.
The camera is nice - depending on if you want to do non-GPU stuff you could have a 1st or 3rd person view and run around on the terrain with collision detection - alot of stuff down the track like shadows, level-of-detail, run-time assembling/caching of geometry/textures and occlusion culling can depend on your camera view - if your camera is moving rapidly above the terrain it could lead you down a different development path than if your camera follows a biped on the surface of the terrain.

Runs fine on my AMD2100,512Mb,9800pro.

Share this post


Link to post
Share on other sites
Quote:
Original post by DudeMiester
Worked well and smooth. Took a little while to load though for something so simple. (Athlon XP 2000, 768MB RAM, 6800GT)


A little offtopic, but.. I have basically the same system as you, but with a crapier graphics card. Do you get good performance with your 6800GT even though your cpu isn't exactly bleeding edge? (I'm thinking of buying one)

Share this post


Link to post
Share on other sites
Runs well (6800Ultra-P43.2). 1 thing. if I keep the readme text activated it runs very slowly, if I make it disappear it runs well.

Share this post


Link to post
Share on other sites
Thank you 999999999, you have pointed out something I need to address.

Currently when I render the text on to the screen I have a vertex buffer with one screenpace quad in it, I lock the buffer, update the position and texture coordinates, then I unlock it and render that one letter. Then I loop back and do that over and over until all the characters are rendered.

Now that I think about it, this is a terrible way to do it. It's cheap on memory, but has the huge over head of hundreds of draw primitive calls, and hundreds of locks/unlocks of the vertex buffer.

I'm thinking now that instead I should, on load up, create a large vertex buffer with enough space to hold all the characters that I would ever need to render in one frame. Then when rendering, I'd lock the large buffer and update enough quads to render as many letters as I need, then unlock it and make one render call drawing all the letters at once.

Sounds like a better solution to me, but how should I determine how large to make the vertex buffer?

Share this post


Link to post
Share on other sites
For something like debugging text, it's OK to forget buffers and just use DrawPrimitiveUP. Build up chars in a plain array until it's full or you run out of chars, then flush it to the renderer and continue on.

Share this post


Link to post
Share on other sites
For debug, you can even use ID3DXText interface, it's very easy to implement and use, it is not very efficient as it uses WinGDI but it's hundred times faster than so many DrawPrimitive calls. For the in-game text in the retail version I'd recommend using ID3DXSprite to implement a sort of text system using textures to hold possible characters, it would be quite fast and you could use custom-built characters. Hope this helps.

Share this post


Link to post
Share on other sites
Runs great on my system (other than when the readme is open.) How come there isn't a bottom to the skybox (the flickering hurt my eyes)?

Keep up the great work!

2.8GHz Celeron
1GB RAM
128MB ATI Radeon Xtasy Series

Share this post


Link to post
Share on other sites
Quote:
Original post by 999999999
For debug, you can even use ID3DXText interface, it's very easy to implement and use, it is not very efficient as it uses WinGDI but it's hundred times faster than so many DrawPrimitive calls. For the in-game text in the retail version I'd recommend using ID3DXSprite to implement a sort of text system using textures to hold possible characters, it would be quite fast and you could use custom-built characters. Hope this helps.


Thanks for the info. I decided to write my own text system from scratch by drawing screen space quads, as this whole project/demo is a learning experience. I'm reworked a lot of it last night and it should be working better now.

Share this post


Link to post
Share on other sites
Quote:
Original post by Programmer16
Runs great on my system (other than when the readme is open.) How come there isn't a bottom to the skybox (the flickering hurt my eyes)?


I didn't bother putting a skybox on the bottom cause you "shouldn't" be able to see it normally. Though I suppose it'd better to just draw a black quad over it.

I'm curious what you mean by the flickering? I know I'm not clearing the frame buffer each frame because the terrain and skybox will be drawing over the previous frame anyways. Is something actually flickering? On my system it you simply see the contents of one of the previous frames.

I took a look at my init code and I'm initializing the device with D3DSWAPEFFECT_DISCARD. I'm assuming that my drivers happened to use a new frame buffer uses the same memory as one of the previous frames. I'm curious, what video card do you have?

Thanks for the info. I'll throw a black quad on the bottom to clear up this issue.

Share this post


Link to post
Share on other sites
Ok I've updated some things.
Optomized the font system and added a particle system, as well as adding a black quad to the bottom to stop the "eye hurting flicker" :)

The particle system uses point sprites, so it won't run on some of the olders cards anymore.

check it out and let me know what you all think :)

Edit: new version below

Edit. thanks for all the help everyone, it's greatly appreciated. I'm going to start learning shaders soon I think, so then I'll need lots of help ;)

[Edited by - SiliconMunky on July 13, 2005 8:08:00 PM]

Share this post


Link to post
Share on other sites
It would be nice if you didn't force the user to run at what works best for you (1280x1024, for example). Perhaps before you work on shaders and such, you might institute some more basic features such as configuration options (via a config file, or in-game options), and debugging. I would never have known that your demo wouldn't run on my system unless I saw your post that it required 1280x1024 resolution. My laptop has a Radeon 9600 Mobility chip and should run your demo fine, but the display only runs at 1024x768.

Share this post


Link to post
Share on other sites
Tested your new one and it's still working great.
I see the plane got an upgrade too. =)

FPS counter and resolution options would be nice.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this