Войти
ПрограммированиеФорумГрафика

D3D11 Вопросы-вопросики. (2 стр)

Страницы: 1 2
#15
14:12, 4 мая 2015

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


#16
14:19, 4 мая 2015

TheGrayWolf
У меня это выглядит так:

      float2 positions[4] = @float2{
        float2(1.0, 0.0),
        float2(0.0, 0.0),
        float2(1.0, 1.0),
        float2(0.0, 1.0)
      };
      float2 pos = positions[inVertexID];
      outPosition = float4(textureToScreen(pos), 0.5, 1.0);
      outTexCoord = pos;

/// думаю, понятно; внутри это примерно так:
#define textureToScreen(V) ((V) * float2(2.0, -2.0) + float2(-1.0, 1.0))
#define inVertexID _in._VertexID
struct _InputStruct
{
...
    uint _VertexID : SV_VertexID;
}

#17
17:32, 6 мая 2015

float4 staticVertexData[3]=
{
  float4(0.0f, 0.0f, -1.0f, 1.0f),
  float4(2.0f, 0.0f, 3.0f, 1.0f),
  float4(0.0f, 2.0f, -1.0f, -3.0f)
};

struct VS_IN
{
  uint  vId : SV_VertexID;
};

struct PS_INPUT
{
  float4 pos  : SV_Position;
    float2 uv  : TEXCOORD0;
};

PS_INPUT vs(VS_INPUT IN)
{
  PS_INPUT output;

  uint i=IN.vId;
  output.uv = float2(staticVertexData[ i ].x, staticVertexData[ i ].y);
  output.pos = float4(staticVertexData[ i ].z, staticVertexData[ i ].w, 0.0f, 1.0f);
    return output;
}

посылает на рендер 1 треугольник а получаем full screen quad

#18
18:13, 6 мая 2015

asmzx
Почему бы не рисовать квад?

#19
19:25, 6 мая 2015

В директе нету квадов. Только треугольники.

#20
19:31, 6 мая 2015

asmzx
Ну, два треугольника

#21
19:34, 6 мая 2015

Рисуя 1 треугольник вместо 2х получаешь +1 в карму

#22
19:49, 6 мая 2015

asmzx
-1, потому что хак. Потому что нельзя нарисовать произвольный квад, а только полноэкранный.

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.