Advertisement
Guest User

Untitled

a guest
Jan 6th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. vs_1_1
  2.    // vs.1.1
  3. m4x3 r2,v0,c8  ;в r2 пишем координату во ViewSpace (в с8 ModelView матрица)
  4. m3x3 r3,v3,c8  ;в r3 пишем нормаль во ViewSpace
  5. mov r2.w,c0.x  ;в с0.x скорее всего едининца, записываем её в w
  6. m4x4 r11,r2,c2 ;в с2 матрица проекции, умножаем нашу координату на неё
  7. mov oPos,r11   ;r11 в проективном пространстве, записываем в аутпут
  8. mov r0,c0.y    ;скорее всего просто зануление регистра. Почему? понятно будет после строки min r8.z,r8.z,c0.x
  9. mov oT0.xy,v4  ;просто пишем UV из нашего меша в аутпут
  10. rcp r11,r11.w  ;так как r11 у нас в проективном пространстве
  11.               ;то в r11.w у нас глубина во вьюспейсе
  12.                ;записываем в r11 величину 1/ViewSpaceZ
  13. mad r11,c6.x,r11,c6.y ;тут в с6 у нас лежат настроечки по туману Fog.x * (1/ViewSpaceZ) + Fog.y
  14. min r11,r11,c0.x      ;а тут и следующей строкой мы "клампаем" туман
  15. max oFog,r11,c0.y     ;и пишем в аутпут
  16. sub r4,r2,c16         ;пишем в r4 скорее всего LightDir ( ViewSpacePosition - SomeVector(вероятно ViewSpaceLightPos) )
  17. dp3 r1.x,r4,r4        ;dp3 и последующий rsq - это 1/Length(LightDir), понадобится потом для нормализации LightDir
  18. rsq r1.x,r1.x
  19. m3x3 oT3,r4,c80       ; ???? а вот этот трюк мне не понятнен
  20.  
  21. mul r4,r4,r1.x        ;собственно нормализация по коэффициенту 1/Length(LightDir)
  22. dp3 r8.x,r4,r3        ;а тут в r8.x уже записываем косунс угла между нормалью и LightDir
  23. mad r8.z,c24.x,r1.x,c24.y ;т.к. в r1 у нас величина, обратная к расстоянию до источника
  24.                          ;то можно предположить, что в r8.z мы пишем
  25.                           ;attenuation для света от расстояния (по линейному закону)
  26. min r8.z,r8.z,c0.x        ;следующие min max - это обычный clamp по диапазону, заданному в c0
  27.                          ;мы уже сталкивались с этим c0, и подозреваю там тупо 1 0 в x и y соответственно
  28. max r8.xz,r8.xxzz,c0.y    ;
  29. mul r11.x,r8.x,r8.z       ;пишем в r11.x количество света, долетевшего до вершины назовем его DiffuseK
  30. add r0,r0,c54             ;а тут просто погнали работать с материалом. В c54 у нас первый коэффициент
  31. mul r0,r0,c53             ;в c53 второй
  32. mad r0,v5,c52,r0          ;а в с52 bias. Общая формула выглядит так: ResultColor = c54 * c53 * v5 + c52. в v5 у нас видимо цвет вершин
  33. mul oD1.xyz,c53,r11.x     ;тут в регистр цвета мы записываем c53 * DiffuseK
  34. min oD0.rgb,r0,c0.x       ;а тут ResultColor * DiffuseK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement