Subversion Repositories Kolibri OS

Rev

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