Subversion Repositories Kolibri OS

Rev

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