Я немного переживаю с шейдерами, и я продолжаю получать эту странную ошибку компиляции, которая сводит меня с ума!Ошибка пиксельной шейдерной ошибки компиляции
следующий пиксель код шейдера фрагмент:
DirectionVector = normalize(f3LightPosition[i] - PixelPos);
LightVec = PixelNormal - DirectionVector;
// Get the light strenght factor
LightStrFactor = float(abs((LightVec.x + LightVec.y + LightVec.z)/3.0f));
// TEST!!!
LightStrFactor = 1.0f;
// Add this light to the total light on this pixel
LightVal += f4Light[i] * LightStrFactor;
работает отлично, но как только я удалить "LightStrFactor = 1.0f;" строка, то есть разрешение значения «LightStrFactor» является результатом вычисления выше, он не может скомпилировать шейдер.
LightStrFactor поплавковый LightVal & f4Light [я] являются float4 Все остальные float3.
мой вопрос, кроме того, почему он не скомпилирован, так же как DX-компилятор заботится о стоимости поплавка? даже если мои значения неверны, не должно ли это быть временем выполнения? код компиляции шейдеров это:
/* Compile the bitch */
if (FAILED(D3DXCompileShaderFromFile(fileName, NULL, NULL, "PS_MAIN", "ps_2_0", 0, &this->m_pCode, NULL, &this->m_constantTable)))
GraphicException("Failed to compile pixel shader!"); // <-- gets here :(
if (FAILED(g_D3dDevice->CreatePixelShader((DWORD*)this->m_pCode->GetBufferPointer(), &this->m_hPixelShader)))
GraphicException("Failed to create pixel shader!");
this->m_fLoaded = true;
любая помощь приветствуется спасибо !!! :]
Какое сообщение об ошибке? Потратьте время, чтобы получить ошибки и вывести их во время компиляции, это будет экономия времени. – Coincoin