on m'a demandé de partager des questions que je pose ici:Pix, quelques problèmes Je ne comprends pas
HLSL and Pix number of questions
Je pensais que deux et trois fois serait apte à la même question comme solution de l'un peut aider à résoudre l'autre. J'essaye de déboguer un shader et semble rencontrer des problèmes. Tout d'abord, Pix semble sauter une grande quantité de code lorsque je cours en mode analyse. Ceci analyse une expérience avec des captures F12 et avec l'analyse D3DX désactivée. Je dois l'éteindre pendant que j'utilise XNA. Le code de shaders en question est ci-dessous:
float4 PixelShaderFunction(float2 OriginalUV : TEXCOORD0) : COLOR0
{
// Get the depth buffer value at this pixel.
float4 color = float4 (0, 0,0,0);
float4 finalColor = float4(0,0,0,0);
float zOverW = tex2D(mySampler, OriginalUV);
// H is the viewport position at this pixel in the range -1 to 1.
float4 H = float4(OriginalUV.x * 2 - 1, (1 - OriginalUV.y) * 2 - 1,
zOverW, 1);
// Transform by the view-projection inverse.
float4 D = mul(H, xViewProjectionInverseMatrix);
// Divide by w to get the world position.
float4 worldPos = D/D.w;
// Current viewport position
float4 currentPos = H;
// Use the world position, and transform by the previous view-
// projection matrix.
float4 previousPos = mul(worldPos, xPreviousViewProjectionMatrix);
// Convert to nonhomogeneous points [-1,1] by dividing by w.
previousPos /= previousPos.w;
// Use this frame's position and last frame's to compute the pixel
// velocity.
float2 velocity = (currentPos - previousPos)/2.f;
// Get the initial color at this pixel.
color = tex2D(sceneSampler, OriginalUV);
OriginalUV += velocity;
for(int i = 1; i < 1; ++i, OriginalUV += velocity)
{
// Sample the color buffer along the velocity vector.
float4 currentColor = tex2D(sceneSampler, OriginalUV);
// Add the current color to our color sum.
color += currentColor;
}
// Average all of the samples to get the final blur color.
finalColor = color/xNumSamples;
return finalColor;
}
Avec une image capturée et lors du débogage d'un pixel je ne peux voir deux lignes de travail. Ce sont color = tex2D (sceneSampler, OriginalUV) et finalColor = color/xNumSamples. Le reste Pix saute ou ne fait pas.
Puis-je déboguer en temps réel avec Pix? Je me demande si cette méthode révélerait plus d'informations.
Cheers,
Ok, je pense que pour la ligne de boucle, c'était moi qui tripotais les choses, alors c'est moi qui oublie de changer les valeurs. J'essaie fondamentalement d'atteindre l'effet de flou de mouvement trouvé ici: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html J'ai essayé de copier cette méthodologie autant que possible mais je m'inquiète si le Le compilateur optimise le fait que cette méthodologie est impossible. – Bushes
Après la fixation de la boucle, il ne doit pas supprimer les lignes ci-dessus; il utilise ces données dans la boucle. Avez-vous encore des problèmes après avoir réparé la boucle? – Goose
Ahh, ok vous avez raison, je semble obtenir un effet maintenant, donc je peux probablement travailler à partir de là. À votre santé – Bushes