INFO: --- Directories: --- Ogre plugin: /usr/lib/x86_64-linux-gnu/OGRE-1.9.0 Data: /home/daenzer/src/vdrift-ogre-git/stuntrally/data User cfg,log: /home/daenzer/.config/stuntrally User data: /home/daenzer/.local/share/games/stuntrally Cache: /home/daenzer/.cache/stuntrally Starting VDrift-Ogre: 2010-05-01, O/S: Unix-like INFO: Sound initialization information: INFO: Obtained audio device: Frequency: 44100 Format: 32784 Bits per sample: 16 Channels: 2 Silence: 0 Samples: 1024 Size: 4096 Sound initialization successful INFO: ::: Time Sounds: 72 ms Creating resource group General Creating resource group Internal Creating resource group Autodetect SceneManagerFactory for type 'DefaultSceneManager' registered. Registering ResourceManager for type Material Registering ResourceManager for type Mesh Registering ResourceManager for type Skeleton MovableObjectFactory for type 'ParticleSystem' registered. ArchiveFactory for archive type FileSystem registered. ArchiveFactory for archive type Zip registered. ArchiveFactory for archive type EmbeddedZip registered. DDS codec registering FreeImage version: 3.15.4 This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,g3,sgi,exr,j2k,j2c,jp2,pfm,pct,pict,pic,3fr,arw,bay,bmq,cap,cine,cr2,crw,cs1,dc2,dcr,drf,dsc,dng,erf,fff,ia,iiq,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,ptx,pxn,qtk,raf,raw,rdc,rw2,rwl,rwz,sr2,srf,srw,sti Registering ResourceManager for type HighLevelGpuProgram Registering ResourceManager for type Compositor MovableObjectFactory for type 'Entity' registered. MovableObjectFactory for type 'Light' registered. MovableObjectFactory for type 'BillboardSet' registered. MovableObjectFactory for type 'ManualObject' registered. MovableObjectFactory for type 'BillboardChain' registered. MovableObjectFactory for type 'RibbonTrail' registered. *-*-* OGRE Initialising *-*-* Version 1.9.0 (Ghadamon) *** start setup *** Loading library /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL Installing plugin: GL RenderSystem OpenGL Rendering Subsystem created. Plugin successfully installed Loading library /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/Plugin_ParticleFX Installing plugin: ParticleFX Particle Emitter Type 'Point' registered Particle Emitter Type 'Box' registered Particle Emitter Type 'Ellipsoid' registered Particle Emitter Type 'Cylinder' registered Particle Emitter Type 'Ring' registered Particle Emitter Type 'HollowEllipsoid' registered Particle Affector Type 'LinearForce' registered Particle Affector Type 'ColourFader' registered Particle Affector Type 'ColourFader2' registered Particle Affector Type 'ColourImage' registered Particle Affector Type 'ColourInterpolator' registered Particle Affector Type 'Scaler' registered Particle Affector Type 'Rotator' registered Particle Affector Type 'DirectionRandomiser' registered Particle Affector Type 'DeflectorPlane' registered Plugin successfully installed Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/loading' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/fonts' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/gui' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/hud' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/materials2' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/road' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/grass' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/skies' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/terrain' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/trees-old' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/trees' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/trees2' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/particles' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/objects' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/objects0' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/objectsC' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/tracks/_previews' of type 'FileSystem' to resource group 'General' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/_previews' of type 'FileSystem' to resource group 'General' CPU Identifier & Features ------------------------- * CPU ID: AuthenticAMD: AMD A10-7850K Radeon R7, 12 Compute Cores 4C+8G * SSE: yes * SSE2: yes * SSE3: yes * MMX: yes * MMXEXT: yes * 3DNOW: no * 3DNOWEXT: no * CMOV: yes * TSC: yes * FPU: yes * PRO: yes * HT: no ------------------------- ****************************** *** Starting GLX Subsystem *** ****************************** Registering ResourceManager for type Texture GLRenderSystem::_createRenderWindow "Stunt Rally", 1920x1080 fullscreen miscParams: FSAA=0 externalWindowHandle=16777218 title=Stunt Rally vsync=false GLXWindow::create: The externalWindowHandle parameter is deprecated. Use the parentWindowHandle or currentGLContext parameter instead. GLXWindow::create used FBConfigID = 303 GL_VERSION = 3.0 Mesa 10.3.0-devel (git-f525bd0) GL_VENDOR = X.Org GL_RENDERER = Gallium 0.4 on AMD CAPE VERDE GL_EXTENSIONS = GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_polygon_offset GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_S3_s3tc GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_compression_s3tc GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_depth_clamp GL_NV_fog_distance GL_APPLE_packed_pixels GL_APPLE_vertex_array_object GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_NV_primitive_restart GL_ARB_depth_clamp GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_color_buffer_float GL_ARB_pixel_buffer_object GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_rectangle GL_ATI_texture_compression_3dc GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_packed_depth_stencil GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_ATI_texture_mirror_once GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_gpu_program_parameters GL_EXT_texture_array GL_EXT_texture_compression_latc GL_EXT_texture_integer GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_OES_EGL_image GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_map_buffer_range GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_NV_conditional_render GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_ARB_ES2_compatibility GL_ARB_blend_func_extended GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_stencil_export GL_ARB_shader_texture_lod GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_NV_texture_barrier GL_ARB_get_program_binary GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_NV_vdpau_interop GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_base_instance GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_transform_feedback GL_AMD_shader_trinary_minmax GL_ARB_ES3_compatibility GL_ARB_clear_buffer_object GL_ARB_explicit_uniform_location GL_ARB_invalidate_subdata GL_ARB_stencil_texturing GL_ARB_texture_query_levels GL_ARB_texture_storage_multisample GL_ARB_vertex_attrib_binding GL_KHR_debug GL_ARB_buffer_storage GL_ARB_multi_bind GL_ARB_seamless_cubemap_per_texture GL_ARB_texture_mirror_clamp_to_edge GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_shader_integer_mix Supported GLX extensions: GLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_import_context GLX_EXT_visual_info GLX_EXT_visual_rating GLX_EXT_framebuffer_sRGB GLX_EXT_create_context_es2_profile GLX_MESA_copy_sub_buffer GLX_MESA_multithread_makecurrent GLX_MESA_swap_control GLX_OML_swap_method GLX_OML_sync_control GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGI_video_sync GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_EXT_texture_from_pixmap GLX_INTEL_swap_event *************************** *** GL Renderer Started *** *************************** GLSL IR for linked fragment program 0: ( (declare (shader_in ) vec4 gl_Color) (declare (shader_out ) vec4 gl_FragColor) (declare (temporary ) vec4 gl_FragColor) (function main (signature void (parameters ) ( (assign (xyzw) (var_ref gl_FragColor) (var_ref gl_Color) ) (assign (xyzw) (var_ref gl_FragColor@2) (var_ref gl_FragColor) ) )) ) ) Registering ResourceManager for type GpuProgram GLSL support detected GL: Using GL_EXT_framebuffer_object for rendering to textures (best) FBO PF_UNKNOWN depth/stencil support: D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_L8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_L16 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A4L4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_BYTE_LA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_R5G6B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_B5G6R5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A4R4G4B4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A1R5G5B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_B8G8R8A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A2R10G10B10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_A2B10G10R10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT16_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT16_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT32_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT32_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_X8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_X8B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_SHORT_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_R3G3B2 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT16_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT32_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_SHORT_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT16_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_FLOAT32_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 FBO PF_SHORT_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8 [GL] : Valid FBO targets PF_UNKNOWN PF_L8 PF_L16 PF_A8 PF_A4L4 PF_BYTE_LA PF_R5G6B5 PF_B5G6R5 PF_A4R4G4B4 PF_A1R5G5B5 PF_R8G8B8 PF_B8G8R8 PF_A8R8G8B8 PF_B8G8R8A8 PF_A2R10G10B10 PF_A2B10G10R10 PF_FLOAT16_RGB PF_FLOAT16_RGBA PF_FLOAT32_RGB PF_FLOAT32_RGBA PF_X8R8G8B8 PF_X8B8G8R8 PF_SHORT_RGBA PF_R3G3B2 PF_FLOAT16_R PF_FLOAT32_R PF_SHORT_GR PF_FLOAT16_GR PF_FLOAT32_GR PF_SHORT_RGB RenderSystem capabilities ------------------------- RenderSystem Name: OpenGL Rendering Subsystem GPU Vendor: unknown Device Name: Gallium 0.4 on AMD CAPE VERDE Driver Version: 3.0.0.0 * Fixed function pipeline: yes * Hardware generation of mipmaps: yes * Texture blending: yes * Anisotropic texture filtering: yes * Dot product texture operation: yes * Cube mapping: yes * Hardware stencil buffer: yes - Stencil depth: 8 - Two sided stencil support: yes - Wrap stencil values: yes * Hardware vertex / index buffers: yes * Vertex programs: yes * Number of floating-point constants for vertex programs: 4096 * Number of integer constants for vertex programs: 0 * Number of boolean constants for vertex programs: 0 * Fragment programs: yes * Number of floating-point constants for fragment programs: 4096 * Number of integer constants for fragment programs: 0 * Number of boolean constants for fragment programs: 0 * Geometry programs: no * Number of floating-point constants for geometry programs: 0 * Number of integer constants for geometry programs: 0 * Number of boolean constants for geometry programs: 0 * Tesselation Hull programs: no * Number of floating-point constants for tesselation hull programs: 0 * Number of integer constants for tesselation hull programs: 0 * Number of boolean constants for tesselation hull programs: 0 * Tesselation Domain programs: no * Number of floating-point constants for tesselation domain programs: 0 * Number of integer constants for tesselation domain programs: 0 * Number of boolean constants for tesselation domain programs: 0 * Compute programs: no * Number of floating-point constants for compute programs: 0 * Number of integer constants for compute programs: 0 * Number of boolean constants for compute programs: 0 * Supported Shader Profiles: arbfp1 arbvp1 glsl * Texture Compression: yes - DXT: yes - VTC: no - PVRTC: no - ATC: no - ETC1: no - ETC2: no - BC4/BC5: no - BC6H/BC7: no * Scissor Rectangle: yes * Hardware Occlusion Query: yes * User clip planes: yes * VET_UBYTE4 vertex element type: yes * Infinite far plane projection: yes * Hardware render-to-texture: yes * Floating point textures: yes * Non-power-of-two textures: yes * 1d textures: yes * Volume textures: yes * Multiple Render Targets: 8 - With different bit depths: yes * Point Sprites: yes * Extended point parameters: yes * Max Point Size: 16384 * Vertex texture fetch: yes * Number of world matrices: 0 * Number of texture units: 16 * Stencil buffer depth: 8 * Number of vertex blend matrices: 0 - Max vertex textures: 16 - Vertex textures shared: yes * Render to Vertex Buffer : no * Hardware Atomic Counters: no * GL 1.5 without VBO workaround: no * Frame Buffer objects: yes * Frame Buffer objects (ARB extension): no * Frame Buffer objects (ATI extension): no * PBuffer support: yes * GL 1.5 without HW-occlusion workaround: no * Vertex Array Objects: no * Separate shader objects: no GLSL IR for linked fragment program 0: ( (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_out ) vec4 gl_FragColor) (declare (temporary ) vec4 gl_FragColor) (function main (signature void (parameters ) ( (declare (temporary ) vec4 specular_add) (assign (w) (var_ref specular_add) (swiz w (var_ref gl_Color) )) (assign (xyz) (var_ref specular_add) (expression vec3 + (swiz xyz (var_ref gl_Color) )(swiz xyz (var_ref gl_SecondaryColor) )) ) (assign (xyzw) (var_ref gl_FragColor) (var_ref specular_add) ) (assign (xyzw) (var_ref gl_FragColor@3) (var_ref gl_FragColor) ) )) ) ) DefaultWorkQueue('Root') initialising on thread 7fe9729de940. DefaultWorkQueue('Root')::WorkerFunc - thread 7fe946638700 starting. DefaultWorkQueue('Root')::WorkerFunc - thread 7fe945e37700 starting. Particle Renderer Type 'billboard' registered DefaultWorkQueue('Root')::WorkerFunc - thread 7fe945636700 starting. DefaultWorkQueue('Root')::WorkerFunc - thread 7fe946e39700 starting. Texture: stuntrally.png: Loading 1 faces(PF_A8R8G8B8,64x64x1) with 6 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x64x1. OverlayElementFactory for type Panel registered. OverlayElementFactory for type BorderPanel registered. OverlayElementFactory for type TextArea registered. Registering ResourceManager for type Font -- Screen Align :::: Time setup vp: 463 ms * Initialise: RenderManager RenderManager successfully initialized * Initialise: DataManager DataManager successfully initialized * Initialise: Gui * MyGUI version 3.2.0 * Initialise: ResourceManager ResourceManager successfully initialized * Initialise: LayerManager LayerManager successfully initialized * Initialise: WidgetManager WidgetManager successfully initialized * Initialise: InputManager InputManager successfully initialized * Initialise: SubWidgetManager SubWidgetManager successfully initialized * Initialise: SkinManager SkinManager successfully initialized * Initialise: FontManager FontManager successfully initialized * Initialise: ControllerManager ControllerManager successfully initialized * Initialise: PointerManager PointerManager successfully initialized * Initialise: ClipboardManager ClipboardManager successfully initialized * Initialise: LayoutManager LayoutManager successfully initialized * Initialise: DynLibManager DynLibManager successfully initialized * Initialise: PluginManager PluginManager successfully initialized * Initialise: LanguageManager LanguageManager successfully initialized * Initialise: FactoryManager FactoryManager successfully initialized * Initialise: ToolTipManager ToolTipManager successfully initialized Gui successfully initialized Load ini file 'core_font.xml' ResourceTrueTypeFont: Property 'SpaceWidth' in font 'hud.fps' is deprecated; remove it to use automatic calculation. ResourceTrueTypeFont: Property 'Distance' in font 'hud.fps' is deprecated; value ignored. ResourceTrueTypeFont: Font 'hud.fps' using texture size 128 x 128. ResourceTrueTypeFont: Font 'hud.fps' using real height 20 pixels. ResourceTrueTypeFont: Property 'Distance' in font 'hud.text' is deprecated; value ignored. ResourceTrueTypeFont: Font 'hud.text' using texture size 512 x 256. ResourceTrueTypeFont: Font 'hud.text' using real height 25 pixels. ResourceTrueTypeFont: Property 'Distance' in font 'hud.times' is deprecated; value ignored. ResourceTrueTypeFont: Font 'hud.times' using texture size 512 x 512. ResourceTrueTypeFont: Font 'hud.times' using real height 30 pixels. ResourceTrueTypeFont: Property 'SpaceWidth' in font 'hud.replay' is deprecated; remove it to use automatic calculation. ResourceTrueTypeFont: Property 'Distance' in font 'hud.replay' is deprecated; value ignored. ResourceTrueTypeFont: Font 'hud.replay' using texture size 64 x 128. ResourceTrueTypeFont: Font 'hud.replay' using real height 25 pixels. Texture: Digital_41.png: Loading 1 faces(PF_A8R8G8B8,256x256x1) Internal format is PF_A8R8G8B8,256x256x1. Load ini file 'core_images.xml' Load ini file 'core_commonskins.xml' Load ini file 'core_blackbluetheme.xml' Load ini file 'core_blackblueimages.xml' Load ini file 'core_blackblueskins.xml' Texture: SplineSkin.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) Internal format is PF_A8R8G8B8,32x32x1. Texture: core_blackblueskins.png: Loading 1 faces(PF_A8R8G8B8,512x256x1) Internal format is PF_A8R8G8B8,512x256x1. Load ini file 'core_blackbluetemplates.xml' Load ini file 'core_pointers.xml' Load ini file 'core_layers.xml' Load ini file 'core_language.xml' Load ini file 'core_settings.xml' Texture: core_pointer.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) Internal format is PF_A8R8G8B8,256x128x1. Load ini file 'MessageBoxIcons.xml' Texture: Border_Center.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) Internal format is PF_A8R8G8B8,256x128x1. Texture: loading_back.jpg: Loading 1 faces(PF_R8G8B8,512x128x1) Internal format is PF_X8R8G8B8,512x128x1. Texture: loading_bar2.jpg: Loading 1 faces(PF_R8G8B8,512x32x1) Internal format is PF_X8R8G8B8,512x32x1. Texture: loading_bar1.jpg: Loading 1 faces(PF_R8G8B8,512x32x1) Internal format is PF_X8R8G8B8,512x32x1. Texture: background.jpg: Loading 1 faces(PF_R8G8B8,1920x1200x1) Internal format is PF_X8R8G8B8,1920x1200x1. :::: Time setup gui: 113 ms Texture: loading12.jpg: Loading 1 faces(PF_R8G8B8,1920x1187x1) Internal format is PF_X8R8G8B8,1920x1187x1. Parsing scripts for resource group Autodetect Mesa: User error: GL_INVALID_ENUM in glTexParameter(target) GLSL IR for linked fragment program 0: ( (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_in_TexCoord0) (declare (uniform ) sampler2D sampler_0) (declare (shader_out ) vec4 gl_FragColor) (declare (temporary ) vec4 gl_FragColor) (function main (signature void (parameters ) ( (declare (temporary ) vec4 texenv_combine) (assign (xyzw) (var_ref texenv_combine) (expression vec4 * (tex vec4 (var_ref sampler_0) (swiz xy (var_ref gl_in_TexCoord0) ) 0 (swiz w (var_ref gl_in_TexCoord0) ) () )(var_ref gl_Color) ) ) (declare (temporary ) vec4 specular_add) (assign (w) (var_ref specular_add) (swiz w (var_ref texenv_combine) )) (assign (xyz) (var_ref specular_add) (expression vec3 + (swiz xyz (var_ref texenv_combine) )(swiz xyz (var_ref gl_SecondaryColor) )) ) (assign (xyzw) (var_ref gl_FragColor) (var_ref specular_add) ) (assign (xyzw) (var_ref gl_FragColor@4) (var_ref gl_FragColor) ) )) ) ) GLSL IR for linked fragment program 0: ( (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec4 gl_in_TexCoord0) (declare (uniform ) sampler2D sampler_0) (declare (uniform ) (array vec4 5) gl_CurrentAttribFragMESA) (declare (shader_out ) vec4 gl_FragColor) (declare (temporary ) vec4 gl_FragColor) (function main (signature void (parameters ) ( (declare (temporary ) vec4 texenv_combine) (assign (xyzw) (var_ref texenv_combine) (expression vec4 * (tex vec4 (var_ref sampler_0) (swiz xy (var_ref gl_in_TexCoord0) ) 0 (swiz w (var_ref gl_in_TexCoord0) ) () )(var_ref gl_Color) ) ) (declare (temporary ) vec4 specular_add) (assign (w) (var_ref specular_add) (swiz w (var_ref texenv_combine) )) (assign (xyz) (var_ref specular_add) (expression vec3 + (swiz xyz (var_ref texenv_combine) )(swiz xyz (array_ref (var_ref gl_CurrentAttribFragMESA) (constant uint (4)) ) )) ) (assign (xyzw) (var_ref gl_FragColor) (var_ref specular_add) ) (assign (xyzw) (var_ref gl_FragColor@5) (var_ref gl_FragColor) ) )) ) ) Finished parsing scripts for resource group Autodetect Creating resources for group Autodetect All done Parsing scripts for resource group General Parsing script StdQuad_vp.program Parsing script StdQuad_fp.program Parsing script Focus.material Parsing script Hud.material Parsing script rnd.material Parsing script weather.particle Parsing script car.particle Parsing script fluids.particle Parsing script tires.particle Parsing script console.fontdef Parsing script Digital_41.fontdef Parsing script Vera.fontdef Parsing script CarDbg.overlay Parsing script Editor.overlay Texture: border_rect.png: Loading 1 faces(PF_A8R8G8B8,32x16x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x16x1. Finished parsing scripts for resource group General Creating resources for group General All done Parsing scripts for resource group Internal Finished parsing scripts for resource group Internal Creating resources for group Internal All done :::: Time resources: 109 ms *** createFrameListener *** -- Screen Align :::: Time createFrameListener: 2 ms *** createScene *** **** Loaded Fluids: 24 **** Loaded Vegetation objects: 47 **** Loaded Championships: 56 **** Loaded Challenges: 63 Total tracks: 147, total time: 4:19 h:m **** ReplayFrame size: 400 **** ReplayHeader size: 620 ::: Time load xmls: 22 ms -- font.small size: 26.00 : Property 'Distance' in font 'font.small' is deprecated; value ignored. ResourceTrueTypeFont: Font 'font.small' using texture size 256 x 512. ResourceTrueTypeFont: Font 'font.small' using real height 21 pixels. -- font.normal size: 30.00 : Property 'Distance' in font 'font.normal' is deprecated; value ignored. ResourceTrueTypeFont: Font 'font.normal' using texture size 512 x 256. ResourceTrueTypeFont: Font 'font.normal' using real height 25 pixels. -- font.big size: 34.00 : Property 'Distance' in font 'font.big' is deprecated; value ignored. ResourceTrueTypeFont: Font 'font.big' using texture size 512 x 256. ResourceTrueTypeFont: Font 'font.big' using real height 28 pixels. Texture: gui_icons.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) Internal format is PF_A8R8G8B8,1024x1024x1. Texture: carpos0.png: Loading 1 faces(PF_A8R8G8B8,64x64x1) Internal format is PF_A8R8G8B8,64x64x1. Texture: track_icons.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) Internal format is PF_A8R8G8B8,256x128x1. Texture: stats_bar.png: Loading 1 faces(PF_A8R8G8B8,256x16x1) Internal format is PF_A8R8G8B8,256x16x1. Texture: hue_bar.png: Loading 1 faces(PF_A8R8G8B8,512x16x1) Internal format is PF_A8R8G8B8,512x16x1. Widget property 'ReadOnly' not found [Game.layout] Widget property 'MultiLine' not found [Game.layout] Widget property 'WordWrap' not found [Game.layout] Texture: ico_champ.png: Loading 1 faces(PF_A8R8G8B8,1024x256x1) Internal format is PF_A8R8G8B8,1024x256x1. Widget property 'ReadOnly' not found [Game.layout] Widget property 'MultiLine' not found [Game.layout] Widget property 'WordWrap' not found [Game.layout] Texture: stuntrally-logo.png: Loading 1 faces(PF_A8R8G8B8,1024x256x1) Internal format is PF_A8R8G8B8,1024x256x1. Texture: _ch-logo.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) Internal format is PF_A8R8G8B8,512x512x1. Texture: vdrift-logo.png: Loading 1 faces(PF_A8R8G8B8,512x128x1) Internal format is PF_A8R8G8B8,512x128x1. Texture: ogre-logo.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) Internal format is PF_A8R8G8B8,256x128x1. Texture: keys.png: Loading 1 faces(PF_A8R8G8B8,2048x512x1) Internal format is PF_A8R8G8B8,2048x512x1. Texture: white.png: Loading 1 faces(PF_R8G8B8,4x4x1) Internal format is PF_X8R8G8B8,4x4x1. Texture: input_bar.png: Loading 1 faces(PF_A8R8G8B8,512x16x1) Internal format is PF_A8R8G8B8,512x16x1. ::: Time Init Gui: 300 ms Texture: loading14.jpg: Loading 1 faces(PF_R8G8B8,1920x1187x1) Internal format is PF_X8R8G8B8,1920x1187x1. :::: Time createScene: 362 ms *** recreateCompositor *** *** end setup *** :::: Time post, mat factory: 33 ms :::: Time setup total: 1085 ms -- Screen Align -- Screen Align Texture: N1.jpg: Loading 1 faces(PF_R8G8B8,1024x1024x1) Internal format is PF_X8R8G8B8,1024x1024x1. :::: Time car tab upd: 21 ms Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/tracks/A1-StuntPark/objects' of type 'FileSystem' to resource group 'General' -- Screen Align INFO: Carsim: easy. Loaded: 3 tires, 27 surfaces, 1=1 suspensions. INFO: Loading track from path: /home/daenzer/src/vdrift-ogre-git/stuntrally/data/tracks/A1-StuntPark INFO: Track loaded: 0 models, 0 textures, INFO: Collision objects: 0 :::: Time car dynamics load: 0 ms INFO: Car loaded: N1 >- Load replay -- file: /home/daenzer/.local/share/games/stuntrally/ghosts/easy/A1-StuntPark_N1.rpl players:1 >- Load replay first: 0.01220 time: 214.10 frames: 17557 ::: Time ReplayLoad: 11 ms >- Load trk ghost -- file: /home/daenzer/src/vdrift-ogre-git/stuntrally/data/ghosts/A1-StuntPark.gho >- Load trk ghost BAD frame time id:4908 t-1:179.68292 > t:0.00000 >- Load trk ghost first: 0.03659 time: 179.68 frames: 4908 ::: Time Load trk ghost: 0 ms Mesh: Loading arrow.mesh. WARNING: arrow.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool. Creating resource group Car0 Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/N1' of type 'FileSystem' to resource group 'Car0' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/N1/textures' of type 'FileSystem' to resource group 'Car0' Mesh: Loading check.mesh. WARNING: check.mesh is an older format ([MeshSerializer_v1.40]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool. Mesh: Loading N1_body.mesh. MESH info: N1_body.mesh sub: 6 tri: 13.5k Mesh: Loading N1_interior.mesh. MESH info: N1_interior.mesh sub: 8 tri: 9.1k Mesh: Loading N1_glass.mesh. MESH info: N1_glass.mesh sub: 2 tri: 0.7k Mesh: Loading N1_wheel.mesh. WARNING: N1_wheel.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool. MESH info: N1_wheel.mesh sub: 5 tri: 3.4k MESH info: N1_wheel.mesh sub: 5 tri: 3.4k MESH info: N1 ALL sub: 36 tri: 36.8k Initialising resource group Car0 Parsing scripts for resource group Car0 Finished parsing scripts for resource group Car0 Creating resources for group Car0 All done Loading resource group 'Car0' - Resources: 1 World Geometry: 1 Texture: N1_body00_brake.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. Texture: N1_body00_add.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. Finished loading resource group Car0 Creating resource group Car1 Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/N1' of type 'FileSystem' to resource group 'Car1' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/N1/textures' of type 'FileSystem' to resource group 'Car1' Initialising resource group Car1 Parsing scripts for resource group Car1 Finished parsing scripts for resource group Car1 Creating resources for group Car1 All done Loading resource group 'Car1' - Resources: 1 World Geometry: 1 Texture: N1_body00_brake.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. Texture: N1_body00_add.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. Finished loading resource group Car1 Creating resource group Car1Z Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/ES' of type 'FileSystem' to resource group 'Car1Z' Added resource location '/home/daenzer/src/vdrift-ogre-git/stuntrally/data/cars/ES/textures' of type 'FileSystem' to resource group 'Car1Z' Mesh: Loading ES_body.mesh. WARNING: ES_body.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool. Can't assign material body_realtime to SubEntity of Car1Z because this Material does not exist. Have you forgotten to define it in a .material script? Mesh: Loading ES_interior.mesh. Mesh: Loading ES_glass.mesh. Mesh: Loading ES_wheel.mesh. Initialising resource group Car1Z Parsing scripts for resource group Car1Z Finished parsing scripts for resource group Car1Z Creating resources for group Car1Z All done Loading resource group 'Car1Z' - Resources: 1 World Geometry: 1 Texture: ES_body00_brake.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1. Texture: ES_body00_add.png: Loading 1 faces(PF_A8R8G8B8,1024x1024x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1. Finished loading resource group Car1Z Terrain size: 513 err:1.70 batch: 65 129 /129 Terrain created; size=513 minBatch=65 maxBatch=129 treeDepth=3 lodLevels=4 leafLods=2 Error while creating material OgreTerrain/3995122257/comp: Trying to retrieve property "debug_blend" that does not exist ::: Time Terrain: 730 ms ::: Time Shadows: 13 ms GLSL source for vertex shader 2: #version 120 attribute vec4 vertex; uniform mat4 wvp; attribute vec2 uv0; varying vec2 uv; varying vec4 position; void main(void) { uv = uv0; gl_Position = ((wvp) * ( vertex)); } GLSL IR for shader 2: ( (declare (shader_in ) float gl_FogCoord) (declare (shader_in ) vec4 gl_MultiTexCoord7) (declare (shader_in ) vec4 gl_MultiTexCoord6) (declare (shader_in ) vec4 gl_MultiTexCoord5) (declare (shader_in ) vec4 gl_MultiTexCoord4) (declare (shader_in ) vec4 gl_MultiTexCoord3) (declare (shader_in ) vec4 gl_MultiTexCoord2) (declare (shader_in ) vec4 gl_MultiTexCoord1) (declare (shader_in ) vec4 gl_MultiTexCoord0) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec3 gl_Normal) (declare (shader_in ) vec4 gl_Vertex) (declare (shader_out ) vec4 gl_BackSecondaryColor) (declare (shader_out ) vec4 gl_FrontSecondaryColor) (declare (shader_out ) vec4 gl_BackColor) (declare (shader_out ) vec4 gl_FrontColor) (declare (shader_out ) vec4 gl_ClipVertex) (declare (shader_out ) float gl_FogFragCoord) (declare (shader_out ) (array vec4 0) gl_TexCoord) (declare (shader_out ) float gl_PointSize) (declare (shader_out ) vec4 gl_Position) (declare (uniform ) gl_FogParameters gl_Fog) (declare (uniform ) (array vec4 8) gl_ObjectPlaneQ) (declare (uniform ) (array vec4 8) gl_ObjectPlaneR) (declare (uniform ) (array vec4 8) gl_ObjectPlaneT) (declare (uniform ) (array vec4 8) gl_ObjectPlaneS) (declare (uniform ) (array vec4 8) gl_EyePlaneQ) (declare (uniform ) (array vec4 8) gl_EyePlaneR) (declare (uniform ) (array vec4 8) gl_EyePlaneT) (declare (uniform ) (array vec4 8) gl_EyePlaneS) (declare (uniform ) (array vec4 8) gl_TextureEnvColor) (declare (uniform ) (array gl_LightProducts 8) gl_BackLightProduct) (declare (uniform ) (array gl_LightProducts 8) gl_FrontLightProduct) (declare (uniform ) gl_LightModelProducts gl_BackLightModelProduct) (declare (uniform ) gl_LightModelProducts gl_FrontLightModelProduct) (declare (uniform ) (array gl_LightSourceParameters 8) gl_LightSource) (declare (uniform ) gl_MaterialParameters gl_BackMaterial) (declare (uniform ) gl_MaterialParameters gl_FrontMaterial) (declare (uniform ) gl_PointParameters gl_Point) (declare (uniform ) (array vec4 8) gl_ClipPlane) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverseTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverse) (declare (uniform ) (array mat4 8) gl_TextureMatrix) (declare (uniform ) vec4 gl_FogParamsOptimizedMESA) (declare (uniform ) gl_LightModelParameters gl_LightModel) (declare (uniform ) float gl_NormalScale) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverse) (declare (uniform ) mat4 gl_ProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewMatrixInverse) (declare (uniform ) mat3 gl_NormalMatrix) (declare (uniform ) mat4 gl_ModelViewProjectionMatrix) (declare (uniform ) mat4 gl_ProjectionMatrix) (declare (uniform ) mat4 gl_ModelViewMatrix) (declare (uniform ) (array vec4 56) gl_CurrentAttribFragMESA) (declare (uniform ) (array vec4 33) gl_CurrentAttribVertMESA) (declare (uniform ) gl_DepthRangeParameters gl_DepthRange) (declare (uniform ) int gl_NumSamples) (declare () int gl_MaxTextureCoords) (declare () int gl_MaxTextureUnits) (declare () int gl_MaxClipPlanes) (declare () int gl_MaxLights) (declare () int gl_MaxFragmentUniformComponents) (declare () int gl_MaxVaryingFloats) (declare () int gl_MaxVertexUniformComponents) (declare () int gl_MaxDrawBuffers) (declare () int gl_MaxTextureImageUnits) (declare () int gl_MaxCombinedTextureImageUnits) (declare () int gl_MaxVertexTextureImageUnits) (declare () int gl_MaxVertexAttribs) (declare (shader_in ) vec4 vertex) (declare (uniform ) mat4 wvp) (declare (shader_in ) vec2 uv0) (declare (shader_out ) vec2 uv) (declare (shader_out ) vec4 position) (function main (signature void (parameters ) ( (assign (xy) (var_ref uv) (var_ref uv0) ) (assign (xyzw) (var_ref gl_Position) (expression vec4 * (var_ref wvp) (var_ref vertex) ) ) )) ) ) GLSL compiled: GLSL source for fragment shader 3: #version 120 varying vec2 uv; uniform float InvTerSize; uniform float TriSize; uniform sampler2D samHMap; void main(void) { float s = InvTerSize; float yx = texture2D(samHMap, vec2(uv.x + s, 1-uv.y )).x - texture2D(samHMap, vec2(uv.x - s, 1-uv.y )).x; float yz = texture2D(samHMap, vec2(uv.x, 1-uv.y + s)).x - texture2D(samHMap, vec2(uv.x, 1-uv.y - s)).x; vec3 vx = vec3(TriSize, yx, 0); vec3 vz = vec3(0, yz, TriSize); vec3 norm = normalize(-cross(vx, vz)); float a = max(0.0, acos(norm.y) * 180 / 3.1415926536); gl_FragData[0] = vec4(a,a,a,a); } GLSL IR for shader 3: ( (declare (shader_out ) float gl_FragDepth) (declare (shader_out ) (array vec4 8) gl_FragData) (declare (shader_out ) vec4 gl_FragColor) (declare (shader_in ) vec2 gl_PointCoord) (declare (shader_in ) bool gl_FrontFacing) (declare (shader_in ) vec4 gl_FragCoord) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) float gl_FogFragCoord) (declare (shader_in ) (array vec4 0) gl_TexCoord) (declare (uniform ) gl_FogParameters gl_Fog) (declare (uniform ) (array vec4 8) gl_ObjectPlaneQ) (declare (uniform ) (array vec4 8) gl_ObjectPlaneR) (declare (uniform ) (array vec4 8) gl_ObjectPlaneT) (declare (uniform ) (array vec4 8) gl_ObjectPlaneS) (declare (uniform ) (array vec4 8) gl_EyePlaneQ) (declare (uniform ) (array vec4 8) gl_EyePlaneR) (declare (uniform ) (array vec4 8) gl_EyePlaneT) (declare (uniform ) (array vec4 8) gl_EyePlaneS) (declare (uniform ) (array vec4 8) gl_TextureEnvColor) (declare (uniform ) (array gl_LightProducts 8) gl_BackLightProduct) (declare (uniform ) (array gl_LightProducts 8) gl_FrontLightProduct) (declare (uniform ) gl_LightModelProducts gl_BackLightModelProduct) (declare (uniform ) gl_LightModelProducts gl_FrontLightModelProduct) (declare (uniform ) (array gl_LightSourceParameters 8) gl_LightSource) (declare (uniform ) gl_MaterialParameters gl_BackMaterial) (declare (uniform ) gl_MaterialParameters gl_FrontMaterial) (declare (uniform ) gl_PointParameters gl_Point) (declare (uniform ) (array vec4 8) gl_ClipPlane) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverseTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverse) (declare (uniform ) (array mat4 8) gl_TextureMatrix) (declare (uniform ) vec4 gl_FogParamsOptimizedMESA) (declare (uniform ) gl_LightModelParameters gl_LightModel) (declare (uniform ) float gl_NormalScale) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverse) (declare (uniform ) mat4 gl_ProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewMatrixInverse) (declare (uniform ) mat3 gl_NormalMatrix) (declare (uniform ) mat4 gl_ModelViewProjectionMatrix) (declare (uniform ) mat4 gl_ProjectionMatrix) (declare (uniform ) mat4 gl_ModelViewMatrix) (declare (uniform ) (array vec4 56) gl_CurrentAttribFragMESA) (declare (uniform ) (array vec4 33) gl_CurrentAttribVertMESA) (declare (uniform ) gl_DepthRangeParameters gl_DepthRange) (declare (uniform ) int gl_NumSamples) (declare () int gl_MaxTextureCoords) (declare () int gl_MaxTextureUnits) (declare () int gl_MaxClipPlanes) (declare () int gl_MaxLights) (declare () int gl_MaxFragmentUniformComponents) (declare () int gl_MaxVaryingFloats) (declare () int gl_MaxVertexUniformComponents) (declare () int gl_MaxDrawBuffers) (declare () int gl_MaxTextureImageUnits) (declare () int gl_MaxCombinedTextureImageUnits) (declare () int gl_MaxVertexTextureImageUnits) (declare () int gl_MaxVertexAttribs) (declare (shader_in ) vec2 uv) (declare (uniform ) float InvTerSize) (declare (uniform ) float TriSize) (declare (uniform ) sampler2D samHMap) (function main (signature void (parameters ) ( (declare () float yx) (declare () float s) (assign (x) (var_ref s) (var_ref InvTerSize) ) (declare (temporary ) vec2 vec_ctor) (assign (x) (var_ref vec_ctor) (expression float + (swiz x (var_ref uv) )(var_ref InvTerSize) ) ) (declare () float cse) (assign (x) (var_ref cse) (expression float neg (swiz y (var_ref uv) )) ) (assign (y) (var_ref vec_ctor) (expression float + (constant float (1.000000)) (var_ref cse) ) ) (declare (temporary ) vec4 texture2D_retval) (call texture2D (var_ref texture2D_retval) ((var_ref samHMap) (var_ref vec_ctor) )) (declare (temporary ) vec2 vec_ctor@6) (assign (x) (var_ref vec_ctor@6) (expression float + (swiz x (var_ref uv) )(expression float neg (var_ref s) ) ) ) (assign (y) (var_ref vec_ctor@6) (expression float + (constant float (1.000000)) (var_ref cse) ) ) (declare (temporary ) vec4 texture2D_retval@7) (call texture2D (var_ref texture2D_retval@7) ((var_ref samHMap) (var_ref vec_ctor@6) )) (assign (x) (var_ref yx) (expression float + (swiz x (var_ref texture2D_retval) )(expression float neg (swiz x (var_ref texture2D_retval@7) )) ) ) (declare (temporary ) vec2 vec_ctor@8) (assign (x) (var_ref vec_ctor@8) (swiz x (var_ref uv) )) (assign (y) (var_ref vec_ctor@8) (expression float + (expression float + (constant float (1.000000)) (var_ref cse) ) (var_ref s) ) ) (declare (temporary ) vec4 texture2D_retval@9) (call texture2D (var_ref texture2D_retval@9) ((var_ref samHMap) (var_ref vec_ctor@8) )) (declare (temporary ) vec2 vec_ctor@10) (assign (x) (var_ref vec_ctor@10) (swiz x (var_ref uv) )) (assign (y) (var_ref vec_ctor@10) (expression float + (expression float + (constant float (1.000000)) (var_ref cse) ) (expression float neg (var_ref s) ) ) ) (declare (temporary ) vec4 texture2D_retval@11) (call texture2D (var_ref texture2D_retval@11) ((var_ref samHMap) (var_ref vec_ctor@10) )) (declare (temporary ) vec3 vec_ctor@12) (assign (z) (var_ref vec_ctor@12) (constant float (0.000000)) ) (assign (x) (var_ref vec_ctor@12) (var_ref TriSize) ) (assign (y) (var_ref vec_ctor@12) (var_ref yx) ) (declare (temporary ) vec3 vec_ctor@13) (assign (x) (var_ref vec_ctor@13) (constant float (0.000000)) ) (assign (y) (var_ref vec_ctor@13) (expression float + (swiz x (var_ref texture2D_retval@9) )(expression float neg (swiz x (var_ref texture2D_retval@11) )) ) ) (assign (z) (var_ref vec_ctor@13) (var_ref TriSize) ) (declare (temporary ) vec3 cross_retval) (call cross (var_ref cross_retval) ((var_ref vec_ctor@12) (var_ref vec_ctor@13) )) (declare (temporary ) vec3 normalize_retval) (call normalize (var_ref normalize_retval) ((expression vec3 neg (var_ref cross_retval) ) )) (declare (temporary ) float acos_retval) (call acos (var_ref acos_retval) ((swiz y (var_ref normalize_retval) ))) (declare (temporary ) float max_retval) (call max (var_ref max_retval) ((constant float (0.000000)) (expression float / (expression float * (var_ref acos_retval) (expression float i2f (constant int (180)) ) ) (constant float (3.141593)) ) )) (declare (temporary ) vec4 vec_ctor@14) (assign (x) (var_ref vec_ctor@14) (var_ref max_retval) ) (assign (y) (var_ref vec_ctor@14) (var_ref max_retval) ) (assign (z) (var_ref vec_ctor@14) (var_ref max_retval) ) (assign (w) (var_ref vec_ctor@14) (var_ref max_retval) ) (assign (xyzw) (array_ref (var_ref gl_FragData) (constant int (0)) ) (var_ref vec_ctor@14) ) )) ) (function texture2D (signature vec4 (parameters (declare (in ) sampler2D sampler) (declare (in ) vec2 P) ) ( )) ) (function cross (signature vec3 (parameters (declare (in ) vec3 a) (declare (in ) vec3 b) ) ( )) ) (function normalize (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) ) (function acos (signature float (parameters (declare (in ) float x) ) ( )) ) (function max (signature float (parameters (declare (in ) float x) (declare (in ) float y) ) ( )) ) ) GLSL compiled: GLSL IR for linked vertex program 1: ( (declare (shader_out ) vec4 gl_Position) (declare (temporary ) vec4 gl_Position) (declare (shader_out ) vec4 packed:uv) (declare (temporary ) vec4 packed:uv) (declare (shader_in ) vec4 vertex) (declare (uniform ) mat4 wvp) (declare (shader_in ) vec2 uv0) (function main (signature void (parameters ) ( (assign (xyzw) (var_ref gl_Position) (expression vec4 + (expression vec4 + (expression vec4 + (expression vec4 * (array_ref (var_ref wvp) (constant int (0)) ) (swiz x (var_ref vertex) )) (expression vec4 * (array_ref (var_ref wvp) (constant int (1)) ) (swiz y (var_ref vertex) )) ) (expression vec4 * (array_ref (var_ref wvp) (constant int (2)) ) (swiz z (var_ref vertex) )) ) (expression vec4 * (array_ref (var_ref wvp) (constant int (3)) ) (swiz w (var_ref vertex) )) ) ) (assign (xy) (var_ref packed:uv) (var_ref uv0) ) (assign (xyzw) (var_ref packed:uv@15) (var_ref packed:uv) ) (assign (xyzw) (var_ref gl_Position@16) (var_ref gl_Position) ) )) ) ) GLSL IR for linked fragment program 1: ( (declare (shader_out ) vec4 gl_out_FragData0) (declare (temporary ) vec4 gl_out_FragData0) (declare (shader_in ) vec4 packed:uv) (declare () vec2 uv) (declare (uniform ) float InvTerSize) (declare (uniform ) float TriSize) (declare (uniform ) sampler2D samHMap) (function main (signature void (parameters ) ( (assign (xy) (var_ref uv) (swiz xy (var_ref packed:uv) )) (declare (temporary ) vec2 vec_ctor) (assign (x) (var_ref vec_ctor) (expression float + (swiz x (var_ref packed:uv) )(var_ref InvTerSize) ) ) (declare () float cse) (assign (x) (var_ref cse) (expression float neg (swiz y (var_ref packed:uv) )) ) (assign (y) (var_ref vec_ctor) (expression float + (constant float (1.000000)) (var_ref cse) ) ) (declare (temporary ) vec2 vec_ctor@17) (declare () float cse@18) (assign (x) (var_ref cse@18) (expression float neg (var_ref InvTerSize) ) ) (assign (x) (var_ref vec_ctor@17) (expression float + (swiz x (var_ref packed:uv) )(var_ref cse@18) ) ) (assign (y) (var_ref vec_ctor@17) (expression float + (constant float (1.000000)) (var_ref cse) ) ) (declare (temporary ) vec2 vec_ctor@19) (assign (x) (var_ref vec_ctor@19) (swiz x (var_ref uv) )) (assign (y) (var_ref vec_ctor@19) (expression float + (expression float + (constant float (1.000000)) (var_ref cse) ) (var_ref InvTerSize) ) ) (declare (temporary ) vec2 vec_ctor@20) (assign (x) (var_ref vec_ctor@20) (swiz x (var_ref uv) )) (assign (y) (var_ref vec_ctor@20) (expression float + (expression float + (constant float (1.000000)) (var_ref cse) ) (var_ref cse@18) ) ) (declare (temporary ) vec3 vec_ctor@21) (assign (z) (var_ref vec_ctor@21) (constant float (0.000000)) ) (assign (x) (var_ref vec_ctor@21) (var_ref TriSize) ) (assign (y) (var_ref vec_ctor@21) (expression float + (swiz x (tex vec4 (var_ref samHMap) (var_ref vec_ctor) 0 1 () ))(expression float neg (swiz x (tex vec4 (var_ref samHMap) (var_ref vec_ctor@17) 0 1 () ))) ) ) (declare (temporary ) vec3 vec_ctor@22) (assign (x) (var_ref vec_ctor@22) (constant float (0.000000)) ) (assign (y) (var_ref vec_ctor@22) (expression float + (swiz x (tex vec4 (var_ref samHMap) (var_ref vec_ctor@19) 0 1 () ))(expression float neg (swiz x (tex vec4 (var_ref samHMap) (var_ref vec_ctor@20) 0 1 () ))) ) ) (assign (z) (var_ref vec_ctor@22) (var_ref TriSize) ) (declare (temporary ) vec3 normalize_retval) (declare () vec3 x) (assign (xyz) (var_ref x) (expression vec3 neg (expression vec3 + (expression vec3 * (swiz yzx (var_ref vec_ctor@21) )(swiz zxy (var_ref vec_ctor@22) )) (expression vec3 neg (expression vec3 * (swiz zxy (var_ref vec_ctor@21) )(swiz yzx (var_ref vec_ctor@22) )) ) ) ) ) (assign (xyz) (var_ref normalize_retval) (expression vec3 * (var_ref x) (expression float rsq (expression float dot (var_ref x) (var_ref x) ) ) ) ) (declare (temporary ) float max_retval) (assign (x) (var_ref max_retval) (expression float max (constant float (0.000000)) (expression float * (constant float (57.295776)) (expression float + (constant float (1.570796)) (expression float neg (expression float * (expression float sign (swiz y (var_ref normalize_retval) )) (expression float + (constant float (1.570796)) (expression float neg (expression float * (expression float sqrt (expression float + (constant float (1.000000)) (expression float neg (expression float abs (swiz y (var_ref normalize_retval) )) ) ) ) (expression float + (constant float (1.570796)) (expression float * (expression float abs (swiz y (var_ref normalize_retval) )) (expression float + (constant float (-0.214602)) (expression float * (expression float abs (swiz y (var_ref normalize_retval) )) (expression float + (constant float (0.086567)) (expression float * (expression float abs (swiz y (var_ref normalize_retval) )) (constant float (-0.031030)) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) (declare (temporary ) vec4 vec_ctor@23) (assign (x) (var_ref vec_ctor@23) (var_ref max_retval) ) (assign (y) (var_ref vec_ctor@23) (var_ref max_retval) ) (assign (z) (var_ref vec_ctor@23) (var_ref max_retval) ) (assign (w) (var_ref vec_ctor@23) (var_ref max_retval) ) (assign (xyzw) (var_ref gl_out_FragData0) (var_ref vec_ctor@23) ) (assign (xyzw) (var_ref gl_out_FragData0@24) (var_ref gl_out_FragData0) ) )) ) ) Vertex Program:angles_vertex_2654435771 Fragment Program:angles_fragment_2654435771 GLSL link result : GLSL IR for linked fragment program 0: ( (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (uniform ) sampler2D sampler_0) (declare (uniform ) (array vec4 9) gl_CurrentAttribFragMESA) (declare (shader_out ) vec4 gl_FragColor) (declare (temporary ) vec4 gl_FragColor) (function main (signature void (parameters ) ( (declare (temporary ) vec4 texenv_combine) (assign (xyzw) (var_ref texenv_combine) (expression vec4 * (tex vec4 (var_ref sampler_0) (swiz xy (array_ref (var_ref gl_CurrentAttribFragMESA) (constant uint (8)) ) ) 0 (swiz w (array_ref (var_ref gl_CurrentAttribFragMESA) (constant uint (8)) ) ) () )(var_ref gl_Color) ) ) (declare (temporary ) vec4 specular_add) (assign (w) (var_ref specular_add) (swiz w (var_ref texenv_combine) )) (assign (xyz) (var_ref specular_add) (expression vec3 + (swiz xyz (var_ref texenv_combine) )(swiz xyz (var_ref gl_SecondaryColor) )) ) (assign (xyzw) (var_ref gl_FragColor) (var_ref specular_add) ) (assign (xyzw) (var_ref gl_FragColor@25) (var_ref gl_FragColor) ) )) ) ) GLSL source for vertex shader 5: #version 120 vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec3 permute(vec3 x) { return mod289( ((x*34.0) + 1.0) * x); } float snoise1(vec2 v) { const vec4 C = vec4( 0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439); vec2 i = floor(v + dot(v, C.yy)); vec2 x0 = v - i + dot(i, C.xx); vec2 i1; i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); vec4 x12 = x0.xyxy + C.xxzz; x12.xy -= i1; i = mod289(i); vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0)); vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0); m = m*m; m = m*m; vec3 x = 2.0 * fract(p * C.www) - 1.0; vec3 h = abs(x) - 0.5; vec3 ox = floor(x + 0.5); vec3 a0 = x - ox; m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h ); vec3 g; g.x = a0.x * x0.x + h.x * x0.y; g.yz = a0.yz * x12.xz + h.yz * x12.yw; return 0.5 + 0.5 * 130.0 * dot(m, g); } float snoise(vec2 v, float zoom, int octaves, float persistence) { float total = 0.0; for (int i=0; i < 5; ++i) { float frequency = pow(2.f, float(i)); float amplitude = pow(persistence, float(i)); float nval = snoise1(v * frequency * zoom) * amplitude; total += i < octaves ? nval : 0.f; } float m = (persistence - 0.1f) * -0.83f + 1.f; return total * m; } float linRange(float x, float xa, float xb, float s) { return clamp(x < xa ? (x-xa)/s+1.f : (xb-x)/s+1.f, 0.0, 1.0); } attribute vec4 vertex; uniform mat4 wvp; attribute vec2 uv0; varying vec2 uv; varying vec4 position; void main(void) { uv = uv0; gl_Position = ((wvp) * ( vertex)); } GLSL IR for shader 5: ( (declare (shader_in ) float gl_FogCoord) (declare (shader_in ) vec4 gl_MultiTexCoord7) (declare (shader_in ) vec4 gl_MultiTexCoord6) (declare (shader_in ) vec4 gl_MultiTexCoord5) (declare (shader_in ) vec4 gl_MultiTexCoord4) (declare (shader_in ) vec4 gl_MultiTexCoord3) (declare (shader_in ) vec4 gl_MultiTexCoord2) (declare (shader_in ) vec4 gl_MultiTexCoord1) (declare (shader_in ) vec4 gl_MultiTexCoord0) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec3 gl_Normal) (declare (shader_in ) vec4 gl_Vertex) (declare (shader_out ) vec4 gl_BackSecondaryColor) (declare (shader_out ) vec4 gl_FrontSecondaryColor) (declare (shader_out ) vec4 gl_BackColor) (declare (shader_out ) vec4 gl_FrontColor) (declare (shader_out ) vec4 gl_ClipVertex) (declare (shader_out ) float gl_FogFragCoord) (declare (shader_out ) (array vec4 0) gl_TexCoord) (declare (shader_out ) float gl_PointSize) (declare (shader_out ) vec4 gl_Position) (declare (uniform ) gl_FogParameters gl_Fog) (declare (uniform ) (array vec4 8) gl_ObjectPlaneQ) (declare (uniform ) (array vec4 8) gl_ObjectPlaneR) (declare (uniform ) (array vec4 8) gl_ObjectPlaneT) (declare (uniform ) (array vec4 8) gl_ObjectPlaneS) (declare (uniform ) (array vec4 8) gl_EyePlaneQ) (declare (uniform ) (array vec4 8) gl_EyePlaneR) (declare (uniform ) (array vec4 8) gl_EyePlaneT) (declare (uniform ) (array vec4 8) gl_EyePlaneS) (declare (uniform ) (array vec4 8) gl_TextureEnvColor) (declare (uniform ) (array gl_LightProducts 8) gl_BackLightProduct) (declare (uniform ) (array gl_LightProducts 8) gl_FrontLightProduct) (declare (uniform ) gl_LightModelProducts gl_BackLightModelProduct) (declare (uniform ) gl_LightModelProducts gl_FrontLightModelProduct) (declare (uniform ) (array gl_LightSourceParameters 8) gl_LightSource) (declare (uniform ) gl_MaterialParameters gl_BackMaterial) (declare (uniform ) gl_MaterialParameters gl_FrontMaterial) (declare (uniform ) gl_PointParameters gl_Point) (declare (uniform ) (array vec4 8) gl_ClipPlane) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverseTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverse) (declare (uniform ) (array mat4 8) gl_TextureMatrix) (declare (uniform ) vec4 gl_FogParamsOptimizedMESA) (declare (uniform ) gl_LightModelParameters gl_LightModel) (declare (uniform ) float gl_NormalScale) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverse) (declare (uniform ) mat4 gl_ProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewMatrixInverse) (declare (uniform ) mat3 gl_NormalMatrix) (declare (uniform ) mat4 gl_ModelViewProjectionMatrix) (declare (uniform ) mat4 gl_ProjectionMatrix) (declare (uniform ) mat4 gl_ModelViewMatrix) (declare (uniform ) (array vec4 56) gl_CurrentAttribFragMESA) (declare (uniform ) (array vec4 33) gl_CurrentAttribVertMESA) (declare (uniform ) gl_DepthRangeParameters gl_DepthRange) (declare (uniform ) int gl_NumSamples) (declare () int gl_MaxTextureCoords) (declare () int gl_MaxTextureUnits) (declare () int gl_MaxClipPlanes) (declare () int gl_MaxLights) (declare () int gl_MaxFragmentUniformComponents) (declare () int gl_MaxVaryingFloats) (declare () int gl_MaxVertexUniformComponents) (declare () int gl_MaxDrawBuffers) (declare () int gl_MaxTextureImageUnits) (declare () int gl_MaxCombinedTextureImageUnits) (declare () int gl_MaxVertexTextureImageUnits) (declare () int gl_MaxVertexAttribs) (declare (shader_in ) vec4 vertex) (declare (uniform ) mat4 wvp) (declare (shader_in ) vec2 uv0) (declare (shader_out ) vec2 uv) (declare (shader_out ) vec4 position) (function mod289 (signature vec3 (parameters (declare (in ) vec3 x) ) ( (declare (temporary ) vec3 floor_retval) (call floor (var_ref floor_retval) ((expression vec3 * (var_ref x) (expression float rcp (constant float (289.000000)) ) ) )) (return (expression vec3 + (var_ref x) (expression vec3 neg (expression vec3 * (var_ref floor_retval) (constant float (289.000000)) ) ) ) ) )) (signature vec2 (parameters (declare (in ) vec2 x) ) ( (declare (temporary ) vec2 floor_retval) (call floor (var_ref floor_retval) ((expression vec2 * (var_ref x) (expression float rcp (constant float (289.000000)) ) ) )) (return (expression vec2 + (var_ref x) (expression vec2 neg (expression vec2 * (var_ref floor_retval) (constant float (289.000000)) ) ) ) ) )) ) (function floor (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) (signature vec2 (parameters (declare (in ) vec2 x) ) ( )) ) (function permute (signature vec3 (parameters (declare (in ) vec3 x) ) ( (declare (temporary ) vec3 mod289_retval) (call mod289 (var_ref mod289_retval) ((expression vec3 * (expression vec3 + (expression vec3 * (var_ref x) (constant float (34.000000)) ) (constant float (1.000000)) ) (var_ref x) ) )) (return (var_ref mod289_retval) ) )) ) (function snoise1 (signature float (parameters (declare (in ) vec2 v) ) ( (declare () vec3 g) (declare () vec3 h) (declare () vec3 x) (declare () vec3 m) (declare () vec3 p) (declare () vec4 x12) (declare () vec2 i1) (declare () vec2 x0) (declare () vec2 i) (declare () vec4 C) (assign (xyzw) (var_ref C) (constant vec4 (0.211325 0.366025 -0.577350 0.024390)) ) (declare (temporary ) float dot_retval) (call dot (var_ref dot_retval) ((var_ref v) (constant vec2 (0.366025 0.366025)) )) (declare (temporary ) vec2 floor_retval) (call floor (var_ref floor_retval) ((expression vec2 + (var_ref v) (var_ref dot_retval) ) )) (assign (xy) (var_ref i) (var_ref floor_retval) ) (declare (temporary ) float dot_retval@26) (call dot (var_ref dot_retval@26) ((var_ref floor_retval) (constant vec2 (0.211325 0.211325)) )) (declare (temporary ) vec2 assignment_tmp) (assign (xy) (var_ref assignment_tmp) (expression vec2 + (expression vec2 + (var_ref v) (expression vec2 neg (var_ref i) ) ) (var_ref dot_retval@26) ) ) (assign (xy) (var_ref x0) (var_ref assignment_tmp) ) (declare (temporary ) vec2 conditional_tmp) (if (expression bool > (swiz x (var_ref assignment_tmp) )(swiz y (var_ref assignment_tmp) )) ( (assign (xy) (var_ref conditional_tmp) (constant vec2 (1.000000 0.000000)) ) ) ( (assign (xy) (var_ref conditional_tmp) (constant vec2 (0.000000 1.000000)) ) )) (assign (xy) (var_ref i1) (var_ref conditional_tmp) ) (declare (temporary ) vec4 assignment_tmp@27) (assign (xyzw) (var_ref assignment_tmp@27) (expression vec4 + (swiz xyxy (var_ref assignment_tmp) )(constant vec4 (0.211325 0.211325 -0.577350 -0.577350)) ) ) (assign (zw) (var_ref x12) (swiz zw (var_ref assignment_tmp@27) )) (assign (xy) (var_ref x12) (expression vec2 + (swiz xy (var_ref assignment_tmp@27) )(expression vec2 neg (var_ref conditional_tmp) ) ) ) (declare (temporary ) vec2 mod289_retval) (call mod289 (var_ref mod289_retval) ((var_ref i) )) (assign (xy) (var_ref i) (var_ref mod289_retval) ) (declare (temporary ) vec3 vec_ctor) (assign (xz) (var_ref vec_ctor) (constant vec2 (0.000000 1.000000)) ) (assign (y) (var_ref vec_ctor) (swiz y (var_ref i1) )) (declare (temporary ) vec3 permute_retval) (call permute (var_ref permute_retval) ((expression vec3 + (swiz y (var_ref mod289_retval) )(var_ref vec_ctor) ) )) (declare (temporary ) vec3 vec_ctor@28) (assign (xz) (var_ref vec_ctor@28) (constant vec2 (0.000000 1.000000)) ) (assign (y) (var_ref vec_ctor@28) (swiz x (var_ref i1) )) (declare (temporary ) vec3 permute_retval@29) (call permute (var_ref permute_retval@29) ((expression vec3 + (expression vec3 + (var_ref permute_retval) (swiz x (var_ref i) )) (var_ref vec_ctor@28) ) )) (assign (xyz) (var_ref p) (var_ref permute_retval@29) ) (declare (temporary ) float dot_retval@30) (call dot (var_ref dot_retval@30) ((var_ref x0) (var_ref x0) )) (declare (temporary ) float dot_retval@31) (call dot (var_ref dot_retval@31) ((swiz xy (var_ref x12) )(swiz xy (var_ref x12) ))) (declare (temporary ) float dot_retval@32) (call dot (var_ref dot_retval@32) ((swiz zw (var_ref x12) )(swiz zw (var_ref x12) ))) (declare (temporary ) vec3 vec_ctor@33) (assign (x) (var_ref vec_ctor@33) (var_ref dot_retval@30) ) (assign (y) (var_ref vec_ctor@33) (var_ref dot_retval@31) ) (assign (z) (var_ref vec_ctor@33) (var_ref dot_retval@32) ) (declare (temporary ) vec3 max_retval) (call max (var_ref max_retval) ((expression vec3 + (constant float (0.500000)) (expression vec3 neg (var_ref vec_ctor@33) ) ) (constant float (0.000000)) )) (assign (xyz) (var_ref m) (expression vec3 * (var_ref max_retval) (var_ref max_retval) ) ) (assign (xyz) (var_ref m) (expression vec3 * (var_ref m) (var_ref m) ) ) (declare (temporary ) vec3 fract_retval) (call fract (var_ref fract_retval) ((expression vec3 * (var_ref p) (swiz www (var_ref C) )) )) (declare (temporary ) vec3 assignment_tmp@34) (assign (xyz) (var_ref assignment_tmp@34) (expression vec3 + (expression vec3 * (constant float (2.000000)) (var_ref fract_retval) ) (constant float (-1.000000)) ) ) (assign (xyz) (var_ref x) (var_ref assignment_tmp@34) ) (declare (temporary ) vec3 abs_retval) (call abs (var_ref abs_retval) ((var_ref assignment_tmp@34) )) (assign (xyz) (var_ref h) (expression vec3 + (var_ref abs_retval) (constant float (-0.500000)) ) ) (declare (temporary ) vec3 floor_retval@35) (call floor (var_ref floor_retval@35) ((expression vec3 + (var_ref x) (constant float (0.500000)) ) )) (declare (temporary ) vec3 assignment_tmp@36) (assign (xyz) (var_ref assignment_tmp@36) (expression vec3 + (var_ref x) (expression vec3 neg (var_ref floor_retval@35) ) ) ) (assign (xyz) (var_ref m) (expression vec3 * (var_ref m) (expression vec3 + (constant float (1.792843)) (expression vec3 neg (expression vec3 * (constant float (0.853735)) (expression vec3 + (expression vec3 * (var_ref assignment_tmp@36) (var_ref assignment_tmp@36) ) (expression vec3 * (var_ref h) (var_ref h) ) ) ) ) ) ) ) (assign (x) (var_ref g) (expression float + (expression float * (swiz x (var_ref assignment_tmp@36) )(swiz x (var_ref x0) )) (expression float * (swiz x (var_ref h) )(swiz y (var_ref x0) )) ) ) (assign (yz) (var_ref g) (expression vec2 + (expression vec2 * (swiz yz (var_ref assignment_tmp@36) )(swiz xz (var_ref x12) )) (expression vec2 * (swiz yz (var_ref h) )(swiz yw (var_ref x12) )) ) ) (declare (temporary ) float dot_retval@37) (call dot (var_ref dot_retval@37) ((var_ref m) (var_ref g) )) (return (expression float + (constant float (0.500000)) (expression float * (constant float (65.000000)) (var_ref dot_retval@37) ) ) ) )) ) (function dot (signature float (parameters (declare (in ) vec2 x) (declare (in ) vec2 y) ) ( )) (signature float (parameters (declare (in ) vec3 x) (declare (in ) vec3 y) ) ( )) ) (function max (signature vec3 (parameters (declare (in ) vec3 x) (declare (in ) float y) ) ( )) ) (function fract (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) ) (function abs (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) ) (function snoise (signature float (parameters (declare (in ) vec2 v) (declare (in ) float zoom) (declare (in ) int octaves) (declare (in ) float persistence) ) ( (declare () int i) (declare () float total) (assign (x) (var_ref total) (constant float (0.000000)) ) (assign (x) (var_ref i) (constant int (0)) ) (loop ( (declare () float amplitude) (declare () float frequency) (if (expression bool >= (var_ref i) (constant int (5)) ) ( break ) ()) (declare (temporary ) float pow_retval) (call pow (var_ref pow_retval) ((constant float (2.000000)) (expression float i2f (var_ref i) ) )) (assign (x) (var_ref frequency) (var_ref pow_retval) ) (declare (temporary ) float pow_retval@38) (call pow (var_ref pow_retval@38) ((var_ref persistence) (expression float i2f (var_ref i) ) )) (assign (x) (var_ref amplitude) (var_ref pow_retval@38) ) (declare (temporary ) float snoise1_retval) (call snoise1 (var_ref snoise1_retval) ((expression vec2 * (expression vec2 * (var_ref v) (var_ref frequency) ) (var_ref zoom) ) )) (declare (temporary ) float assignment_tmp) (assign (x) (var_ref assignment_tmp) (expression float * (var_ref snoise1_retval) (var_ref amplitude) ) ) (declare (temporary ) float conditional_tmp) (if (expression bool < (var_ref i) (var_ref octaves) ) ( (assign (x) (var_ref conditional_tmp) (var_ref assignment_tmp) ) ) ( (assign (x) (var_ref conditional_tmp) (constant float (0.000000)) ) )) (assign (x) (var_ref total) (expression float + (var_ref total) (var_ref conditional_tmp) ) ) (assign (x) (var_ref i) (expression int + (var_ref i) (constant int (1)) ) ) )) (return (expression float * (var_ref total) (expression float + (expression float * (expression float + (var_ref persistence) (constant float (-0.100000)) ) (constant float (-0.830000)) ) (constant float (1.000000)) ) ) ) )) ) (function pow (signature float (parameters (declare (in ) float x) (declare (in ) float y) ) ( )) ) (function linRange (signature float (parameters (declare (in ) float x) (declare (in ) float xa) (declare (in ) float xb) (declare (in ) float s) ) ( (declare (temporary ) float conditional_tmp) (if (expression bool < (var_ref x) (var_ref xa) ) ( (assign (x) (var_ref conditional_tmp) (expression float + (expression float / (expression float + (var_ref x) (expression float neg (var_ref xa) ) ) (var_ref s) ) (constant float (1.000000)) ) ) ) ( (assign (x) (var_ref conditional_tmp) (expression float + (expression float / (expression float + (var_ref xb) (expression float neg (var_ref x) ) ) (var_ref s) ) (constant float (1.000000)) ) ) )) (declare (temporary ) float clamp_retval) (call clamp (var_ref clamp_retval) ((var_ref conditional_tmp) (constant float (0.000000)) (constant float (1.000000)) )) (return (var_ref clamp_retval) ) )) ) (function clamp (signature float (parameters (declare (in ) float x) (declare (in ) float minVal) (declare (in ) float maxVal) ) ( )) ) (function main (signature void (parameters ) ( (assign (xy) (var_ref uv) (var_ref uv0) ) (assign (xyzw) (var_ref gl_Position) (expression vec4 * (var_ref wvp) (var_ref vertex) ) ) )) ) ) GLSL compiled: GLSL source for fragment shader 6: #version 120 vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec3 permute(vec3 x) { return mod289( ((x*34.0) + 1.0) * x); } float snoise1(vec2 v) { const vec4 C = vec4( 0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439); vec2 i = floor(v + dot(v, C.yy)); vec2 x0 = v - i + dot(i, C.xx); vec2 i1; i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); vec4 x12 = x0.xyxy + C.xxzz; x12.xy -= i1; i = mod289(i); vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0)); vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0); m = m*m; m = m*m; vec3 x = 2.0 * fract(p * C.www) - 1.0; vec3 h = abs(x) - 0.5; vec3 ox = floor(x + 0.5); vec3 a0 = x - ox; m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h ); vec3 g; g.x = a0.x * x0.x + h.x * x0.y; g.yz = a0.yz * x12.xz + h.yz * x12.yw; return 0.5 + 0.5 * 130.0 * dot(m, g); } float snoise(vec2 v, float zoom, int octaves, float persistence) { float total = 0.0; for (int i=0; i < 5; ++i) { float frequency = pow(2.f, float(i)); float amplitude = pow(persistence, float(i)); float nval = snoise1(v * frequency * zoom) * amplitude; total += i < octaves ? nval : 0.f; } float m = (persistence - 0.1f) * -0.83f + 1.f; return total * m; } float linRange(float x, float xa, float xb, float s) { return clamp(x < xa ? (x-xa)/s+1.f : (xb-x)/s+1.f, 0.0, 1.0); } varying vec2 uv; uniform vec4 Hmin; uniform vec4 Hmax; uniform vec4 Hsmt; uniform vec4 Amin; uniform vec4 Amax; uniform vec4 Asmt; uniform vec4 Nonly; uniform vec3 Nnext; uniform vec3 Nprev; uniform vec2 Nnext2; uniform vec3 Nfreq; uniform vec3 Noct; uniform vec3 Npers; uniform vec3 Npow; uniform vec2 Nfreq2; uniform vec2 Noct2; uniform vec2 Npers2; uniform vec2 Npow2; uniform float terrainWorldSize; uniform sampler2D samHMap; uniform sampler2D samAng; void main(void) { vec2 uv1 = vec2(uv.x, 1-uv.y); vec2 tuv = uv1 * terrainWorldSize / 512.f; float h = texture2D(samHMap, uv1).x; float a = texture2D(samAng, uv).x; float l0a = Nonly.x < 0.1f ? 0.f : linRange(a, Amin.x, Amax.x, Asmt.x) * linRange(h, Hmin.x, Hmax.x, Hsmt.x), l0 = l0a; float l1a = Nonly.y < 0.1f ? 0.f : linRange(a, Amin.y, Amax.y, Asmt.y) * linRange(h, Hmin.y, Hmax.y, Hsmt.y), l1 = l1a; float l2a = Nonly.z < 0.1f ? 0.f : linRange(a, Amin.z, Amax.z, Asmt.z) * linRange(h, Hmin.z, Hmax.z, Hsmt.z), l2 = l2a; float l3a = Nonly.w < 0.1f ? 0.f : linRange(a, Amin.w, Amax.w, Asmt.w) * linRange(h, Hmin.w, Hmax.w, Hsmt.w), l3 = l3a; float n0 = Nnext.x < 0.01f ? 0.f : Nnext.x * pow( snoise(tuv, Nfreq.x, int(Noct.x), Npers.x), Npow.x); float n1 = Nnext.y < 0.01f ? 0.f : Nnext.y * pow( snoise(tuv, Nfreq.y, int(Noct.y), Npers.y), Npow.y); float n2 = Nnext.z < 0.01f ? 0.f : Nnext.z * pow( snoise(tuv, Nfreq.z, int(Noct.z), Npers.z), Npow.z); float p1 = Nprev.x < 0.01f ? 0.f : Nprev.x * pow( snoise(tuv, Nfreq.x+3.f, int(Noct.x), Npers.x), Npow.x); float p2 = Nprev.y < 0.01f ? 0.f : Nprev.y * pow( snoise(tuv, Nfreq.y+3.f, int(Noct.y), Npers.y), Npow.y); float p3 = Nprev.z < 0.01f ? 0.f : Nprev.z * pow( snoise(tuv, Nfreq.z+3.f, int(Noct.z), Npers.z), Npow.z); float m0 = Nnext2.x < 0.01f ? 0.f : Nnext2.x * pow( snoise(tuv, Nfreq2.x, int(Noct2.x), Npers2.x), Npow2.x); float m1 = Nnext2.y < 0.01f ? 0.f : Nnext2.y * pow( snoise(tuv, Nfreq2.y, int(Noct2.y), Npers2.y), Npow2.y); l1 += l0a * n0; l0 *= 1.f-n0; l2 += l1a * n1; l1 *= 1.f-n1; l3 += l2a * n2; l2 *= 1.f-n2; l0 += l1a * p1; l1 *= 1.f-p1; l1 += l2a * p2; l2 *= 1.f-p2; l2 += l3a * p3; l3 *= 1.f-p3; l2 += l0a * m0; l0 *= 1.f-m0; l3 += l1a * m1; l1 *= 1.f-m1; l0 = clamp(l0, 0.0, 1.0); l1 = clamp(l1, 0.0, 1.0); l2 = clamp(l2, 0.0, 1.0); l3 = clamp(l3, 0.0, 1.0); float ll = l0+l1+l2+l3; if (ll < 0.01f) { l0 = 1.f; ll = l0+l1+l2+l3; } ll = 1/ll; l0 *= ll; l1 *= ll; l2 *= ll; l3 *= ll; gl_FragData[0] = vec4(l0, l1, l2, l3); } GLSL IR for shader 6: ( (declare (shader_out ) float gl_FragDepth) (declare (shader_out ) (array vec4 8) gl_FragData) (declare (shader_out ) vec4 gl_FragColor) (declare (shader_in ) vec2 gl_PointCoord) (declare (shader_in ) bool gl_FrontFacing) (declare (shader_in ) vec4 gl_FragCoord) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) float gl_FogFragCoord) (declare (shader_in ) (array vec4 0) gl_TexCoord) (declare (uniform ) gl_FogParameters gl_Fog) (declare (uniform ) (array vec4 8) gl_ObjectPlaneQ) (declare (uniform ) (array vec4 8) gl_ObjectPlaneR) (declare (uniform ) (array vec4 8) gl_ObjectPlaneT) (declare (uniform ) (array vec4 8) gl_ObjectPlaneS) (declare (uniform ) (array vec4 8) gl_EyePlaneQ) (declare (uniform ) (array vec4 8) gl_EyePlaneR) (declare (uniform ) (array vec4 8) gl_EyePlaneT) (declare (uniform ) (array vec4 8) gl_EyePlaneS) (declare (uniform ) (array vec4 8) gl_TextureEnvColor) (declare (uniform ) (array gl_LightProducts 8) gl_BackLightProduct) (declare (uniform ) (array gl_LightProducts 8) gl_FrontLightProduct) (declare (uniform ) gl_LightModelProducts gl_BackLightModelProduct) (declare (uniform ) gl_LightModelProducts gl_FrontLightModelProduct) (declare (uniform ) (array gl_LightSourceParameters 8) gl_LightSource) (declare (uniform ) gl_MaterialParameters gl_BackMaterial) (declare (uniform ) gl_MaterialParameters gl_FrontMaterial) (declare (uniform ) gl_PointParameters gl_Point) (declare (uniform ) (array vec4 8) gl_ClipPlane) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverseTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverse) (declare (uniform ) (array mat4 8) gl_TextureMatrix) (declare (uniform ) vec4 gl_FogParamsOptimizedMESA) (declare (uniform ) gl_LightModelParameters gl_LightModel) (declare (uniform ) float gl_NormalScale) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverse) (declare (uniform ) mat4 gl_ProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewMatrixInverse) (declare (uniform ) mat3 gl_NormalMatrix) (declare (uniform ) mat4 gl_ModelViewProjectionMatrix) (declare (uniform ) mat4 gl_ProjectionMatrix) (declare (uniform ) mat4 gl_ModelViewMatrix) (declare (uniform ) (array vec4 56) gl_CurrentAttribFragMESA) (declare (uniform ) (array vec4 33) gl_CurrentAttribVertMESA) (declare (uniform ) gl_DepthRangeParameters gl_DepthRange) (declare (uniform ) int gl_NumSamples) (declare () int gl_MaxTextureCoords) (declare () int gl_MaxTextureUnits) (declare () int gl_MaxClipPlanes) (declare () int gl_MaxLights) (declare () int gl_MaxFragmentUniformComponents) (declare () int gl_MaxVaryingFloats) (declare () int gl_MaxVertexUniformComponents) (declare () int gl_MaxDrawBuffers) (declare () int gl_MaxTextureImageUnits) (declare () int gl_MaxCombinedTextureImageUnits) (declare () int gl_MaxVertexTextureImageUnits) (declare () int gl_MaxVertexAttribs) (declare (shader_in ) vec2 uv) (declare (uniform ) vec4 Hmin) (declare (uniform ) vec4 Hmax) (declare (uniform ) vec4 Hsmt) (declare (uniform ) vec4 Amin) (declare (uniform ) vec4 Amax) (declare (uniform ) vec4 Asmt) (declare (uniform ) vec4 Nonly) (declare (uniform ) vec3 Nnext) (declare (uniform ) vec3 Nprev) (declare (uniform ) vec2 Nnext2) (declare (uniform ) vec3 Nfreq) (declare (uniform ) vec3 Noct) (declare (uniform ) vec3 Npers) (declare (uniform ) vec3 Npow) (declare (uniform ) vec2 Nfreq2) (declare (uniform ) vec2 Noct2) (declare (uniform ) vec2 Npers2) (declare (uniform ) vec2 Npow2) (declare (uniform ) float terrainWorldSize) (declare (uniform ) sampler2D samHMap) (declare (uniform ) sampler2D samAng) (function mod289 (signature vec3 (parameters (declare (in ) vec3 x) ) ( (declare (temporary ) vec3 floor_retval) (call floor (var_ref floor_retval) ((expression vec3 * (var_ref x) (expression float rcp (constant float (289.000000)) ) ) )) (return (expression vec3 + (var_ref x) (expression vec3 neg (expression vec3 * (var_ref floor_retval) (constant float (289.000000)) ) ) ) ) )) (signature vec2 (parameters (declare (in ) vec2 x) ) ( (declare (temporary ) vec2 floor_retval) (call floor (var_ref floor_retval) ((expression vec2 * (var_ref x) (expression float rcp (constant float (289.000000)) ) ) )) (return (expression vec2 + (var_ref x) (expression vec2 neg (expression vec2 * (var_ref floor_retval) (constant float (289.000000)) ) ) ) ) )) ) (function floor (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) (signature vec2 (parameters (declare (in ) vec2 x) ) ( )) ) (function permute (signature vec3 (parameters (declare (in ) vec3 x) ) ( (declare (temporary ) vec3 mod289_retval) (call mod289 (var_ref mod289_retval) ((expression vec3 * (expression vec3 + (expression vec3 * (var_ref x) (constant float (34.000000)) ) (constant float (1.000000)) ) (var_ref x) ) )) (return (var_ref mod289_retval) ) )) ) (function snoise1 (signature float (parameters (declare (in ) vec2 v) ) ( (declare () vec3 g) (declare () vec3 h) (declare () vec3 x) (declare () vec3 m) (declare () vec3 p) (declare () vec4 x12) (declare () vec2 i1) (declare () vec2 x0) (declare () vec2 i) (declare () vec4 C) (assign (xyzw) (var_ref C) (constant vec4 (0.211325 0.366025 -0.577350 0.024390)) ) (declare (temporary ) float dot_retval) (call dot (var_ref dot_retval) ((var_ref v) (constant vec2 (0.366025 0.366025)) )) (declare (temporary ) vec2 floor_retval) (call floor (var_ref floor_retval) ((expression vec2 + (var_ref v) (var_ref dot_retval) ) )) (assign (xy) (var_ref i) (var_ref floor_retval) ) (declare (temporary ) float dot_retval@39) (call dot (var_ref dot_retval@39) ((var_ref floor_retval) (constant vec2 (0.211325 0.211325)) )) (declare (temporary ) vec2 assignment_tmp) (assign (xy) (var_ref assignment_tmp) (expression vec2 + (expression vec2 + (var_ref v) (expression vec2 neg (var_ref i) ) ) (var_ref dot_retval@39) ) ) (assign (xy) (var_ref x0) (var_ref assignment_tmp) ) (declare (temporary ) vec2 conditional_tmp) (if (expression bool > (swiz x (var_ref assignment_tmp) )(swiz y (var_ref assignment_tmp) )) ( (assign (xy) (var_ref conditional_tmp) (constant vec2 (1.000000 0.000000)) ) ) ( (assign (xy) (var_ref conditional_tmp) (constant vec2 (0.000000 1.000000)) ) )) (assign (xy) (var_ref i1) (var_ref conditional_tmp) ) (declare (temporary ) vec4 assignment_tmp@40) (assign (xyzw) (var_ref assignment_tmp@40) (expression vec4 + (swiz xyxy (var_ref assignment_tmp) )(constant vec4 (0.211325 0.211325 -0.577350 -0.577350)) ) ) (assign (zw) (var_ref x12) (swiz zw (var_ref assignment_tmp@40) )) (assign (xy) (var_ref x12) (expression vec2 + (swiz xy (var_ref assignment_tmp@40) )(expression vec2 neg (var_ref conditional_tmp) ) ) ) (declare (temporary ) vec2 mod289_retval) (call mod289 (var_ref mod289_retval) ((var_ref i) )) (assign (xy) (var_ref i) (var_ref mod289_retval) ) (declare (temporary ) vec3 vec_ctor) (assign (xz) (var_ref vec_ctor) (constant vec2 (0.000000 1.000000)) ) (assign (y) (var_ref vec_ctor) (swiz y (var_ref i1) )) (declare (temporary ) vec3 permute_retval) (call permute (var_ref permute_retval) ((expression vec3 + (swiz y (var_ref mod289_retval) )(var_ref vec_ctor) ) )) (declare (temporary ) vec3 vec_ctor@41) (assign (xz) (var_ref vec_ctor@41) (constant vec2 (0.000000 1.000000)) ) (assign (y) (var_ref vec_ctor@41) (swiz x (var_ref i1) )) (declare (temporary ) vec3 permute_retval@42) (call permute (var_ref permute_retval@42) ((expression vec3 + (expression vec3 + (var_ref permute_retval) (swiz x (var_ref i) )) (var_ref vec_ctor@41) ) )) (assign (xyz) (var_ref p) (var_ref permute_retval@42) ) (declare (temporary ) float dot_retval@43) (call dot (var_ref dot_retval@43) ((var_ref x0) (var_ref x0) )) (declare (temporary ) float dot_retval@44) (call dot (var_ref dot_retval@44) ((swiz xy (var_ref x12) )(swiz xy (var_ref x12) ))) (declare (temporary ) float dot_retval@45) (call dot (var_ref dot_retval@45) ((swiz zw (var_ref x12) )(swiz zw (var_ref x12) ))) (declare (temporary ) vec3 vec_ctor@46) (assign (x) (var_ref vec_ctor@46) (var_ref dot_retval@43) ) (assign (y) (var_ref vec_ctor@46) (var_ref dot_retval@44) ) (assign (z) (var_ref vec_ctor@46) (var_ref dot_retval@45) ) (declare (temporary ) vec3 max_retval) (call max (var_ref max_retval) ((expression vec3 + (constant float (0.500000)) (expression vec3 neg (var_ref vec_ctor@46) ) ) (constant float (0.000000)) )) (assign (xyz) (var_ref m) (expression vec3 * (var_ref max_retval) (var_ref max_retval) ) ) (assign (xyz) (var_ref m) (expression vec3 * (var_ref m) (var_ref m) ) ) (declare (temporary ) vec3 fract_retval) (call fract (var_ref fract_retval) ((expression vec3 * (var_ref p) (swiz www (var_ref C) )) )) (declare (temporary ) vec3 assignment_tmp@47) (assign (xyz) (var_ref assignment_tmp@47) (expression vec3 + (expression vec3 * (constant float (2.000000)) (var_ref fract_retval) ) (constant float (-1.000000)) ) ) (assign (xyz) (var_ref x) (var_ref assignment_tmp@47) ) (declare (temporary ) vec3 abs_retval) (call abs (var_ref abs_retval) ((var_ref assignment_tmp@47) )) (assign (xyz) (var_ref h) (expression vec3 + (var_ref abs_retval) (constant float (-0.500000)) ) ) (declare (temporary ) vec3 floor_retval@48) (call floor (var_ref floor_retval@48) ((expression vec3 + (var_ref x) (constant float (0.500000)) ) )) (declare (temporary ) vec3 assignment_tmp@49) (assign (xyz) (var_ref assignment_tmp@49) (expression vec3 + (var_ref x) (expression vec3 neg (var_ref floor_retval@48) ) ) ) (assign (xyz) (var_ref m) (expression vec3 * (var_ref m) (expression vec3 + (constant float (1.792843)) (expression vec3 neg (expression vec3 * (constant float (0.853735)) (expression vec3 + (expression vec3 * (var_ref assignment_tmp@49) (var_ref assignment_tmp@49) ) (expression vec3 * (var_ref h) (var_ref h) ) ) ) ) ) ) ) (assign (x) (var_ref g) (expression float + (expression float * (swiz x (var_ref assignment_tmp@49) )(swiz x (var_ref x0) )) (expression float * (swiz x (var_ref h) )(swiz y (var_ref x0) )) ) ) (assign (yz) (var_ref g) (expression vec2 + (expression vec2 * (swiz yz (var_ref assignment_tmp@49) )(swiz xz (var_ref x12) )) (expression vec2 * (swiz yz (var_ref h) )(swiz yw (var_ref x12) )) ) ) (declare (temporary ) float dot_retval@50) (call dot (var_ref dot_retval@50) ((var_ref m) (var_ref g) )) (return (expression float + (constant float (0.500000)) (expression float * (constant float (65.000000)) (var_ref dot_retval@50) ) ) ) )) ) (function dot (signature float (parameters (declare (in ) vec2 x) (declare (in ) vec2 y) ) ( )) (signature float (parameters (declare (in ) vec3 x) (declare (in ) vec3 y) ) ( )) ) (function max (signature vec3 (parameters (declare (in ) vec3 x) (declare (in ) float y) ) ( )) ) (function fract (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) ) (function abs (signature vec3 (parameters (declare (in ) vec3 x) ) ( )) ) (function snoise (signature float (parameters (declare (in ) vec2 v) (declare (in ) float zoom) (declare (in ) int octaves) (declare (in ) float persistence) ) ( (declare () int i) (declare () float total) (assign (x) (var_ref total) (constant float (0.000000)) ) (assign (x) (var_ref i) (constant int (0)) ) (loop ( (declare () float amplitude) (declare () float frequency) (if (expression bool >= (var_ref i) (constant int (5)) ) ( break ) ()) (declare (temporary ) float pow_retval) (call pow (var_ref pow_retval) ((constant float (2.000000)) (expression float i2f (var_ref i) ) )) (assign (x) (var_ref frequency) (var_ref pow_retval) ) (declare (temporary ) float pow_retval@51) (call pow (var_ref pow_retval@51) ((var_ref persistence) (expression float i2f (var_ref i) ) )) (assign (x) (var_ref amplitude) (var_ref pow_retval@51) ) (declare (temporary ) float snoise1_retval) (call snoise1 (var_ref snoise1_retval) ((expression vec2 * (expression vec2 * (var_ref v) (var_ref frequency) ) (var_ref zoom) ) )) (declare (temporary ) float assignment_tmp) (assign (x) (var_ref assignment_tmp) (expression float * (var_ref snoise1_retval) (var_ref amplitude) ) ) (declare (temporary ) float conditional_tmp) (if (expression bool < (var_ref i) (var_ref octaves) ) ( (assign (x) (var_ref conditional_tmp) (var_ref assignment_tmp) ) ) ( (assign (x) (var_ref conditional_tmp) (constant float (0.000000)) ) )) (assign (x) (var_ref total) (expression float + (var_ref total) (var_ref conditional_tmp) ) ) (assign (x) (var_ref i) (expression int + (var_ref i) (constant int (1)) ) ) )) (return (expression float * (var_ref total) (expression float + (expression float * (expression float + (var_ref persistence) (constant float (-0.100000)) ) (constant float (-0.830000)) ) (constant float (1.000000)) ) ) ) )) ) (function pow (signature float (parameters (declare (in ) float x) (declare (in ) float y) ) ( )) ) (function linRange (signature float (parameters (declare (in ) float x) (declare (in ) float xa) (declare (in ) float xb) (declare (in ) float s) ) ( (declare (temporary ) float conditional_tmp) (if (expression bool < (var_ref x) (var_ref xa) ) ( (assign (x) (var_ref conditional_tmp) (expression float + (expression float / (expression float + (var_ref x) (expression float neg (var_ref xa) ) ) (var_ref s) ) (constant float (1.000000)) ) ) ) ( (assign (x) (var_ref conditional_tmp) (expression float + (expression float / (expression float + (var_ref xb) (expression float neg (var_ref x) ) ) (var_ref s) ) (constant float (1.000000)) ) ) )) (declare (temporary ) float clamp_retval) (call clamp (var_ref clamp_retval) ((var_ref conditional_tmp) (constant float (0.000000)) (constant float (1.000000)) )) (return (var_ref clamp_retval) ) )) ) (function clamp (signature float (parameters (declare (in ) float x) (declare (in ) float minVal) (declare (in ) float maxVal) ) ( )) ) (function main (signature void (parameters ) ( (declare () float ll) (declare () float m0) (declare () float p3) (declare () float p2) (declare () float p1) (declare () float n2) (declare () float n1) (declare () float n0) (declare () float l3) (declare () float l3a) (declare () float l2) (declare () float l2a) (declare () float l1) (declare () float l1a) (declare () float l0) (declare () float l0a) (declare () float a) (declare () float h) (declare () vec2 tuv) (declare (temporary ) vec2 vec_ctor) (assign (x) (var_ref vec_ctor) (swiz x (var_ref uv) )) (assign (y) (var_ref vec_ctor) (expression float + (constant float (1.000000)) (expression float neg (swiz y (var_ref uv) )) ) ) (assign (xy) (var_ref tuv) (expression vec2 / (expression vec2 * (var_ref vec_ctor) (var_ref terrainWorldSize) ) (constant float (512.000000)) ) ) (declare (temporary ) vec4 texture2D_retval) (call texture2D (var_ref texture2D_retval) ((var_ref samHMap) (var_ref vec_ctor) )) (assign (x) (var_ref h) (swiz x (var_ref texture2D_retval) )) (declare (temporary ) vec4 texture2D_retval@52) (call texture2D (var_ref texture2D_retval@52) ((var_ref samAng) (var_ref uv) )) (declare (temporary ) float assignment_tmp) (assign (x) (var_ref assignment_tmp) (swiz x (var_ref texture2D_retval@52) )) (assign (x) (var_ref a) (var_ref assignment_tmp) ) (declare (temporary ) float conditional_tmp) (if (expression bool < (swiz x (var_ref Nonly) )(constant float (0.100000)) ) ( (assign (x) (var_ref conditional_tmp) (constant float (0.000000)) ) ) ( (declare (temporary ) float linRange_retval) (call linRange (var_ref linRange_retval) ((var_ref assignment_tmp) (swiz x (var_ref Amin) )(swiz x (var_ref Amax) )(swiz x (var_ref Asmt) ))) (declare (temporary ) float linRange_retval@53) (call linRange (var_ref linRange_retval@53) ((var_ref h) (swiz x (var_ref Hmin) )(swiz x (var_ref Hmax) )(swiz x (var_ref Hsmt) ))) (assign (x) (var_ref conditional_tmp) (expression float * (var_ref linRange_retval) (var_ref linRange_retval@53) ) ) )) (assign (x) (var_ref l0a) (var_ref conditional_tmp) ) (assign (x) (var_ref l0) (var_ref conditional_tmp) ) (declare (temporary ) float conditional_tmp@54) (if (expression bool < (swiz y (var_ref Nonly) )(constant float (0.100000)) ) ( (assign (x) (var_ref conditional_tmp@54) (constant float (0.000000)) ) ) ( (declare (temporary ) float linRange_retval@55) (call linRange (var_ref linRange_retval@55) ((var_ref a) (swiz y (var_ref Amin) )(swiz y (var_ref Amax) )(swiz y (var_ref Asmt) ))) (declare (temporary ) float linRange_retval@56) (call linRange (var_ref linRange_retval@56) ((var_ref h) (swiz y (var_ref Hmin) )(swiz y (var_ref Hmax) )(swiz y (var_ref Hsmt) ))) (assign (x) (var_ref conditional_tmp@54) (expression float * (var_ref linRange_retval@55) (var_ref linRange_retval@56) ) ) )) (assign (x) (var_ref l1a) (var_ref conditional_tmp@54) ) (assign (x) (var_ref l1) (var_ref conditional_tmp@54) ) (declare (temporary ) float conditional_tmp@57) (if (expression bool < (swiz z (var_ref Nonly) )(constant float (0.100000)) ) ( (assign (x) (var_ref conditional_tmp@57) (constant float (0.000000)) ) ) ( (declare (temporary ) float linRange_retval@58) (call linRange (var_ref linRange_retval@58) ((var_ref a) (swiz z (var_ref Amin) )(swiz z (var_ref Amax) )(swiz z (var_ref Asmt) ))) (declare (temporary ) float linRange_retval@59) (call linRange (var_ref linRange_retval@59) ((var_ref h) (swiz z (var_ref Hmin) )(swiz z (var_ref Hmax) )(swiz z (var_ref Hsmt) ))) (assign (x) (var_ref conditional_tmp@57) (expression float * (var_ref linRange_retval@58) (var_ref linRange_retval@59) ) ) )) (assign (x) (var_ref l2a) (var_ref conditional_tmp@57) ) (assign (x) (var_ref l2) (var_ref conditional_tmp@57) ) (declare (temporary ) float conditional_tmp@60) (if (expression bool < (swiz w (var_ref Nonly) )(constant float (0.100000)) ) ( (assign (x) (var_ref conditional_tmp@60) (constant float (0.000000)) ) ) ( (declare (temporary ) float linRange_retval@61) (call linRange (var_ref linRange_retval@61) ((var_ref a) (swiz w (var_ref Amin) )(swiz w (var_ref Amax) )(swiz w (var_ref Asmt) ))) (declare (temporary ) float linRange_retval@62) (call linRange (var_ref linRange_retval@62) ((var_ref h) (swiz w (var_ref Hmin) )(swiz w (var_ref Hmax) )(swiz w (var_ref Hsmt) ))) (assign (x) (var_ref conditional_tmp@60) (expression float * (var_ref linRange_retval@61) (var_ref linRange_retval@62) ) ) )) (assign (x) (var_ref l3a) (var_ref conditional_tmp@60) ) (assign (x) (var_ref l3) (var_ref conditional_tmp@60) ) (declare (temporary ) float conditional_tmp@63) (if (expression bool < (swiz x (var_ref Nnext) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@63) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval) (call snoise (var_ref snoise_retval) ((var_ref tuv) (swiz x (var_ref Nfreq) )(expression int f2i (swiz x (var_ref Noct) )) (swiz x (var_ref Npers) ))) (declare (temporary ) float pow_retval) (call pow (var_ref pow_retval) ((var_ref snoise_retval) (swiz x (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@63) (expression float * (swiz x (var_ref Nnext) )(var_ref pow_retval) ) ) )) (assign (x) (var_ref n0) (var_ref conditional_tmp@63) ) (declare (temporary ) float conditional_tmp@64) (if (expression bool < (swiz y (var_ref Nnext) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@64) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@65) (call snoise (var_ref snoise_retval@65) ((var_ref tuv) (swiz y (var_ref Nfreq) )(expression int f2i (swiz y (var_ref Noct) )) (swiz y (var_ref Npers) ))) (declare (temporary ) float pow_retval@66) (call pow (var_ref pow_retval@66) ((var_ref snoise_retval@65) (swiz y (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@64) (expression float * (swiz y (var_ref Nnext) )(var_ref pow_retval@66) ) ) )) (assign (x) (var_ref n1) (var_ref conditional_tmp@64) ) (declare (temporary ) float conditional_tmp@67) (if (expression bool < (swiz z (var_ref Nnext) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@67) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@68) (call snoise (var_ref snoise_retval@68) ((var_ref tuv) (swiz z (var_ref Nfreq) )(expression int f2i (swiz z (var_ref Noct) )) (swiz z (var_ref Npers) ))) (declare (temporary ) float pow_retval@69) (call pow (var_ref pow_retval@69) ((var_ref snoise_retval@68) (swiz z (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@67) (expression float * (swiz z (var_ref Nnext) )(var_ref pow_retval@69) ) ) )) (assign (x) (var_ref n2) (var_ref conditional_tmp@67) ) (declare (temporary ) float conditional_tmp@70) (if (expression bool < (swiz x (var_ref Nprev) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@70) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@71) (call snoise (var_ref snoise_retval@71) ((var_ref tuv) (expression float + (swiz x (var_ref Nfreq) )(constant float (3.000000)) ) (expression int f2i (swiz x (var_ref Noct) )) (swiz x (var_ref Npers) ))) (declare (temporary ) float pow_retval@72) (call pow (var_ref pow_retval@72) ((var_ref snoise_retval@71) (swiz x (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@70) (expression float * (swiz x (var_ref Nprev) )(var_ref pow_retval@72) ) ) )) (assign (x) (var_ref p1) (var_ref conditional_tmp@70) ) (declare (temporary ) float conditional_tmp@73) (if (expression bool < (swiz y (var_ref Nprev) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@73) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@74) (call snoise (var_ref snoise_retval@74) ((var_ref tuv) (expression float + (swiz y (var_ref Nfreq) )(constant float (3.000000)) ) (expression int f2i (swiz y (var_ref Noct) )) (swiz y (var_ref Npers) ))) (declare (temporary ) float pow_retval@75) (call pow (var_ref pow_retval@75) ((var_ref snoise_retval@74) (swiz y (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@73) (expression float * (swiz y (var_ref Nprev) )(var_ref pow_retval@75) ) ) )) (assign (x) (var_ref p2) (var_ref conditional_tmp@73) ) (declare (temporary ) float conditional_tmp@76) (if (expression bool < (swiz z (var_ref Nprev) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@76) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@77) (call snoise (var_ref snoise_retval@77) ((var_ref tuv) (expression float + (swiz z (var_ref Nfreq) )(constant float (3.000000)) ) (expression int f2i (swiz z (var_ref Noct) )) (swiz z (var_ref Npers) ))) (declare (temporary ) float pow_retval@78) (call pow (var_ref pow_retval@78) ((var_ref snoise_retval@77) (swiz z (var_ref Npow) ))) (assign (x) (var_ref conditional_tmp@76) (expression float * (swiz z (var_ref Nprev) )(var_ref pow_retval@78) ) ) )) (assign (x) (var_ref p3) (var_ref conditional_tmp@76) ) (declare (temporary ) float conditional_tmp@79) (if (expression bool < (swiz x (var_ref Nnext2) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@79) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@80) (call snoise (var_ref snoise_retval@80) ((var_ref tuv) (swiz x (var_ref Nfreq2) )(expression int f2i (swiz x (var_ref Noct2) )) (swiz x (var_ref Npers2) ))) (declare (temporary ) float pow_retval@81) (call pow (var_ref pow_retval@81) ((var_ref snoise_retval@80) (swiz x (var_ref Npow2) ))) (assign (x) (var_ref conditional_tmp@79) (expression float * (swiz x (var_ref Nnext2) )(var_ref pow_retval@81) ) ) )) (assign (x) (var_ref m0) (var_ref conditional_tmp@79) ) (declare (temporary ) float conditional_tmp@82) (if (expression bool < (swiz y (var_ref Nnext2) )(constant float (0.010000)) ) ( (assign (x) (var_ref conditional_tmp@82) (constant float (0.000000)) ) ) ( (declare (temporary ) float snoise_retval@83) (call snoise (var_ref snoise_retval@83) ((var_ref tuv) (swiz y (var_ref Nfreq2) )(expression int f2i (swiz y (var_ref Noct2) )) (swiz y (var_ref Npers2) ))) (declare (temporary ) float pow_retval@84) (call pow (var_ref pow_retval@84) ((var_ref snoise_retval@83) (swiz y (var_ref Npow2) ))) (assign (x) (var_ref conditional_tmp@82) (expression float * (swiz y (var_ref Nnext2) )(var_ref pow_retval@84) ) ) )) (assign (x) (var_ref l1) (expression float + (var_ref l1) (expression float * (var_ref l0a) (var_ref n0) ) ) ) (assign (x) (var_ref l0) (expression float * (var_ref l0) (expression float + (constant float (1.000000)) (expression float neg (var_ref n0) ) ) ) ) (assign (x) (var_ref l2) (expression float + (var_ref l2) (expression float * (var_ref l1a) (var_ref n1) ) ) ) (assign (x) (var_ref l1) (expression float * (var_ref l1) (expression float + (constant float (1.000000)) (expression float neg (var_ref n1) ) ) ) ) (assign (x) (var_ref l3) (expression float + (var_ref l3) (expression float * (var_ref l2a) (var_ref n2) ) ) ) (assign (x) (var_ref l2) (expression float * (var_ref l2) (expression float + (constant float (1.000000)) (expression float neg (var_ref n2) ) ) ) ) (assign (x) (var_ref l0) (expression float + (var_ref l0) (expression float * (var_ref l1a) (var_ref p1) ) ) ) (assign (x) (var_ref l1) (expression float * (var_ref l1) (expression float + (constant float (1.000000)) (expression float neg (var_ref p1) ) ) ) ) (assign (x) (var_ref l1) (expression float + (var_ref l1) (expression float * (var_ref l2a) (var_ref p2) ) ) ) (assign (x) (var_ref l2) (expression float * (var_ref l2) (expression float + (constant float (1.000000)) (expression float neg (var_ref p2) ) ) ) ) (assign (x) (var_ref l2) (expression float + (var_ref l2) (expression float * (var_ref l3a) (var_ref p3) ) ) ) (assign (x) (var_ref l3) (expression float * (var_ref l3) (expression float + (constant float (1.000000)) (expression float neg (var_ref p3) ) ) ) ) (assign (x) (var_ref l2) (expression float + (var_ref l2) (expression float * (var_ref l0a) (var_ref m0) ) ) ) (assign (x) (var_ref l0) (expression float * (var_ref l0) (expression float + (constant float (1.000000)) (expression float neg (var_ref m0) ) ) ) ) (assign (x) (var_ref l3) (expression float + (var_ref l3) (expression float * (var_ref l1a) (var_ref conditional_tmp@82) ) ) ) (assign (x) (var_ref l1) (expression float * (var_ref l1) (expression float + (constant float (1.000000)) (expression float neg (var_ref conditional_tmp@82) ) ) ) ) (declare (temporary ) float clamp_retval) (call clamp (var_ref clamp_retval) ((var_ref l0) (constant float (0.000000)) (constant float (1.000000)) )) (assign (x) (var_ref l0) (var_ref clamp_retval) ) (declare (temporary ) float clamp_retval@85) (call clamp (var_ref clamp_retval@85) ((var_ref l1) (constant float (0.000000)) (constant float (1.000000)) )) (assign (x) (var_ref l1) (var_ref clamp_retval@85) ) (declare (temporary ) float clamp_retval@86) (call clamp (var_ref clamp_retval@86) ((var_ref l2) (constant float (0.000000)) (constant float (1.000000)) )) (assign (x) (var_ref l2) (var_ref clamp_retval@86) ) (declare (temporary ) float clamp_retval@87) (call clamp (var_ref clamp_retval@87) ((var_ref l3) (constant float (0.000000)) (constant float (1.000000)) )) (assign (x) (var_ref l3) (var_ref clamp_retval@87) ) (declare (temporary ) float assignment_tmp@88) (assign (x) (var_ref assignment_tmp@88) (expression float + (expression float + (var_ref l0) (var_ref l1) ) (expression float + (var_ref l2) (var_ref clamp_retval@87) ) ) ) (assign (x) (var_ref ll) (var_ref assignment_tmp@88) ) (if (expression bool < (var_ref assignment_tmp@88) (constant float (0.010000)) ) ( (assign (x) (var_ref l0) (constant float (1.000000)) ) (assign (x) (var_ref ll) (expression float + (expression float + (constant float (1.000000)) (var_ref l1) ) (expression float + (var_ref l2) (var_ref clamp_retval@87) ) ) ) ) ()) (assign (x) (var_ref ll) (expression float rcp (var_ref ll) ) ) (assign (x) (var_ref l0) (expression float * (var_ref l0) (var_ref ll) ) ) (assign (x) (var_ref l1) (expression float * (var_ref l1) (var_ref ll) ) ) (assign (x) (var_ref l2) (expression float * (var_ref l2) (var_ref ll) ) ) (assign (x) (var_ref l3) (expression float * (var_ref clamp_retval@87) (var_ref ll) ) ) (declare (temporary ) vec4 vec_ctor@89) (assign (x) (var_ref vec_ctor@89) (var_ref l0) ) (assign (y) (var_ref vec_ctor@89) (var_ref l1) ) (assign (z) (var_ref vec_ctor@89) (var_ref l2) ) (assign (w) (var_ref vec_ctor@89) (var_ref l3) ) (assign (xyzw) (array_ref (var_ref gl_FragData) (constant int (0)) ) (var_ref vec_ctor@89) ) )) ) (function texture2D (signature vec4 (parameters (declare (in ) sampler2D sampler) (declare (in ) vec2 P) ) ( )) ) ) GLSL compiled: stuntrally: ../../../src/glsl/loop_analysis.h:222: bool loop_variable::is_loop_constant() const: Assertion `!this->var->data.read_only || (this->var->data.read_only && is_const)' failed.