Working on fixing colors
This commit is contained in:
parent
5e2ae73649
commit
e154f33849
|
@ -297,6 +297,38 @@ vec4 RayMarch(vec2 coords, vec2 offset)
|
||||||
|
|
||||||
calcDist(ray_pos.xyz, minDist);
|
calcDist(ray_pos.xyz, minDist);
|
||||||
|
|
||||||
|
vec3 color1 = vec3(0.0), color2 = vec3(0.0);
|
||||||
|
float closestDist = 999999.0, secondClosestDist = 999999.0;
|
||||||
|
int closestIndex = -1, secondClosestIndex = -1;
|
||||||
|
|
||||||
|
for (int i = 0; i < primitives.length(); i++) {
|
||||||
|
float dist = sdf(ray_pos.xyz, primitives[i]);
|
||||||
|
// Update closest and second closest distances and indices
|
||||||
|
if (dist < closestDist) {
|
||||||
|
secondClosestDist = closestDist;
|
||||||
|
secondClosestIndex = closestIndex;
|
||||||
|
closestDist = dist;
|
||||||
|
closestIndex = i;
|
||||||
|
}
|
||||||
|
else if (dist < secondClosestDist) {
|
||||||
|
secondClosestDist = dist;
|
||||||
|
secondClosestIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (closestIndex != -1) {
|
||||||
|
color1 = primitives[closestIndex].diffuse_color.rgb;
|
||||||
|
}
|
||||||
|
if (secondClosestIndex != -1) {
|
||||||
|
color2 = primitives[secondClosestIndex].diffuse_color.rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate weight based on distances
|
||||||
|
float weight = weightFunction(closestDist, secondClosestDist, smoothing);
|
||||||
|
|
||||||
|
// Blend colors based on weight
|
||||||
|
vec3 finalColor = mix(color1, color2, weight);
|
||||||
|
|
||||||
for (int i = 0; i < primitives.length(); i++)
|
for (int i = 0; i < primitives.length(); i++)
|
||||||
{
|
{
|
||||||
float weight = weightFunction(minDist, smoothing, epsilon);
|
float weight = weightFunction(minDist, smoothing, epsilon);
|
||||||
|
@ -323,7 +355,8 @@ vec4 RayMarch(vec2 coords, vec2 offset)
|
||||||
float distLight;
|
float distLight;
|
||||||
vec3 lw;
|
vec3 lw;
|
||||||
ambient_color = vec4(accumulatedAmbient.rgb, 1.0);
|
ambient_color = vec4(accumulatedAmbient.rgb, 1.0);
|
||||||
diffuse_color = vec4(accumulatedDiffuse.rgb, 1.0);
|
//diffuse_color = vec4(accumulatedDiffuse.rgb, 1.0);
|
||||||
|
diffuse_color.rgb = finalColor;
|
||||||
normals = estimateNormals(ray_pos.xyz, epsilon);
|
normals = estimateNormals(ray_pos.xyz, epsilon);
|
||||||
|
|
||||||
for (int i = 0; i < lights.length(); i++)
|
for (int i = 0; i < lights.length(); i++)
|
||||||
|
@ -353,7 +386,7 @@ vec4 RayMarch(vec2 coords, vec2 offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < lights.length(); i++) lightColor += renderLight(lights[i].position);
|
for (int i = 0; i < lights.length(); i++) lightColor += renderLight(lights[i].position);
|
||||||
return vec4(mix(color, lightColor, lightColor.a).rgb, 0.0);
|
return mix(color, lightColor, lightColor.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
|
|
Loading…
Reference in New Issue