Sign in to follow this  

Weird Distortion When Running Shader

This topic is 829 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Alright I'm not able to run PS_3_0 shaders with DX9. However, there is weird distortion in the image after running a basic shader. Colors are fine but shapes are all weird. This is after running a test shader that shouldn't alter the image. The before picture includes converting the data to the shader and back, so that part is working fine.

Before

Before.png

 

After

After.png

 

Here's the code that runs the shader.

https://github.com/mysteryx93/AviSynthShader/blob/master/VideoPresenter/D3D9RenderImpl.cpp

 

Any idea what could be causing this distortion and how to solve it? I'm using D3DFMT_A16B16G16R16F data for frames.

 

 

As a side note, there is this code that was was in my script and I'm not seeing any difference when I comment it out. Is any of it useful?

m_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
m_pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
m_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
m_pDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);

m_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

m_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
m_pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_SPECULAR);

m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);

This code also can be commented out without any difference. Any of it is useful?

D3DXMATRIX matOrtho;

D3DXMatrixOrthoOffCenterLH(&matOrtho, 0, (float)m_videoWidth, (float)m_videoHeight, 0, 0.0f, 1.0f);
HR(m_pDevice->SetTransform(D3DTS_PROJECTION, &matOrtho));

D3DXMATRIX matIdentity;
D3DXMatrixIdentity(&matIdentity);
HR(m_pDevice->SetTransform(D3DTS_WORLD, &matIdentity));
HR(m_pDevice->SetTransform(D3DTS_VIEW, &matIdentity));

Share this post


Link to post
Share on other sites

The SetTransform() is only for fixed-function pipeline, those matrices does nothing when using shaders as you're responsible for supplying your vertex shader with proper matrices etc.

 

Can you post the test shader maybe, both vertex and pixel?

Share this post


Link to post
Share on other sites

Test shader

sampler s0 : register(s0);
float4 p0 :  register(c0);
float2 p1 :  register(c1);

// -- Main code --
float4 main(float2 tex : TEXCOORD0) : COLOR {
    float4 c0 = tex2D(s0, tex);

    return c0;
}

There is no vertex shader as I'm using fixed function pipeline.

Edited by MysteryX

Share this post


Link to post
Share on other sites

This topic is 829 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this