Subversion Repositories Kolibri OS

Rev

Rev 9585 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.                    ; DATA AREA  ************************************
  2.     ;  if Ext > SSE2
  3.         isSSE3          db      1
  4.     ;  end if
  5.         i3              dw      3
  6.         i6              dd      6
  7.         i12             dd      12
  8.         i36             dd      36
  9.         i256            dw      256
  10.         i255d           dd      255
  11.         f1:
  12.         dot_max         dd      1.0      ; dot product max and min
  13.         dot_min         dd      0.0
  14.         env_const       dd      1.05
  15.         correct_tex     dw      255
  16.         tex_x_div2      dw      TEX_X  / 2
  17.         tex_y_div2      dw      TEX_Y  / 2
  18.         xobs            dw      0 ;SIZE_X / 2 ;200 ;observer  = camera
  19.         yobs            dw      0 ;SIZE_Y / 2 ;200 ;coordinates
  20.         zobs            dw      -1000
  21.  
  22.  
  23.         angle_counter dw 0
  24.         piD180        dd 0.017453292519943295769236907684886
  25.         piD128        dd 0.024544
  26.         const6        dw 6,6,6,6
  27.         x_offset      dw SIZE_X / 2
  28.         y_offset      dw SIZE_Y / 2
  29.         z_offset      dw 0
  30.         rsscale       dd 175.0           ; next real scale
  31.  
  32. ;        vect_x:        dw SIZE_X / 2
  33. ;        vect_y        dw SIZE_Y / 2
  34. ;        vect_z        dw 0
  35. ;                size_y_var:
  36. ;        yres_var                dw SIZE_Y
  37. ;
  38. ;        size_x_var:
  39. ;        xres_var                dw SIZE_X
  40.  
  41.         angle_x       dw 0
  42.         angle_y       dw 0
  43.         angle_z       dw 0
  44.         sin_amplitude dd 50
  45.         sin_frq       dd 0.7
  46.         sin_delta     dd 0.07    ; wave frequency granularity
  47.         convert_muler:
  48.                       dd 1, 10, 100, 1000, 10000
  49.         XYZpartices:
  50.                       db 'X','Y','Z'
  51.         i10           dw 10
  52.         offset_y:
  53.         i25           dw 25  ; screen buff offset
  54.         offset_x:
  55.         i5            dw 5
  56.         triangles_ptr           dd 0
  57.         triangles_w_z_ptr       dd 0
  58.         triangles_normals_ptr   dd 0
  59.         points_normals_ptr      dd 0
  60.         points_normals_rot_ptr  dd 0
  61.         points_ptr              dd 0
  62.         points_rotated_ptr      dd 0
  63.         points_translated_ptr   dd 0
  64.         edges_ptr               dd 0
  65.         screen_ptr              dd 0
  66.         Zbuffer_ptr             dd 0
  67.         vertices_index_ptr      dd 0
  68.         vertex_edit_no          dd -1
  69.         edit_start_x:
  70.                           dw 0
  71.         edit_start_y      dw 0
  72.         edit_end_x:
  73.                           dw 0
  74.         edit_end_y        dw 0
  75.         x_start:          dw 20
  76.         y_start:          dw 20
  77.  
  78.         mouse_state           dd 0
  79.  
  80.  
  81.         menu:
  82.                db 2                ; button number  = index
  83.                db 'rotary    '     ; label
  84.                db 4                ; max flag  + 1 , if = 255, no flag
  85.  r_flag        db 1                ; flag
  86.                dd axl_f            ; offset to flags description
  87.  
  88.                db 3
  89.                db 'shd. model'
  90.  max_dr_flg:
  91.             if Ext >= SSE3
  92.                 db 15
  93.             else
  94.                 db 12
  95.             end if
  96.  dr_flag       db 0  ;  6 - dots
  97.                dd shd_f
  98.  
  99.                db 4
  100.                db 'speed     '
  101.                db 2
  102.  speed_flag    db 0
  103.                dd spd_f
  104.  
  105.                db 5
  106.                db 'zoom out  '
  107.                db 255
  108.                db ?
  109.                dd ?
  110.  
  111.                db 6
  112.                db 'zoom in   '
  113.                db 255
  114.                db ?
  115.                dd ?
  116.  
  117.                db 7
  118.                db 'ray shadow'
  119.                db 2
  120. ray_shd_flag   db 0
  121.                dd onoff_f
  122.  
  123.                db 8
  124.                db 'culling   '
  125.                db 2
  126. culling_flag   db 0
  127.                dd onoff_f
  128.  
  129.                db 9
  130.                db 'rand.light'
  131.                db 255
  132.                db ?
  133.                dd ?
  134.  
  135.                db 10
  136.                db 'blur      '
  137.                db 6
  138. blur_flag      db 0
  139.                dd blur_f
  140.  
  141.                db 11
  142.                db 'mirror x  '
  143.                db 2
  144. mirr_x_flag    db 0
  145.                dd onoff_f
  146.  
  147.                db 12
  148.                db 'mirror y  '
  149.                db 2
  150. mirr_y_flag    db 0
  151.                dd onoff_f
  152.  
  153.                db 13
  154.                db 'mirror z  '
  155.                db 2
  156. mirr_z_flag    db 0
  157.                dd onoff_f
  158.  
  159.                db 14
  160.                db 'xchg      '
  161.                db 4
  162. xchg_flag      db 0
  163.                dd xchg_f
  164.  
  165.                db 15
  166.                db 'emboss    '
  167.                db 2
  168. emboss_flag    db 0
  169.                dd onoff_f
  170.  
  171.                db 16
  172.                db 'fire      '
  173.                db 2
  174. fire_flag      db 0
  175.                dd blur_f
  176.  
  177.                db 17
  178.                db 'move      '
  179.                db 3
  180. move_flag      db 0
  181.                dd move_f
  182.  
  183.                   db 18
  184.                   db 'generate  '
  185.                   db 6
  186. generator_flag    db 0
  187.                   dd blur_f
  188.  
  189.                   db 19
  190.                   db 'bumps     '
  191.                   db 2
  192. bumps_flag        db 0
  193.                   dd bumps_f
  194.  
  195.                   db 20
  196.                   db 'bumps deep'
  197.                   db 4
  198. bumps_deep_flag   db 3
  199.                   dd bumps_d_f
  200.  
  201.                   db 21
  202.                   db 're-map tex'
  203.                   db 255
  204. map_tex_flag      db ? ;1
  205.                   dd ?  ;bumps_d_f
  206.  
  207.                   db 22
  208.                   db 'bright +  '
  209.                   db 6
  210. inc_bright_flag   db 0 ;1
  211.                   dd blur_f
  212.  
  213.                   db 23
  214.                   db 'bright -  '
  215.                   db 6
  216. dec_bright_flag   db 0 ;1
  217.                   dd blur_f
  218.  
  219.                   db 24
  220.                   db 'wav effect'
  221.                   db 2
  222. sinus_flag        db 0
  223.                   dd onoff_f
  224.  
  225.  
  226.                   db 25
  227.                   db 'editor    '
  228.                   db 2
  229.  edit_flag        db 0
  230.                   dd onoff_f
  231. ;                  db 24
  232. ;                  db 'max       '
  233. ;                  db 2
  234. ;max_flag          db 0 ;1
  235. ;                  dd blur_f
  236. ;
  237. ;                  db 25
  238. ;                  db 'min       '
  239. ;                  db 2
  240. ;min_flag          db 0 ;1
  241. ;                  dd blur_f
  242.  
  243.  
  244.  
  245. ;                  db 21
  246. ;                  db 'light No. '
  247. ;                  db 3
  248. ;light_no_flag     db 0
  249. ;                  dd bumps_d_f
  250.  
  251. ;                db 22
  252. ;                db 'light comp'
  253. ;                db 3
  254. ;light_comp_flag db 0
  255. ;                dd light_component_f
  256.  
  257. ;;                db 23
  258. ;;                db 'col. comp'
  259. ;;                db 3
  260. ;;color_comp_flag db 0
  261. ;;                dd color_component_f
  262.  
  263.  
  264.  
  265.  
  266.  
  267.                db -1       ; end mark
  268.  
  269.  
  270. flags:             ; flags description
  271.  shd_f:
  272.     db 'flat'
  273.     db 'grd '
  274.     db 'env '
  275.     db 'bump'
  276.     db 'tex '
  277.     db 'pos '
  278.     db 'dots'
  279.     db 'txgr'
  280.     db '2tex'
  281.     db 'btex'
  282.     db 'cenv'
  283.     db 'grdl'
  284.     db 'rphg'
  285.     db 'glas'
  286.     db 'ptex'
  287.  spd_f:
  288.     db 'idle'
  289.     db 'full'
  290.  axl_f:
  291.     db ' y  '
  292.     db 'x+y '
  293.     db ' x  '
  294.     db 'keys'
  295.  
  296.  onoff_f:
  297.     db 'off '
  298.     db 'on  '
  299.  
  300.           blur_f:              ; blur, fire
  301.             db 'off '
  302. bumps_d_f:  db ' 1  '
  303.             db ' 2  '
  304.             db ' 3  '
  305.             db ' 4  '
  306.             db ' 5  '
  307.  
  308.  xchg_f:
  309.     db 'no  '
  310.     db 'x<>y'
  311.     db 'z<>x'
  312.     db 'y<>z'
  313.  move_f:
  314.     db 'obj '
  315.     db 'camr'
  316.     db 'wave'
  317. ;    db 'lght'
  318.  bumps_f:
  319.     db 'rand'
  320.     db 'tex '
  321. ;    db 'cscl'
  322. base_vector:
  323.     labelvector:
  324.         db   'add vector'
  325.     labelvectorend:
  326.     labelyminus:
  327.         db   'y -'
  328.     labelyminusend:
  329.     labelzplus:
  330.         db   'z +'
  331.     labelzplusend:
  332.     labelxminus:
  333.         db   'x -'
  334.     labelxminusend:
  335.     labelxplus:
  336.         db   'x +'
  337.     labelxplusend:
  338.     labelzminus:
  339.         db   'z -'
  340.     labelzminusend:
  341.     labelyplus:
  342.         db   'y +'
  343.     labelyplusend:
  344.  
  345.  
  346.     labelt:
  347.         db   'DEUS CARITAS EST'
  348.       if Ext=MMX
  349.         db   ' (MMX)'
  350.       end if
  351.       if Ext=SSE
  352.         db   ' (SSE)'
  353.       end if
  354.       if Ext=SSE2
  355.         db   ' (SSE2)'
  356.       end if
  357.       if Ext=SSE3
  358.         db   ' (SSE3)'
  359.       end if
  360.         db   ' 0.077',0
  361.     labellen:
  362.         STRdata db '-1        '
  363.      lab_vert:
  364.         db 'Vertices count: '
  365.      lab_vert_end:
  366.      lab_tr:
  367.         db 'Faces count:    '
  368.      lab_tr_end:
  369.      lab_ed:
  370.         db 'Edges count:    '
  371.      lab_ed_end:
  372.  
  373.         db 'Chunks detected:'
  374.  
  375.  
  376.  
  377.     all_lights_size dw lightsend-lights
  378.  
  379.  
  380. ;        file_info:
  381. ;                dd      0
  382. ;                dd      0
  383. ;                dd      0
  384. ;         fsize  dd      0 ;180000 ; sizeof(workarea)
  385. ;         fptr   dd      0 ;workarea
  386. ;        file_name:
  387. ;                db      '/sys/3d/house.3ds',0
  388. ;         ;      db      '/tmp0/1/ant.3ds',0
  389. ;
  390. ;      rb 256
  391.  
  392. ;=============================================
  393. lights:
  394.      .light_vector        dd      0.0,0.0,-1.0   ; x,y,z  Z cooficient of vector must be negative
  395.      .orginal_color_r     db      1              ;  +12
  396.      .orginal_color_g     db      255              ;
  397.      .orginal_color_b     db      1              ;  +14
  398.      .min_color_r         db      1              ;
  399.      .min_color_g         db      1              ;  +16
  400.      .min_color_b         db      1              ;
  401.      .max_color_r         db      255            ;
  402.      .max_color_g         db      255            ;
  403.      .max_color_b         db      255            ;
  404.      .shine               db      24             ;  +21
  405.  ;    LIGHT_SIZE equ ($-lights)
  406.  
  407.         dd      -0.5,-0.5,-1.0   ; x,y,z ;  .light_vector
  408.         db      5                ; .orginal_color_r
  409.         db      1                ; .orginal_color_g
  410.         db      135              ; .orginal_color_b
  411.         db      19               ; .min_color_r
  412.         db      19               ; .min_color_g
  413.         db      19               ; .min_color_b
  414.         db      255              ; .max_color_r
  415.         db      255              ; .max_color_g
  416.         db      255              ; .max_color_b
  417.         db      16               ; .shine
  418.  
  419.         dd      0.5,0.5,-1.0    ; x,y,z ;  .light_vector
  420.         db      135             ; .orginal_color_r
  421.         db      1               ; .orginal_color_g
  422.         db      1               ; .orginal_color_b
  423.         db      19              ; .min_color_r
  424.         db      19              ; .min_color_g
  425.         db      19              ; .min_color_b
  426.         db      255             ; .max_color_r
  427.         db      255             ; .max_color_g
  428.         db      20              ; .max_color_b
  429.         db      16              ; .shine
  430. ;        ALL_LIGHTS_SIZE equ ($ - lights)
  431. ;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
  432. ;===============================================
  433.  
  434. lightsend:
  435.  
  436.  
  437.  
  438. ;if Ext >= SSE3
  439. align 16
  440.    point_light_coords:
  441.               dd 50.0
  442.               dd 50.0
  443.               dd -215.0
  444.               dd 0.0
  445.  
  446.  
  447.               dd 815.0
  448.               dd 815.0
  449.               dd -215.0
  450.               dd 0.0
  451.  
  452.               dd 1500.0
  453.               dd 1500.0
  454.               dd -215.0
  455.               dd 0.0
  456. if 0
  457.     aabb1:
  458.         .0              dd 1.0,1.0,1.0,0
  459.         .1              dd -1.0,1.0,1.0,0
  460.         .2              dd 1.0,-1.0,1.0,0
  461.         .3              dd -1.0,-1.0,1.0,0
  462.         .4              dd 1.0,1.0,-1.0,0
  463.         .5              dd -1.0,1.0,-1.0,0
  464.         .6              dd 1.0,-1.0,-1.0,0
  465.         .7              dd -1.0,-1.0,-1.0,0
  466.  
  467. end if
  468.  
  469.     sign_mask:
  470.               times 4 dd 0x80000000
  471.     f05xz:    dd 0, 0,   - 1.0  ,0
  472.  
  473.     sign_z:
  474.               dd -1,-1,0x7fffffff,0
  475.     abs_mask:
  476.            dd 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff
  477.     emboss_bias:
  478.            dw 128, 128, 128, 128, 128, 128, 128, 128
  479.     zero_hgst_dd:
  480.            dd -1, -1, -1, 0
  481.     mask_255f:
  482.     correct_texf:
  483.            times 4 dd 255.0
  484.     the_zero:
  485.            times 4 dd 0.0
  486.     tex_m2:
  487.            times 4 dd 510.0
  488.     the_one:
  489.            times 4 dd 1.0
  490.  
  491.      eps:  times 4 dd 0.000001
  492.  
  493.         vect_x:        dw SIZE_X / 2
  494.         vect_y        dw SIZE_Y / 2
  495.         vect_z        dw 0
  496.                 size_y_var:
  497.         yres_var                dw SIZE_Y
  498.  
  499.         size_x_var:
  500.         xres_var                dw SIZE_X
  501.  
  502.  
  503.      epsone      dd 1.00001
  504.      aprox       dd 0.0001
  505.      epsminus    dd 0.00001
  506.  
  507.  
  508.         file_info:
  509.                 dd      0
  510.                 dd      0
  511.                 dd      0
  512.          fsize  dd      0 ;180000 ; sizeof(workarea)
  513.          fptr   dd      0 ;workarea
  514.         file_name:
  515.                db      '/sys/3d/house.3ds',0
  516.              ;  db      '/tmp0/1/bmwm3.3ds',0
  517.  
  518.       rb 1024
  519.  
  520.  
  521. I_END:
  522. SourceFile:
  523. workarea   rb 180
  524. EndFile   dd ?
  525. align 8
  526.         sinbeta dd      ?;
  527.         cosbeta dd      ?
  528.  
  529.         xsub    dw      ?
  530.         zsub    dw      ?
  531.         ysub    dw      ?
  532.  
  533.         col1    dd      ?
  534.         col2    dd      ?
  535.         col3    dd      ?
  536.         scale   dd      ? ; help scale variable
  537.  
  538.         points_count_var        dd ?  ;
  539.         triangles_count_var     dd ?  ; dont change order
  540.         edges_count             dd ?  ;
  541.         chunks_number           dd ?
  542.         tex_points_ptr          dd ?
  543.         chunks_ptr              dd ?
  544.  
  545.         temp_col            dw ?
  546.         high                dd ?
  547.         rand_seed           dw ?
  548. align 8
  549.         buffer  dq      ?
  550.         errr    dd      ?
  551.         drr     dd      ?
  552.         xx      dd      ?
  553.         yy      dd      ?
  554.         xst     dd      ?
  555.         yst     dd      ?
  556. ;        screen_ptr      dd     ?
  557. ;        Zbuffer_ptr     dd     ?
  558.  
  559.         matrix  rb 36
  560.         cos_tab rd 360
  561.         sin_tab rd 360
  562. align 16
  563.        lights_aligned:
  564.        lights_aligned_end = $ + 16 * 12
  565.                         rb 16 * 12
  566.  
  567. align 16
  568.         vectors rb 24
  569.  
  570. align 16
  571.         bumpmap         rb      TEXTURE_SIZE + 1
  572. align 16
  573.         bumpmap2        rb      TEXTURE_SIZE + 1
  574. align 16
  575.         envmap          rb      (TEXTURE_SIZE +1) * 3
  576. align 16
  577.         envmap_cub      rb      TEX_X * 3
  578. align 16
  579.         texmap          rb      (TEXTURE_SIZE +1) * 3
  580. align 16
  581.         color_map       rb      (TEXTURE_SIZE +100) * 3
  582. align 16
  583.  ;       tex_points      rb      points_count * 4  ; bump_map  and texture coords
  584.  ;                               ; each point word x, word y
  585. ;align 16
  586. ;       lights_aligned:
  587. ;       lights_aligned_end = $ + 16 * 12
  588. ;                        rb 16 * 12
  589.  
  590.  
  591. if Ext >= SSE2
  592.         sse_repository  rb      1024
  593. end if
  594.         procinfo:
  595.                         rb     2048 ; process info
  596.         I_Param         rb      256
  597.         memStack:
  598.         rb 2000
  599. align  16
  600. screen:
  601.