Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vs_1_1
- // vs.1.1
- m4x3 r2,v0,c8 ;в r2 пишем координату во ViewSpace (в с8 ModelView матрица)
- m3x3 r3,v3,c8 ;в r3 пишем нормаль во ViewSpace
- mov r2.w,c0.x ;в с0.x скорее всего едининца, записываем её в w
- m4x4 r11,r2,c2 ;в с2 матрица проекции, умножаем нашу координату на неё
- mov oPos,r11 ;r11 в проективном пространстве, записываем в аутпут
- mov r0,c0.y ;скорее всего просто зануление регистра. Почему? понятно будет после строки min r8.z,r8.z,c0.x
- mov oT0.xy,v4 ;просто пишем UV из нашего меша в аутпут
- rcp r11,r11.w ;так как r11 у нас в проективном пространстве
- ;то в r11.w у нас глубина во вьюспейсе
- ;записываем в r11 величину 1/ViewSpaceZ
- mad r11,c6.x,r11,c6.y ;тут в с6 у нас лежат настроечки по туману Fog.x * (1/ViewSpaceZ) + Fog.y
- min r11,r11,c0.x ;а тут и следующей строкой мы "клампаем" туман
- max oFog,r11,c0.y ;и пишем в аутпут
- sub r4,r2,c16 ;пишем в r4 скорее всего LightDir ( ViewSpacePosition - SomeVector(вероятно ViewSpaceLightPos) )
- dp3 r1.x,r4,r4 ;dp3 и последующий rsq - это 1/Length(LightDir), понадобится потом для нормализации LightDir
- rsq r1.x,r1.x
- m3x3 oT3,r4,c80 ; ???? а вот этот трюк мне не понятнен
- mul r4,r4,r1.x ;собственно нормализация по коэффициенту 1/Length(LightDir)
- dp3 r8.x,r4,r3 ;а тут в r8.x уже записываем косунс угла между нормалью и LightDir
- mad r8.z,c24.x,r1.x,c24.y ;т.к. в r1 у нас величина, обратная к расстоянию до источника
- ;то можно предположить, что в r8.z мы пишем
- ;attenuation для света от расстояния (по линейному закону)
- min r8.z,r8.z,c0.x ;следующие min max - это обычный clamp по диапазону, заданному в c0
- ;мы уже сталкивались с этим c0, и подозреваю там тупо 1 0 в x и y соответственно
- max r8.xz,r8.xxzz,c0.y ;
- mul r11.x,r8.x,r8.z ;пишем в r11.x количество света, долетевшего до вершины назовем его DiffuseK
- add r0,r0,c54 ;а тут просто погнали работать с материалом. В c54 у нас первый коэффициент
- mul r0,r0,c53 ;в c53 второй
- mad r0,v5,c52,r0 ;а в с52 bias. Общая формула выглядит так: ResultColor = c54 * c53 * v5 + c52. в v5 у нас видимо цвет вершин
- mul oD1.xyz,c53,r11.x ;тут в регистр цвета мы записываем c53 * DiffuseK
- min oD0.rgb,r0,c0.x ;а тут ResultColor * DiffuseK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement