Генерация текстур

Тема в разделе "WASM.GRAPHICS", создана пользователем NaZGuL, 20 апр 2005.

  1. NaZGuL

    NaZGuL New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    41
    Адрес:
    Russia
    У меня проблема с кодом ...
    Код (Text):
    1.  
    2. mov ecx, 128*128*3
    3.  
    4. .gen_tex:
    5.  
    6. inc eax
    7. jmp .next
    8.  
    9. .new:
    10. xor eax,eax
    11. inc ebx
    12.  
    13. .next:
    14. cmp eax,127
    15. je .new
    16.  
    17. cmp ebx,127
    18. je .exit
    19.  
    20.  
    21. mov [x],eax
    22. mov [y],ebx
    23. mov [color],64
    24.  
    25.  
    26. fild dword [x]
    27. fisub dword [color]
    28. fmul st,st
    29. fistp dword [x]
    30.  
    31. fild dword [y]
    32. fisub dword [color]
    33. fmul st,st
    34. fadd dword [x]
    35. fsqrt
    36. fmul dword [color]
    37. frndint
    38. fistp [color]
    39.  
    40.  
    41. mov eax,[color]
    42. mov dword [texture+ecx-3],eax
    43. sub ecx,3
    44.  
    45.  
    46. test ecx,ecx
    47. jnz .gen_tex
    48.  
    49. .exit:
    50.  






    Сразу прошу прощения, и умоляю сильно не бить (ну хотябы голову не трожьте)!



    Я хотел сделать текстуру Environmen (ну в виде круга), а получается ж... какая-то (да простят меня всевышние).
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    NaZGuL

    А где инициализируются eax и ebx?

    Почему значение eax изменяется внутри цикла? (mov eax,[color])
     
  3. bsl_zcs

    bsl_zcs New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2003
    Сообщения:
    17
    Адрес:
    Karaganda, Kazakhstan
    NaZGuL

    Если речь идёт о построении фонгмапы, то вот кусок кода, которым я её в своих интрах генерил. Написано без особой оптимизации, поэтому просто и понятно.
    Код (Text):
    1.         ; - phong map
    2.         xor ebx,ebx
    3.         mov edi,buf
    4. .p1:
    5.         movzx   eax,bh
    6.         sub eax,127
    7.         mov [temp],eax
    8.         fild    dword [temp]
    9.         fidiv   word [int128]
    10.         fmul    st0,st0
    11.         movzx   eax,bl
    12.         sub eax,127
    13.         mov [temp],eax
    14.         fild    dword [temp]
    15.         fidiv   word [int128]
    16.         fmul    st0,st0
    17.         faddp   st1,st0
    18.         fsqrt
    19.         fld1
    20.         fsubrp  st1,st0
    21.  
    22.         ftst
    23.         fstsw   ax
    24.         sahf
    25.         jnb .pn
    26.         fstp    st0
    27.         fldz
    28. .pn:
    29.         fld st0
    30.         fimul   word [phong_diffuse]
    31.         fstp    st2
    32.         fmul    st0,st0
    33.         fimul   word [phong_specular]
    34.         faddp   st1,st0
    35.         fistp   dword [temp]
    36.         mov eax,[temp]
    37.         cmp eax,255
    38.         jbe .ps
    39.         mov al,255
    40. .ps:
    41.         stosb
    42.         inc bx
    43.         jnz .p1
    44.  
     
  4. NaZGuL

    NaZGuL New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    41
    Адрес:
    Russia
    Я посидел и надумал вот что...



    ;==[ Генерация текстуры ]==



    mov edx,tex_buf

    mov ecx,256

    .gen:

    push ecx

    push 256

    pop ecx

    pop ebx

    .gen2:

    xor eax,eax

    push ecx

    push ebx

    sub cx,128

    sub bx,128

    imul cx,cx

    imul bx,bx

    add cx,bx

    shr cx,5

    cmp cx,255

    jg .none

    mov ax,255

    sub ax,cx

    .none:

    pop ebx

    pop ecx

    mov dword [edx+2],eax

    add edx,4

    loop .gen2

    mov ecx,ebx

    loop .gen



    .exit:



    xor ebx,ebx

    mov eax,ebx



    ;==[ ------ КОНЕЦ ----- ]==



    Вроде работает, но если есть замечания я в к вашим услугам.



    PS: Если у кого есть ссылки, поделитесь.