Last Friday I spend an hour or two in massaging my tools pipeline so that all the polygons would be stored on a per area basis, and passing along the id tech 4 portal information along to my test app.
This morning I implemented portal rendering.
I don't have any screenshots because it's hard to show what you couldn't see anyway ;)
I need to implement a multi-camera system first before I can show anything useful.
The next step will be to store area information with the pages as well, so I can try an analytical solution to page VSD.
The same data can also be used to determine which light potentially casts light on which page.
Tuesday, July 20, 2010
Thursday, July 15, 2010
Bounds, Fragments and Updated tools
Labels:
Virtual-Texture
Progress has been slow with my virtual texture experiments because I've come to a point where I can't simply work on things iteratively and need big chunks of time to work on some things.
I've managed to do some things however.
The first thing I did was rewrite the whole layout of my virtual texture file & the way they are loaded so that page definitions are separated from the texture pieces (which I named fragments) that form them.
This will make it possible to eventually support things like procedural and dynamic textures.
It will also allow me to share fragments between pages, which for the time being, speeds up my virtual page generation a lot, which is useful when I need to make more modifications in the future.
It also made it possible to define that a page consists out of more than just a diffuse layer, and my virtual texture file now also contains normal and specular maps, although I don't actually use them yet.
Another thing I've done is calculate the bounds of each page, by clipping the pages' geometry by the page boundaries, and then calculating it's extends.
Here you can see the bounds being rendered around their pages.
It shows how doom 3's texture usage is horrible for virtual texturing, and I really should be merging geometry and projecting the textures onto it.
But not now, because it's a nice worst case situation for testing.
What I really want to do first is start ordering pages in the virtual texture by how close they are together in worldspace, and I want to try to see how better or worse an analytical solution to page visibility would perform.
But before I can do that, I need to implement VSD.
Right now I'm rendering the entire level each frame, but I really should be using doom 3's portal/area information to do some simple portal rendering instead.
Another thing I should be doing is to do the page assignments in the virtual texture on a per area basis, because this will improve page locality at lower resolution mip map levels.
Right now a page on one end of the level could sit right next to a page on the other end of the level.
At a lower resolution mip level, the two page bounds would be combined and the bounds would enclose the entire level.
This is obviously bad because the bounds would become increasingly unusable at lower resolution mips, but it also makes us load a page where it's parts will never be used at the same time.
I've managed to do some things however.
The first thing I did was rewrite the whole layout of my virtual texture file & the way they are loaded so that page definitions are separated from the texture pieces (which I named fragments) that form them.
This will make it possible to eventually support things like procedural and dynamic textures.
It will also allow me to share fragments between pages, which for the time being, speeds up my virtual page generation a lot, which is useful when I need to make more modifications in the future.
It also made it possible to define that a page consists out of more than just a diffuse layer, and my virtual texture file now also contains normal and specular maps, although I don't actually use them yet.
Another thing I've done is calculate the bounds of each page, by clipping the pages' geometry by the page boundaries, and then calculating it's extends.
Here you can see the bounds being rendered around their pages.
It shows how doom 3's texture usage is horrible for virtual texturing, and I really should be merging geometry and projecting the textures onto it.
But not now, because it's a nice worst case situation for testing.
What I really want to do first is start ordering pages in the virtual texture by how close they are together in worldspace, and I want to try to see how better or worse an analytical solution to page visibility would perform.
But before I can do that, I need to implement VSD.
Right now I'm rendering the entire level each frame, but I really should be using doom 3's portal/area information to do some simple portal rendering instead.
Another thing I should be doing is to do the page assignments in the virtual texture on a per area basis, because this will improve page locality at lower resolution mip map levels.
Right now a page on one end of the level could sit right next to a page on the other end of the level.
At a lower resolution mip level, the two page bounds would be combined and the bounds would enclose the entire level.
This is obviously bad because the bounds would become increasingly unusable at lower resolution mips, but it also makes us load a page where it's parts will never be used at the same time.
Thursday, July 8, 2010
3rd person story telling
Labels:
Random-Idea
Just had an interesting thought about game storytelling ...
First person story telling never seems to work very well, this is because you are in control and you can't be directed to play your part in someone else's story.
The more control someone tries to assert over you, the less freedom you have.
When you watch a movie, you sympathize with the characters you're seeing on the screen.
When you play a traditional first person game, you don't sympathize with yourself in the same way, because even though you control your character, you are never truly him or her.
You don't share that made up history with the character, you are just you put in the shoes of someone else and everybody pretending that you are that other person.
The first person games that have the best stories always have their stories revolve *around* the player, always trying to put the player into the center of the story in a somewhat fake way.
Half life does this the best because it lets most of it's story be told by other characters, and acted out by other characters.
So I was thinking, perhaps the story shouldn't centered around the player, but around other characters, and the player is simply there to, sort of, witness it.
Certainly the player would participate in the puzzles and obstacles, but when it comes to the story, the player wouldn't actually be the focal point.
The player wouldn't be the main character.
This would allow much more interesting characters in the story, or maybe even switching between multiple characters, like they do in series.
You would simply be the faceless guy/girl who goes along for the ride, so to speak.
Which explains why freeman never speaking in half life works so well.
First person story telling never seems to work very well, this is because you are in control and you can't be directed to play your part in someone else's story.
The more control someone tries to assert over you, the less freedom you have.
When you watch a movie, you sympathize with the characters you're seeing on the screen.
When you play a traditional first person game, you don't sympathize with yourself in the same way, because even though you control your character, you are never truly him or her.
You don't share that made up history with the character, you are just you put in the shoes of someone else and everybody pretending that you are that other person.
The first person games that have the best stories always have their stories revolve *around* the player, always trying to put the player into the center of the story in a somewhat fake way.
Half life does this the best because it lets most of it's story be told by other characters, and acted out by other characters.
So I was thinking, perhaps the story shouldn't centered around the player, but around other characters, and the player is simply there to, sort of, witness it.
Certainly the player would participate in the puzzles and obstacles, but when it comes to the story, the player wouldn't actually be the focal point.
The player wouldn't be the main character.
This would allow much more interesting characters in the story, or maybe even switching between multiple characters, like they do in series.
You would simply be the faceless guy/girl who goes along for the ride, so to speak.
Which explains why freeman never speaking in half life works so well.
Subscribe to:
Posts (Atom)
