commit x64 compilation from lulu cause the other branch dont seems to compile properly at home

This commit is contained in:
2026-07-17 16:08:20 +02:00
parent c0f3eeb00d
commit 0efa4ee6f7
625 changed files with 117283 additions and 4426 deletions

View File

@ -0,0 +1,51 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include <cmath>
#include "raytracer/raytracer_spread.h"
#include "math/matrix3.h"
#include "rand/rand.h"
#include "memory/memory.h"
#include "log/log.h"
using namespace GS::Raytrace;
//------------------------------------------------------------------------------
bool Spread::Initialize(uint u_count, uint v_count, float max_spread)
{
Free();
if (!spread.Allocate(u_count * v_count))
__ERR__(__LOG_E__ << "failed to allocate vector spread.\n", false)
float s_v = max_spread / (v_count + 2), a_v = s_v;
uint count = 0;
for (uint v = 0; v < v_count; ++v)
{
float strat_v = a_v + Random::FRand(s_v); // Stratified sampling.
float s_u = Units::Deg(360.f) / u_count, a_u = Units::Deg(0.f);
for (uint u = 0; u < u_count; ++u)
{
float strat_u = a_u + Random::FRand(s_u); // Stratified sampling.
Vector4 tmp(sin(strat_v), 0, cos(strat_v));
Matrix3 rtz(Matrix3::RotationMatrixZAxis(strat_u));
rtz.Apply(&spread[count++], &tmp);
a_u += s_u;
}
a_v += s_v;
}
return true;
}
void Spread::Free()
{
spread.Free();
}
//------------------------------------------------------------------------------