[osg-users] PSSM segfaulting in cull()?
Adrian Egli OpenSceneGraph (3D)
3dhelp at gmail.com
Mon May 19 23:27:03 PDT 2008
Which version are you using the latest SVN, the latest PSSM (see post from
friday to yesterday) ?
2008/5/19 Alejandro Segovia <asegovia at linux.com.uy>:
>
> On Mon, May 19, 2008 at 6:03 PM, Alejandro Segovia <asegovia at linux.com.uy>
> wrote:
>
>> Hello List,
>>
>> I'm having a hard time using PSSM (or anything besides ShadowTexture for
>> that matter) to add shadows to my scene.
>>
>> I've got some initialization code inspired in the osgshadow example, which
>> seems to work fine when I pass the --NVidea parameter, but when I try the
>> very same technique in my code, it just crashes inside the PSSM's cull()
>> method.
>>
>> This is the backtrace I get from the core dump:
>>
>> #0 0xb6f961c9 in osgShadow::ParallelSplitShadowMap::cull ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgShadow.so.25
>> #1 0xb6f87656 in osgShadow::ShadowTechnique::traverse ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgShadow.so.25
>> #2 0xb6f8e7c0 in osgShadow::ShadowedScene::traverse ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgShadow.so.25
>> #3 0xb6d38196 in osgUtil::CullVisitor::apply ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgUtil.so.25
>> #4 0xb6f8eb11 in osgShadow::ShadowedScene::accept ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgShadow.so.25
>> #5 0xb726fa84 in osg::Group::traverse ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosg.so.25
>> #6 0xb6d38196 in osgUtil::CullVisitor::apply ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgUtil.so.25
>> #7 0xb727095f in osg::Group::accept ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosg.so.25
>> #8 0xb6dc89f7 in osgUtil::SceneView::cullStage ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgUtil.so.25
>> #9 0xb6dc7cd6 in osgUtil::SceneView::cull ()
>> from /usr/local/OpenSceneGraph/2.2.0/lib/libosgUtil.so.25
>> #10 0xb6a596ef in Canvas::customEvent (this=0x80c4780,
>> event=0x80deb60) at Canvas.cpp:200
>>
>> Canvas is just a custom class derived from QGLWidget.
>>
>> This is the initialization code I'm using, please note the ShadowedScene
>> node is not the root of the scene graph.
>>
>> osg::ref_ptr<osgShadow::ParallelSplitShadowMap> shadowTech =
>> new osgShadow::ParallelSplitShadowMap(NULL, 3);
>> shadowTech->setTextureResolution(1024);
>> shadowTech->setMinNearDistanceForSplits(0);
>> shadowTech->setMaxFarDistance(0);
>> shadowTech->setMoveVCamBehindRCamFactor(0);
>> double polyoffsetfactor = 10.0f; //-0.02;
>> double polyoffsetunit = 20.0f; //1.0;
>>
>> shadowTech->setPolygonOffset(osg::Vec2(polyoffsetfactor,polyoffsetunit));
>>
>> _shadowNode = new osgShadow::ShadowedScene();
>> _shadowNode->setShadowTechnique(shadowTech.get());
>>
>> _shadowNode->setCastsShadowTraversalMask(0x2|0x8);
>> _shadowNode->setReceivesShadowTraversalMask(0x1|0x8);
>>
>> I'm also using SceneView objects to hold the camera information such as
>> the projection and modelview matrices. There are two lights in the scene and
>> only one object (a floor).
>>
>> Thanks in advance,
>> Alejandro Segovia.-
>>
>> --
>> Varrojo at Linux
>> http://varrojo.linuxuruguay.org
>
>
>
> Setting the OSG_NOTIFY_LEVEL variable to DEBUG in order to determine what
> could possibly be wrong, I noticed the shader program is never compiled for
> PSSM! Is there some way to force program compilation in OSG?
>
> I attach the dump for osgshadow and then for my application. Notice mine
> never gets its shader compiled.
>
> Dump for osgshadow:
>
> ...
> View::init()
> ParallelSplitShadowMap : Texture ID=0 Resolution=1024
> CullSettings::readEnvironmentalVariables()
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> ParallelSplitShadowMap : Texture ID=1 Resolution=1024
> CullSettings::readEnvironmentalVariables()
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> ParallelSplitShadowMap : Texture ID=2 Resolution=1024
> CullSettings::readEnvironmentalVariables()
>
> ParallelSplitShadowMap: GLSL shader code:
> -------------------------------------------------------------------
> uniform sampler2D baseTexture;
> uniform sampler2D randomTexture;
> uniform float enableBaseTexture;
> uniform sampler2DShadow shadowTexture0;
> uniform float zShadow0;
> uniform sampler2DShadow shadowTexture1;
> uniform float zShadow1;
> uniform sampler2DShadow shadowTexture2;
> uniform float zShadow2;
> void main(void)
> {
> vec4 coord = gl_FragCoord;
> float shadow0 = shadow2DProj( shadowTexture0,gl_TexCoord[1]).r;
> vec4 random0 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[1].st);
> float shadow10 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.r*vec4(-1,-1,0,0)).r;
> float shadow20 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.g*vec4(1,-1,0,0)).r;
> float shadow30 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.b*vec4(1,1,0,0)).r;
> float shadow40 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.a*vec4(-1,1,0,0)).r;
> shadow0 = shadow0 + shadow10 + shadow20 + shadow30 + shadow40;
> shadow0 = shadow0*0.2;
> float shadow1 = shadow2DProj( shadowTexture1,gl_TexCoord[2]).r;
> vec4 random1 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[2].st);
> float shadow11 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.r*vec4(-1,-1,0,0)).r;
> float shadow21 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.g*vec4(1,-1,0,0)).r;
> float shadow31 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.b*vec4(1,1,0,0)).r;
> float shadow41 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.a*vec4(-1,1,0,0)).r;
> shadow1 = shadow1 + shadow11 + shadow21 + shadow31 + shadow41;
> shadow1 = shadow1*0.2;
> float shadow2 = shadow2DProj( shadowTexture2,gl_TexCoord[3]).r;
> vec4 random2 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[3].st);
> float shadow12 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.r*vec4(-1,-1,0,0)).r;
> float shadow22 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.g*vec4(1,-1,0,0)).r;
> float shadow32 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.b*vec4(1,1,0,0)).r;
> float shadow42 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.a*vec4(-1,1,0,0)).r;
> shadow2 = shadow2 + shadow12 + shadow22 + shadow32 + shadow42;
> shadow2 = shadow2*0.2;
> float term0 = (1.0-shadow0);
> float term1 = (1.0-shadow1);
> float term2 = (1.0-shadow2);
> float v = clamp(term0+term1+term2,0.0,1.0);
> vec4 color = gl_Color;
> vec4 texcolor = texture2D(baseTexture,gl_TexCoord[0].st);
> float enableBaseTextureFilter = enableBaseTexture*(1.0 -
> step(texcolor.x+texcolor.y+texcolor.z+texcolor.a,0.0));
> vec4 colorTex = color*texcolor;
> gl_FragColor = (color*(1.0-enableBaseTextureFilter) +
> colorTex*enableBaseTextureFilter)*(1.0-0.30*v);
> }
>
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> cull_draw() 0x8074200
> OpenGL extensions supported by installed OpenGL drivers are:
> GL_ARB_color_buffer_float
> GL_ARB_depth_texture
> GL_ARB_draw_buffers
> GL_ARB_fragment_program
> GL_ARB_fragment_program_shadow
> GL_ARB_fragment_shader
> GL_ARB_half_float_pixel
> GL_ARB_imaging
> GL_ARB_multisample
> GL_ARB_multitexture
> GL_ARB_occlusion_query
> GL_ARB_pixel_buffer_object
> GL_ARB_point_parameters
> GL_ARB_point_sprite
> GL_ARB_shader_objects
> GL_ARB_shading_language_100
> GL_ARB_shadow
> GL_ARB_texture_border_clamp
> GL_ARB_texture_compression
> GL_ARB_texture_cube_map
> GL_ARB_texture_env_add
> GL_ARB_texture_env_combine
> GL_ARB_texture_env_dot3
> GL_ARB_texture_float
> GL_ARB_texture_mirrored_repeat
> GL_ARB_texture_non_power_of_two
> GL_ARB_texture_rectangle
> GL_ARB_transpose_matrix
> GL_ARB_vertex_buffer_object
> GL_ARB_vertex_program
> GL_ARB_vertex_shader
> GL_ARB_window_pos
> GL_ATI_draw_buffers
> GL_ATI_texture_float
> GL_ATI_texture_mirror_once
> GL_EXTX_framebuffer_mixed_formats
> GL_EXT_Cg_shader
> GL_EXT_abgr
> GL_EXT_bgra
> GL_EXT_bindable_uniform
> GL_EXT_blend_color
> GL_EXT_blend_equation_separate
> GL_EXT_blend_func_separate
> GL_EXT_blend_minmax
> GL_EXT_blend_subtract
> GL_EXT_compiled_vertex_array
> GL_EXT_depth_bounds_test
> GL_EXT_draw_buffers2
> GL_EXT_draw_instanced
> GL_EXT_draw_range_elements
> GL_EXT_fog_coord
> GL_EXT_framebuffer_blit
> GL_EXT_framebuffer_multisample
> GL_EXT_framebuffer_object
> GL_EXT_framebuffer_sRGB
> GL_EXT_geometry_shader4
> GL_EXT_gpu_program_parameters
> GL_EXT_gpu_shader4
> GL_EXT_multi_draw_arrays
> GL_EXT_packed_depth_stencil
> GL_EXT_packed_float
> GL_EXT_packed_pixels
> GL_EXT_pixel_buffer_object
> GL_EXT_point_parameters
> GL_EXT_rescale_normal
> GL_EXT_secondary_color
> GL_EXT_separate_specular_color
> GL_EXT_shadow_funcs
> GL_EXT_stencil_two_side
> GL_EXT_stencil_wrap
> GL_EXT_texture3D
> GL_EXT_texture_array
> GL_EXT_texture_buffer_object
> GL_EXT_texture_compression_latc
> GL_EXT_texture_compression_rgtc
> GL_EXT_texture_compression_s3tc
> GL_EXT_texture_cube_map
> GL_EXT_texture_edge_clamp
> GL_EXT_texture_env_add
> GL_EXT_texture_env_combine
> GL_EXT_texture_env_dot3
> GL_EXT_texture_filter_anisotropic
> GL_EXT_texture_integer
> GL_EXT_texture_lod
> GL_EXT_texture_lod_bias
> GL_EXT_texture_mirror_clamp
> GL_EXT_texture_object
> GL_EXT_texture_sRGB
> GL_EXT_texture_shared_exponent
> GL_EXT_timer_query
> GL_EXT_vertex_array
> GL_IBM_rasterpos_clip
> GL_IBM_texture_mirrored_repeat
> GL_KTX_buffer_region
> GL_NVX_conditional_render
> GL_NV_blend_square
> GL_NV_conditional_render
> GL_NV_copy_depth_to_color
> GL_NV_depth_buffer_float
> GL_NV_depth_clamp
> GL_NV_fence
> GL_NV_float_buffer
> GL_NV_fog_distance
> GL_NV_fragment_program
> GL_NV_fragment_program2
> GL_NV_fragment_program_option
> GL_NV_framebuffer_multisample_coverage
> GL_NV_geometry_shader4
> GL_NV_gpu_program4
> GL_NV_half_float
> GL_NV_light_max_exponent
> GL_NV_multisample_coverage
> GL_NV_multisample_filter_hint
> GL_NV_occlusion_query
> GL_NV_packed_depth_stencil
> GL_NV_parameter_buffer_object
> GL_NV_pixel_data_range
> GL_NV_point_sprite
> GL_NV_primitive_restart
> GL_NV_register_combiners
> GL_NV_register_combiners2
> GL_NV_texgen_reflection
> GL_NV_texture_compression_vtc
> GL_NV_texture_env_combine4
> GL_NV_texture_expand_normal
> GL_NV_texture_rectangle
> GL_NV_texture_shader
> GL_NV_texture_shader2
> GL_NV_texture_shader3
> GL_NV_transform_feedback
> GL_NV_vertex_array_range
> GL_NV_vertex_array_range2
> GL_NV_vertex_program
> GL_NV_vertex_program1_1
> GL_NV_vertex_program2
> GL_NV_vertex_program2_option
> GL_NV_vertex_program3
> GL_S3_s3tc
> GL_SGIS_generate_mipmap
> GL_SGIS_texture_lod
> GL_SGIX_depth_texture
> GL_SGIX_shadow
> GL_SUN_slice_accum
> OpenGL extension 'GL_ARB_vertex_program' is supported.
> OpenGL extension 'GL_EXT_secondary_color' is supported.
> OpenGL extension 'GL_EXT_fog_coord' is supported.
> OpenGL extension 'GL_ARB_multitexture' is supported.
> OpenGL extension 'GL_NV_occlusion_query' is supported.
> OpenGL extension 'GL_ARB_occlusion_query' is supported.
> OpenGL extension 'GL_EXT_timer_query' is supported.
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> OpenGL extension '' is not supported.
> OpenGL extension 'GL_EXT_framebuffer_object' is supported.
> OpenGL extension 'GL_ARB_vertex_program' is supported.
> OpenGL extension 'GL_ARB_fragment_program' is supported.
> OpenGL extension 'GL_ARB_shader_objects' is supported.
> OpenGL extension 'GL_ARB_vertex_shader' is supported.
> OpenGL extension 'GL_ARB_fragment_shader' is supported.
> OpenGL extension 'GL_ARB_shading_language_100' is supported.
> glVersion=2.1, isGlslSupported=YES, glslLanguageVersion=1.2
> OpenGL extension 'GL_ARB_pixel_buffer_object' is supported.
> Setting up osg::Camera::FRAME_BUFFER_OBJECT
> OpenGL extension 'GL_EXT_texture_filter_anisotropic' is supported.
> OpenGL extension 'GL_EXT_texture_compression_s3tc' is supported.
> OpenGL extension 'GL_ARB_shadow' is supported.
> OpenGL extension 'GL_ARB_shadow_ambient' is not supported.
> OpenGL extension 'GL_APPLE_client_storage' is not supported.
> OpenGL extension 'GL_EXT_texture_integer' is supported.
> Setting up osg::Camera::FRAME_BUFFER_OBJECT
> Setting up osg::Camera::FRAME_BUFFER_OBJECT
> Setting up osg::Camera::FRAME_BUFFER
>
> Compiling FRAGMENT source:
> uniform sampler2D baseTexture;
> uniform sampler2D randomTexture;
> uniform float enableBaseTexture;
> uniform sampler2DShadow shadowTexture0;
> uniform float zShadow0;
> uniform sampler2DShadow shadowTexture1;
> uniform float zShadow1;
> uniform sampler2DShadow shadowTexture2;
> uniform float zShadow2;
> void main(void)
> {
> vec4 coord = gl_FragCoord;
> float shadow0 = shadow2DProj( shadowTexture0,gl_TexCoord[1]).r;
> vec4 random0 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[1].st);
> float shadow10 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.r*vec4(-1,-1,0,0)).r;
> float shadow20 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.g*vec4(1,-1,0,0)).r;
> float shadow30 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.b*vec4(1,1,0,0)).r;
> float shadow40 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.a*vec4(-1,1,0,0)).r;
> shadow0 = shadow0 + shadow10 + shadow20 + shadow30 + shadow40;
> shadow0 = shadow0*0.2;
> float shadow1 = shadow2DProj( shadowTexture1,gl_TexCoord[2]).r;
> vec4 random1 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[2].st);
> float shadow11 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.r*vec4(-1,-1,0,0)).r;
> float shadow21 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.g*vec4(1,-1,0,0)).r;
> float shadow31 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.b*vec4(1,1,0,0)).r;
> float shadow41 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.a*vec4(-1,1,0,0)).r;
> shadow1 = shadow1 + shadow11 + shadow21 + shadow31 + shadow41;
> shadow1 = shadow1*0.2;
> float shadow2 = shadow2DProj( shadowTexture2,gl_TexCoord[3]).r;
> vec4 random2 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[3].st);
> float shadow12 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.r*vec4(-1,-1,0,0)).r;
> float shadow22 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.g*vec4(1,-1,0,0)).r;
> float shadow32 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.b*vec4(1,1,0,0)).r;
> float shadow42 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.a*vec4(-1,1,0,0)).r;
> shadow2 = shadow2 + shadow12 + shadow22 + shadow32 + shadow42;
> shadow2 = shadow2*0.2;
> float term0 = (1.0-shadow0);
> float term1 = (1.0-shadow1);
> float term2 = (1.0-shadow2);
> float v = clamp(term0+term1+term2,0.0,1.0);
> vec4 color = gl_Color;
> vec4 texcolor = texture2D(baseTexture,gl_TexCoord[0].st);
> float enableBaseTextureFilter = enableBaseTexture*(1.0 -
> step(texcolor.x+texcolor.y+texcolor.z+texcolor.a,0.0));
> vec4 colorTex = color*texcolor;
> gl_FragColor = (color*(1.0-enableBaseTextureFilter) +
> colorTex*enableBaseTextureFilter)*(1.0-0.30*v);
> }
>
> Linking osg::Program "" id=1 contextID=0
> Uniform "baseTexture" loc=0 size=1 type=sampler2D
> Uniform "enableBaseTexture" loc=1 size=1 type=float
> Uniform "randomTexture" loc=2 size=1 type=sampler2D
> Uniform "shadowTexture0" loc=3 size=1 type=sampler2DShadow
> Uniform "shadowTexture1" loc=4 size=1 type=sampler2DShadow
> Uniform "shadowTexture2" loc=5 size=1 type=sampler2DShadow
>
> end cull_draw() 0x8074200
>
> == My app ==
>
> ParallelSplitShadowMap : Texture ID=0 Resolution=1024
> CullSettings::readEnvironmentalVariables()
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> ParallelSplitShadowMap : Texture ID=1 Resolution=1024
> CullSettings::readEnvironmentalVariables()
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> ParallelSplitShadowMap : Texture ID=2 Resolution=1024
> CullSettings::readEnvironmentalVariables()
>
> ParallelSplitShadowMap: GLSL shader code:
> -------------------------------------------------------------------
> uniform sampler2D baseTexture;
> uniform sampler2D randomTexture;
> uniform float enableBaseTexture;
> uniform sampler2DShadow shadowTexture0;
> uniform float zShadow0;
> uniform sampler2DShadow shadowTexture1;
> uniform float zShadow1;
> uniform sampler2DShadow shadowTexture2;
> uniform float zShadow2;
> void main(void)
> {
> vec4 coord = gl_FragCoord;
> float shadow0 = shadow2DProj( shadowTexture0,gl_TexCoord[1]).r;
> vec4 random0 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[1].st);
> float shadow10 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.r*vec4(-1,-1,0,0)).r;
> float shadow20 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.g*vec4(1,-1,0,0)).r;
> float shadow30 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.b*vec4(1,1,0,0)).r;
> float shadow40 = shadow2DProj(
> shadowTexture0,gl_TexCoord[1]+random0.a*vec4(-1,1,0,0)).r;
> shadow0 = shadow0 + shadow10 + shadow20 + shadow30 + shadow40;
> shadow0 = shadow0*0.2;
> float shadow1 = shadow2DProj( shadowTexture1,gl_TexCoord[2]).r;
> vec4 random1 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[2].st);
> float shadow11 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.r*vec4(-1,-1,0,0)).r;
> float shadow21 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.g*vec4(1,-1,0,0)).r;
> float shadow31 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.b*vec4(1,1,0,0)).r;
> float shadow41 = shadow2DProj(
> shadowTexture1,gl_TexCoord[2]+random1.a*vec4(-1,1,0,0)).r;
> shadow1 = shadow1 + shadow11 + shadow21 + shadow31 + shadow41;
> shadow1 = shadow1*0.2;
> float shadow2 = shadow2DProj( shadowTexture2,gl_TexCoord[3]).r;
> vec4 random2 =
> 0.0012207*coord.z*texture2D(randomTexture,gl_TexCoord[3].st);
> float shadow12 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.r*vec4(-1,-1,0,0)).r;
> float shadow22 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.g*vec4(1,-1,0,0)).r;
> float shadow32 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.b*vec4(1,1,0,0)).r;
> float shadow42 = shadow2DProj(
> shadowTexture2,gl_TexCoord[3]+random2.a*vec4(-1,1,0,0)).r;
> shadow2 = shadow2 + shadow12 + shadow22 + shadow32 + shadow42;
> shadow2 = shadow2*0.2;
> float term0 = (1.0-shadow0);
> float term1 = (1.0-shadow1);
> float term2 = (1.0-shadow2);
> float v = clamp(term0+term1+term2,0.0,1.0);
> vec4 color = gl_Color;
> vec4 texcolor = texture2D(baseTexture,gl_TexCoord[0].st);
> float enableBaseTextureFilter = enableBaseTexture*(1.0 -
> step(texcolor.x+texcolor.y+texcolor.z+texcolor.a,0.0));
> vec4 colorTex = color*texcolor;
> gl_FragColor = (color*(1.0-enableBaseTextureFilter) +
> colorTex*enableBaseTextureFilter)*(1.0-0.30*v);
> }
>
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
> Uniform Adding parent
>
> Then it segfaults.
>
>
> --
> Varrojo at Linux
> http://varrojo.linuxuruguay.org
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
--
********************************************
Adrian Egli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080520/2feb9490/attachment.htm>
More information about the osg-users
mailing list