;;; %define FULLSCREEN BITS 32 %define origin 0x8048000 ORG origin ehdr: ; e_ident db 0x7F, "ELF" ; EI_MAG[0-3] db 1 ; EI_CLASS db 1 ; EI_DATA db 1 ; EI_VERSION db 0 ; EI_OSABI db 0 ; EI_ABIVERSION times 7 db 0 ; EI_PAD dw 2 ; e_type dw 3 ; e_machine dd 1 ; e_version dd _start ; e_entry dd phdr-origin ; e_phoff dd 0 ; e_shoff dd 0 ; e_flags dw ehdrsize ; e_ehsize dw phdrsize ; e_phentsize dw 3 ; e_phnum dw 0 ; e_shentsize dw 0 ; e_shnum dw 0 ; e_shstrndx ehdrsize equ $ - ehdr phdr: ;; PT_INTERP header dd 3 ; p_type dd interp-origin ; p_offset dd interp ; p_vaddr dd 0 ; p_paddr dd interpsize ; p_filesize dd interpsize ; p_memsz dd 4 ; p_flags dd 0 ; p_align phdrsize equ $ - phdr ;; PT_LOAD header dd 1 ; p_type dd 0 ; p_offset dd origin ; p_vaddr dd 0 ; p_paddr dd filesize ; p_filesz dd memsize ; p_memsz dd 7 ; p_flags - 0x1=x, 0x2=w, 0x4=r dd 0 ; p_align - dangerous, should be 0x1000 ;; PT_DYNAMIC header dd 2 ; p_type dd dynamic-origin ; p_offset dd dynamic ; p_vaddr dd 0 ; p_paddr dd dynamicsize ; p_filesize dd dynamicsize ; p_memsz dd 6 ; p_flags dd 0 ; p_align interp: db "/lib/ld-linux.so.2",0 interpsize equ $-interp dynstr: db 0 libsdl: ;;; db "libSDL.so", 0 db "libSDL-1.2.so.0",0 libgl: ;;; db "libGL.so", 0 db "libGL.so.1",0 fragment_shader_source: db "vec2 v=(gl_FragCoord.xy-vec2(400,300))/vec2(400,300);" db "float w=dot(gl_Color.xyz,vec3(1,256,65536))*.25;" db "const float s=0.4;" db "float obj(vec3 pos){" db "float final=1.0;" db "final*=distance(pos,vec3(cos(w)+sin(w*0.2),0.3,2.0+cos(w*0.5)*0.5));" db "final*=distance(pos,vec3(-cos(w*0.7),0.3,2.0+sin(w*0.5)));" db "final*=distance(pos,vec3(-sin(w*0.2)*0.5,sin(w),2.0));" db "final *=cos(pos.y)*cos(pos.x)-0.1-cos(pos.z*7.+w*7.)*cos(pos.x*3)*cos(pos.y*4.)*0.1;" db "return final;" db "}" db "void main(){vec3 o=vec3(v.x,v.y*1.25,0.0);" db "vec3 d=vec3(v.x+cos(w)*.3,v.y,1.0)/64.0;" db "vec4 color=vec4(0.0);" db "float t=0.0;" db "for(int i=0;i<75;i++) {" db "if(obj(o+d*t)