• Create Account

### #Actualgboxentertainment

Posted 14 February 2013 - 04:15 AM

Why waste all those resources rasterizing everything multiple times per frame? That being said, if you really do have something that needs to be re-rasterized, you can use Epic's trick of marking things as static and checking each frame to see if they actually need to be re-voxelized.

For this scene:

Dominant axis voxelization (anisotropic sampling enabled):

Static pre-voxelization once during initialization: ~25 to 35 fps

Dynamic voxelization per frame: ~25 to 35fps

Majority of the cost is actually in the cone tracing, which is why when I turn off anisotropic sampling there is such a massive increase in framerate - however, I have found out that anisotropic filtering is required for more physically accurate lighting, particularly with specular where the cone ratio is much smaller.

Of course, if I implemented an octree system, then the cost of building the octree might be too much for a per frame basis. Likewise if I had a more complex scene. Ultimately, the plan for this particular test scene was to keep the walls and floor static and the objects dynamic so that I can move them around to demonstrate the lighting effect. However, this is low on my priority list - something that I would implement at the end after I've corrected all noticeable artifacts.

At the moment, my aim is to get the lighting as accurate as possible. Then I would worry about performance. This is a hobby research project - I am not trying to create a game.

Anyhow, check out my latest semi-success in soft shadowing using vct:

float sampleVoxShadows(vec3 pos, vec3 dir, float lod)
{
float shadowSamp = textureLod(voxTex, pos, lod).w;

}

float shadowConeTrace(vec3 o, vec3 d, float coneRatio, float maxDist)
{
vec3 samplePos = o;
float sampleVal = 0.0;
float accum = 0.0;
float minDiam = 1/voxDim;
float startDist = minDiam;

float dist = startDist;
while(dist <= maxDist && accum < 1.0)
{
float sampleDiam = max(minDiam, coneRatio*dist);
float sampleLOD = log2(sampleDiam*voxDim);
vec3 samplePos = o + d*dist;

float sampleWt = (1.0 - accum);
accum += sampleVal * sampleWt;

dist += sampleDiam;
}

return accum;
}


	float shadow = 0;

fColor.xyz = ((color.xyz*(1-shadow)+iDiffuse.xyz)*baseCol.xyz*texMap.xyz+spec); 

I just need to figure out a way to remove the voxelized self-shadowing artifacts that are apparent on the blue sphere.

I also need to work out how to remove or reduce the add-on effect that the radiance has on direct lighting.

### #4gboxentertainment

Posted 13 February 2013 - 08:03 AM

Why waste all those resources rasterizing everything multiple times per frame? That being said, if you really do have something that needs to be re-rasterized, you can use Epic's trick of marking things as static and checking each frame to see if they actually need to be re-voxelized.

For this scene:

Dominant axis voxelization (anisotropic sampling enabled):

Static pre-voxelization once during initialization: ~25 to 35 fps

Dynamic voxelization per frame: ~25 to 35fps

Majority of the cost is actually in the cone tracing, which is why when I turn off anisotropic sampling there is such a massive increase in framerate - however, I have found out that anisotropic filtering is required for more physically accurate lighting, particularly with specular where the cone ratio is much smaller.

Of course, if I implemented an octree system, then the cost of building the octree might be too much for a per frame basis. Likewise if I had a more complex scene. Ultimately, the plan for this particular test scene was to keep the walls and floor static and the objects dynamic so that I can move them around to demonstrate the lighting effect. However, this is low on my priority list - something that I would implement at the end after I've corrected all noticeable artifacts.

At the moment, my aim is to get the lighting as accurate as possible. Then I would worry about performance. This is a hobby research project - I am not trying to create a game.

Anyhow, check out my latest semi-success in soft shadowing using vct:

float sampleVoxShadows(vec3 pos, vec3 dir, float lod)
{
float shadowSamp = textureLod(voxTex, pos, lod).w;

}

float shadowConeTrace(vec3 o, vec3 d, float coneRatio, float maxDist)
{
vec3 samplePos = o;
float sampleVal = 0.0;
float accum = 0.0;
float minDiam = 0.5/voxDim;
float startDist = minDiam;

float dist = startDist;
while(dist <= maxDist && accum < 1.0)
{
float sampleDiam = max(minDiam, coneRatio*dist);
float sampleLOD = log2(sampleDiam*voxDim);
vec3 samplePos = o + d*dist;

float sampleWt = (1.0 - accum);
accum += sampleVal * sampleWt;

dist += sampleDiam;
}

return accum;
}


	float shadow = 0;

fColor.xyz = ((color.xyz+iDiffuse.xyz)*(1-shadow)*baseCol.xyz*texMap.xyz+spec); 

I just need to figure out a way to remove the voxelized self-shadowing artifacts that are apparent on the blue sphere.

I also need to work out how to remove or reduce the add-on effect that the radiance has on direct lighting.

### #3gboxentertainment

Posted 13 February 2013 - 08:03 AM

Why waste all those resources rasterizing everything multiple times per frame? That being said, if you really do have something that needs to be re-rasterized, you can use Epic's trick of marking things as static and checking each frame to see if they actually need to be re-voxelized.

For this scene:

Dominant axis voxelization (anisotropic sampling enabled):

Static pre-voxelization once during initialization: ~25 to 35 fps

Dynamic voxelization per frame: ~25 to 35fps

Majority of the cost is actually in the cone tracing, which is why when I turn off anisotropic sampling there is such a massive increase in framerate - however, I have found out that anisotropic filtering is required for more physically accurate lighting, particularly with specular where the cone ratio is much smaller.

Of course, if I implemented an octree system, then the cost of building the octree might be too much for a per frame basis. Likewise if I had a more complex scene. Ultimately, the plan for this particular test scene was to keep the walls and floor static and the objects dynamic so that I can move them around to demonstrate the lighting effect. However, this is low on my priority list - something that I would implement at the end after I've corrected all noticeable artifacts.

At the moment, my aim is to get the lighting as accurate as possible. Then I would worry about performance. This is a hobby research project - I am not trying to create a game.

Anyhow, check out my latest semi-success in soft shadowing using vct:

float sampleVoxShadows(vec3 pos, vec3 dir, float lod)
{
float shadowSamp = textureLod(voxTex, pos, lod).w;

}

float shadowConeTrace(vec3 o, vec3 d, float coneRatio, float maxDist)
{
vec3 samplePos = o;
float sampleVal = 0.0;
float accum = 0.0;
float minDiam = 0.5/voxDim;
float startDist = minDiam;

float dist = startDist;
while(dist <= maxDist && accum < 1.0)
{
float sampleDiam = max(minDiam, coneRatio*dist);
float sampleLOD = log2(sampleDiam*voxDim);
vec3 samplePos = o + d*dist;
//sampleVal = dist < 0.1 ? 0 : sampleVoxShadows(samplePos, -d, sampleLOD);

float sampleWt = (1.0 - accum);
accum += sampleVal * sampleWt;

dist += sampleDiam;
}

return accum;
}


	float shadow = 0;

fColor.xyz = ((color.xyz+iDiffuse.xyz)*(1-shadow)*baseCol.xyz*texMap.xyz+spec); 

I just need to figure out a way to remove the voxelized self-shadowing artifacts that are apparent on the blue sphere.

I also need to work out how to remove or reduce the add-on effect that the radiance has on direct lighting.

### #2gboxentertainment

Posted 13 February 2013 - 07:58 AM

Why waste all those resources rasterizing everything multiple times per frame? That being said, if you really do have something that needs to be re-rasterized, you can use Epic's trick of marking things as static and checking each frame to see if they actually need to be re-voxelized.

For this scene:

Dominant axis voxelization (anisotropic sampling enabled):

Static pre-voxelization once during initialization: ~25 to 35 fps

Dynamic voxelization per frame: ~25 to 35fps

Majority of the cost is actually in the cone tracing, which is why when I turn off anisotropic sampling there is such a massive increase in framerate - however, I have found out that anisotropic filtering is required for more physically accurate lighting, particularly with specular where the cone ratio is much smaller.

Of course, if I implemented an octree system, then the cost of building the octree might be too much for a per frame basis. Likewise if I had a more complex scene. Ultimately, the plan for this particular test scene was to keep the walls and floor static and the objects dynamic so that I can move them around to demonstrate the lighting effect. However, this is low on my priority list - something that I would implement at the end after I've corrected all noticeable artifacts.

At the moment, my aim is to get the lighting as accurate as possible. Then I would worry about performance. This is a hobby research project - I am not trying to create a game.

Anyhow, check out my latest semi-success in soft shadowing using vct:

I just need to figure out a way to remove the voxelized self-shadowing artifacts that are apparent on the blue sphere.

I also need to work out how to remove or reduce the add-on effect that the radiance has on direct lighting.

### #1gboxentertainment

Posted 13 February 2013 - 07:55 AM

Why waste all those resources rasterizing everything multiple times per frame? That being said, if you really do have something that needs to be re-rasterized, you can use Epic's trick of marking things as static and checking each frame to see if they actually need to be re-voxelized.

For this scene:

Dominant axis voxelization (anisotropic sampling enabled):

Static pre-voxelization once during initialization: ~25 to 35 fps

Dynamic voxelization per frame: ~25 to 35fps

Majority of the cost is actually in the cone tracing, which is why when I turn off anisotropic sampling there is such a massive increase in framerate - however, I have found out that anisotropic filtering is required for more physically accurate lighting, particularly with specular where the cone ratio is much smaller.

Of course, if I implemented an octree system, then the cost of building the octree might be too much for a per frame basis. Likewise if I had a more complex scene. Ultimately, the plan for this particular test scene was to keep the walls and floor static and the objects dynamic so that I can move them around to demonstrate the lighting effect. However, this is low on my priority list - something that I would implement at the end after I've corrected all noticeable artifacts.

At the moment, my aim is to get the lighting as accurate as possible. Then I would worry about performance. This is a hobby research project - I am not trying to create a game.

Anyhow, check out my latest semi-success in soft shadowing using vct: