mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0027256: Visualization, Path Tracing - add support of alpha-channel of texture
Regenerate resource files.
This commit is contained in:
parent
383c6c9fb2
commit
f411f94fac
@ -41,6 +41,7 @@ Graphic3d_NOT_2D_MAPLE,
|
|||||||
Graphic3d_NOT_2D_MARBLE,
|
Graphic3d_NOT_2D_MARBLE,
|
||||||
Graphic3d_NOT_2D_MOTTLED,
|
Graphic3d_NOT_2D_MOTTLED,
|
||||||
Graphic3d_NOT_2D_RAIN,
|
Graphic3d_NOT_2D_RAIN,
|
||||||
|
Graphic3d_NOT_2D_CHESS,
|
||||||
Graphic3d_NOT_2D_UNKNOWN
|
Graphic3d_NOT_2D_UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -42,7 +42,8 @@ static const char *NameOfTexture_to_FileName[] =
|
|||||||
"2d_maple.rgb",
|
"2d_maple.rgb",
|
||||||
"2d_marble.rgb",
|
"2d_marble.rgb",
|
||||||
"2d_mottled.rgb",
|
"2d_mottled.rgb",
|
||||||
"2d_rain.rgb"
|
"2d_rain.rgb",
|
||||||
|
"2d_chess.rgba"
|
||||||
};
|
};
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
|
@ -759,10 +759,16 @@ vec4 PathTrace (in SRay theRay, in vec3 theInverse)
|
|||||||
aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),
|
aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),
|
||||||
dot (aTrsfRow2, aTexCoord));
|
dot (aTrsfRow2, aTexCoord));
|
||||||
|
|
||||||
vec3 aTexColor = textureLod (
|
vec4 aTexColor = textureLod (
|
||||||
sampler2D (uTextureSamplers[int (aMaterial.Kd.w)]), aTexCoord.st, 0.f).rgb;
|
sampler2D (uTextureSamplers[int (aMaterial.Kd.w)]), aTexCoord.st, 0.f);
|
||||||
|
|
||||||
aMaterial.Kd.rgb *= aTexColor * aTexColor; // de-gamma correction (for gamma = 2)
|
aMaterial.Kd.rgb *= (aTexColor.rgb, aTexColor.rgb) * aTexColor.w; // de-gamma correction (for gamma = 2)
|
||||||
|
|
||||||
|
if (aTexColor.w != 1.0f)
|
||||||
|
{
|
||||||
|
// mix transparency BTDF with texture alpha-channel
|
||||||
|
aMaterial.Kt = (UNIT - aTexColor.www) + aTexColor.w * aMaterial.Kt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -969,11 +969,14 @@ vec4 Radiance (in SRay theRay, in vec3 theInverse)
|
|||||||
aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),
|
aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),
|
||||||
dot (aTrsfRow2, aTexCoord));
|
dot (aTrsfRow2, aTexCoord));
|
||||||
|
|
||||||
vec3 aTexColor = textureLod (
|
vec4 aTexColor = textureLod (
|
||||||
sampler2D (uTextureSamplers[int(aDiffuse.w)]), aTexCoord.st, 0.f).rgb;
|
sampler2D (uTextureSamplers[int(aDiffuse.w)]), aTexCoord.st, 0.f);
|
||||||
|
|
||||||
aDiffuse.rgb *= aTexColor;
|
aDiffuse.rgb *= aTexColor.rgb;
|
||||||
aAmbient.rgb *= aTexColor;
|
aAmbient.rgb *= aTexColor.rgb;
|
||||||
|
|
||||||
|
// keep refractive index untouched (Z component)
|
||||||
|
aOpacity.xy = vec2 (aTexColor.w * aOpacity.x, 1.0f - aTexColor.w * aOpacity.x);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -762,10 +762,16 @@ static const char Shaders_PathtraceBase_fs[] =
|
|||||||
" aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),\n"
|
" aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),\n"
|
||||||
" dot (aTrsfRow2, aTexCoord));\n"
|
" dot (aTrsfRow2, aTexCoord));\n"
|
||||||
"\n"
|
"\n"
|
||||||
" vec3 aTexColor = textureLod (\n"
|
" vec4 aTexColor = textureLod (\n"
|
||||||
" sampler2D (uTextureSamplers[int (aMaterial.Kd.w)]), aTexCoord.st, 0.f).rgb;\n"
|
" sampler2D (uTextureSamplers[int (aMaterial.Kd.w)]), aTexCoord.st, 0.f);\n"
|
||||||
"\n"
|
"\n"
|
||||||
" aMaterial.Kd.rgb *= aTexColor * aTexColor; // de-gamma correction (for gamma = 2)\n"
|
" aMaterial.Kd.rgb *= (aTexColor.rgb, aTexColor.rgb) * aTexColor.w; // de-gamma correction (for gamma = 2)\n"
|
||||||
|
"\n"
|
||||||
|
" if (aTexColor.w != 1.0f)\n"
|
||||||
|
" {\n"
|
||||||
|
" // mix transparency BTDF with texture alpha-channel\n"
|
||||||
|
" aMaterial.Kt = (UNIT - aTexColor.www) + aTexColor.w * aMaterial.Kt;\n"
|
||||||
|
" }\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -972,11 +972,14 @@ static const char Shaders_RaytraceBase_fs[] =
|
|||||||
" aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),\n"
|
" aTexCoord.st = vec2 (dot (aTrsfRow1, aTexCoord),\n"
|
||||||
" dot (aTrsfRow2, aTexCoord));\n"
|
" dot (aTrsfRow2, aTexCoord));\n"
|
||||||
"\n"
|
"\n"
|
||||||
" vec3 aTexColor = textureLod (\n"
|
" vec4 aTexColor = textureLod (\n"
|
||||||
" sampler2D (uTextureSamplers[int(aDiffuse.w)]), aTexCoord.st, 0.f).rgb;\n"
|
" sampler2D (uTextureSamplers[int(aDiffuse.w)]), aTexCoord.st, 0.f);\n"
|
||||||
"\n"
|
"\n"
|
||||||
" aDiffuse.rgb *= aTexColor;\n"
|
" aDiffuse.rgb *= aTexColor.rgb;\n"
|
||||||
" aAmbient.rgb *= aTexColor;\n"
|
" aAmbient.rgb *= aTexColor.rgb;\n"
|
||||||
|
"\n"
|
||||||
|
" // keep refractive index untouched (Z component)\n"
|
||||||
|
" aOpacity.xy = vec2 (aTexColor.w * aOpacity.x, 1.0f - aTexColor.w * aOpacity.x);\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
BIN
src/Textures/2d_chess.rgba
Normal file
BIN
src/Textures/2d_chess.rgba
Normal file
Binary file not shown.
@ -20,6 +20,7 @@ icon:::2d_MatraDatavision.rgb
|
|||||||
icon:::2d_mottled.rgb
|
icon:::2d_mottled.rgb
|
||||||
icon:::2d_rain.rgb
|
icon:::2d_rain.rgb
|
||||||
icon:::2d_rock.rgb
|
icon:::2d_rock.rgb
|
||||||
|
icon:::2d_chess.rgba
|
||||||
icon:::env_clouds.rgb
|
icon:::env_clouds.rgb
|
||||||
icon:::env_cv.rgb
|
icon:::env_cv.rgb
|
||||||
icon:::env_lines.rgb
|
icon:::env_lines.rgb
|
||||||
|
13
tests/v3d/raytrace/sample_ball_alpha
Normal file
13
tests/v3d/raytrace/sample_ball_alpha
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
puts "============"
|
||||||
|
puts "Visualization - Path Tracing, Ball sample"
|
||||||
|
puts "============"
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_ball.tcl
|
||||||
|
|
||||||
|
vtexture ball 21 -scale 0.1 0.1
|
||||||
|
vsetmaterial ball plaster
|
||||||
|
vbsdf ball -fresnel Constant 0.0
|
||||||
|
|
||||||
|
vfps 100
|
||||||
|
vdump $imagedir/${casename}_zoom.png
|
Loading…
x
Reference in New Issue
Block a user