0xd34df00d 06.12.2012 17:37 Azoth_primary


Слева виден образец применения шейдеров в кутях.

Recommended by:

@pooq: моча съела говно

and @nekoexmachina
1. magog 06.12.2012 17:37 Azoth

> неумелого применения шейдеров в кутях

2. 0xd34df00dmagog /1 06.12.2012 17:37 Azoth_primary

Скопипастил из примеров.

3. magog0xd34df00d /2 06.12.2012 17:39 Azoth

— посмотри как у нормальных посонов

4. 4da 06.12.2012 17:44 BitlBee

хуйня у тебя слева вместо шейдеров

5. 0xd34df00d4da /4 06.12.2012 17:51 Azoth_primary

А как надо?
ShaderEffectItem {
property variant source: ShaderEffectSource { sourceItem: tcButton; hideSource: true }
property real wiggleAmount: 0.05
anchors.fill: tcButton

smooth: true

fragmentShader: "
varying highp vec2 qt_TexCoord0;
uniform sampler2D source;
uniform highp float wiggleAmount;
void main(void)
{
highp vec2 wiggledTexCoord = qt_TexCoord0;
wiggledTexCoord.s += sin(4.0 * 3.141592653589 * wiggledTexCoord.t) * wiggleAmount;
gl_FragColor = texture2D(source, wiggledTexCoord.st);
}
"
}

6. 4da0xd34df00d /5 06.12.2012 17:54 BitlBee

ну посмотри как делается liquid flow и запили при наведение на виджет мышкой такую хуерду.

7. 0xd34df00d4da /6 06.12.2012 17:54 Azoth_primary

Че блядь. Я вообще отсюда скопипастил → http://doc.qt.digia.com/qt/qml-shadereff...

8. magog0xd34df00d /7 06.12.2012 17:55 Azoth

ты решил наложить такой эффект на картинку?

9. 0xd34df00dmagog /8 06.12.2012 17:55 Azoth_primary

Да. Опенглу должно быть похуй, просто в случае картинки текстура сразу идет на GPU, а в случае некартинки qml engine сначала это дело рендерит.

10. 4damagog /8 06.12.2012 17:56 BitlBee

ЭФФЕКТ ТРЕУГОЛЬНИКА

11. 0xd34df00d4da /10 06.12.2012 17:56 Azoth_primary

Ч.

12. 0xd34df00d0xd34df00d /11 06.12.2012 17:56 Azoth_primary

Че.

13. 4da0xd34df00d /12 06.12.2012 17:57 BitlBee

бял, да посмотри на скриншот который ты запостил

14. 0xd34df00d 06.12.2012 17:57 Azoth_primary

А, не, посоны, все ок, я мудак просто и случайно сделал шейдер чайлдом самого айтема, поэтому шейдер шел по пизде, применяя себя к своему результату.

15. 0xd34df00d4da /13 06.12.2012 17:57 Azoth_primary

Я не в теме, что за эффект?

16. 4da0xd34df00d /15 06.12.2012 17:57 BitlBee

вот именно, что говно, а не эффект.

17. 0xd34df00d0xd34df00d /14 06.12.2012 17:57 Azoth_primary

18. magog 06.12.2012 17:59 Azoth

c каждым днем в личкрафтах все больше свистоперделок и все меньше юзабилити и полезных вещей...

19. 4damagog /18 06.12.2012 18:00 BitlBee

охуенно же. как мне сделать такое же в емаксе?

20. 0xd34df00d4da /16 06.12.2012 18:00 Azoth_primary

Слых, а как размытие сделать средствами шейдеров? Типа как под картинкой слева здесь →

21. 4da0xd34df00d /20 06.12.2012 18:01 BitlBee

google://gaussian blur

22. 0xd34df00dmagog /18 06.12.2012 18:01 Azoth_primary

Да нихрена. Я просто хочу уйти от QGraphicsEffect'а для размытия/colorize картинок, потому что QGraphicsEffect феерически тормозит, и у меня баттхерт, когда я смотрю на профайлер и вижу, что 20% времени проводится в наложении эффекта.

23. 0xd34df00d4da /21 06.12.2012 18:01 Azoth_primary

Ты мне шейдер дай, а то я не шарю в них.

24. magog0xd34df00d /22 06.12.2012 18:02 Azoth

тоесть смысль о том, что бы нахуй убрать свистоперделку тебе даже в голову не пришла. Кутим головного мозга

25. 4da0xd34df00d /23 06.12.2012 18:04

вертексный шейдер:

varying vec2 vTexCoord;

// remember that you should draw a screen aligned quad
void main(void)
{
gl_Position = ftransform();;

// Clean up inaccuracies
vec2 Pos;
Pos = sign(gl_Vertex.xy);

gl_Position = vec4(Pos, 0.0, 1.0);
// Image-space
vTexCoord = Pos * 0.5 + 0.5;
}

пиксельный:

uniform sampler2D RTScene; // the texture with the scene you want to blur
varying vec2 vTexCoord;

const float blurSize = 1.0/512.0; // I've chosen this size because this will result in that every step will be one pixel wide if the RTScene texture is of size 512x512

void main(void)
{
vec4 sum = vec4(0.0);

// blur in y (vertical)
// take nine samples, with the distance blurSize between them
sum += texture2D(RTScene, vec2(vTexCoord.x — 4.0*blurSize, vTexCoord.y)) * 0.05;
sum += texture2D(RTScene, vec2(vTexCoord.x — 3.0*blurSize, vTexCoord.y)) * 0.09;
sum += texture2D(RTScene, vec2(vTexCoord.x — 2.0*blurSize, vTexCoord.y)) * 0.12;
sum += texture2D(RTScene, vec2(vTexCoord.x — blurSize, vTexCoord.y)) * 0.15;
sum += texture2D(RTScene, vec2(vTexCoord.x, vTexCoord.y)) * 0.16;
sum += texture2D(RTScene, vec2(vTexCoord.x + blurSize, vTexCoord.y)) * 0.15;
sum += texture2D(RTScene, vec2(vTexCoord.x + 2.0*blurSize, vTexCoord.y)) * 0.12;
sum += texture2D(RTScene, vec2(vTexCoord.x + 3.0*blurSize, vTexCoord.y)) * 0.09;
sum += texture2D(RTScene, vec2(vTexCoord.x + 4.0*blurSize, vTexCoord.y)) * 0.05;

gl_FragColor = sum;
}

26. 0xd34df00dmagog /24 06.12.2012 18:04 Azoth_primary

ну расскажи тогда, как мне визуально выделять лончеры для неактивных вкладок.

27. 4da4da /21 06.12.2012 18:07 BitlBee

вообще-то лучше сделать convolution kernel и несколько раз применять для нормального размытия.

28. 0xd34df00d4da /27 06.12.2012 18:07 Azoth_primary

Че.

29. 4da0xd34df00d /28 06.12.2012 18:08 BitlBee

в твоем qml можно указать чтобы шейдер несколько раз применялся к фрагменту?

30. 0xd34df00d4da /29 06.12.2012 18:09 Azoth_primary

Хм, хуй знает. Похоже, что нет.

31. 4da0xd34df00d /30 06.12.2012 18:10

ну попробуй это тогда

01 uniform sampler2D image;
02
03 out vec4 FragmentColor;
04
05 uniform float offset[5] = float[]( 0.0, 1.0, 2.0, 3.0, 4.0 );
06 uniform float weight[5] = float[]( 0.2270270270, 0.1945945946, 0.1216216216,
07 0.0540540541, 0.0162162162 );
08
09 void main(void)
10 {
11 FragmentColor = texture2D( image, vec2(gl_FragCoord)/1024.0 ) * weight[0];
12 for (int i=1; i<5; i++) {
13 FragmentColor +=
14 texture2D( image, ( vec2(gl_FragCoord)+vec2(0.0, offset[i]) )/1024.0 )
15 * weight[i];
16 FragmentColor +=
17 texture2D( image, ( vec2(gl_FragCoord)-vec2(0.0, offset[i]) )/1024.0 )
18 * weight[i];
19 }
20 }

32. 0xd34df00d4da /31 06.12.2012 18:11 Azoth_primary

Эм, стоп. Похоже. кути не умеют в пиксельные шейдеры, только вершинные и фрагментные. Этот чо какой?

33. magog0xd34df00d /26 06.12.2012 18:12 Azoth

а смысл, если по клику они становятся активными, не смотря на то, что может бытьт октрыто куча вкладок этого типа

34. 4da0xd34df00d /32 06.12.2012 18:12 BitlBee

пиксельный и есть фрагментный. просто фрагменты почему-то называют пикселями, хотя пикселями они становятся после растеризации

35. 4da4da /34 06.12.2012 18:14

сделай в конце main gl_FragColor = FragmentColor

36. 0xd34df00d4da /31 06.12.2012 18:19 Azoth_primary

Гм, а матрицу свертки тут можно свести как-то к типам из таблички на http://doc.qt.digia.com/qt/qml-shadereff... ? А то мне из остального куэмеля надо периодически менять силу размытия.

37. 0xd34df00d4da /35 06.12.2012 18:22 Azoth_primary

И ваще, приходи в конфочку, там тебя заебывать удобнее будет :3

38. 4da0xd34df00d /36 06.12.2012 18:24

не вижу такого.
можешь либо до отрисовки вижета передавать параметры при помощи glProgramUniform***,
либо понахуярить разных шейдеров для разных уровней с вшитыми параметрами.

39. 0xd34df00d4da /38 06.12.2012 18:25 Azoth_primary

У меня там континуум уровней в общем случае (с точностью до машинной точности), неприятно хуярить. Подумаю еще. А в конфочку приходи, да.

Do you really want to delete ?