Subversion Repositories Kolibri OS

Rev

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