Subversion Repositories Kolibri OS

Rev

Rev 7788 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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