Subversion Repositories Kolibri OS

Rev

Rev 8666 | Rev 9237 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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