本文整理汇总了C++中Rand::next01方法的典型用法代码示例。如果您正苦于以下问题:C++ Rand::next01方法的具体用法?C++ Rand::next01怎么用?C++ Rand::next01使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rand
的用法示例。
在下文中一共展示了Rand::next01方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: step
int RenderCore::step(Rand& rand, int groupIdx)
{
const Camera* active_camera = &camera;
float4x4 inv_view = glm::inverse(active_camera->view());
float4x4 inv_proj = glm::inverse(active_camera->projection());
float3 o = active_camera->eye;
int samples_n = 0;
bool clear = clearSignal_[groupIdx];
for(int i = 0; i < size_.y; i++)
{
if((i % cachedWorkThreadN_) != groupIdx) continue;
for(int j = 0; j < size_.x; j++)
{
int fb_i = i * size_.x + j;
Sample sample;
sample.reset();
if(clear)
{
linear_fb[fb_i] = float4(0);
}
float2 pixel_pos(j, i);
float2 sample_pos = pixel_pos + float2(rand.next01(), rand.next01());
float4 ndc((sample_pos.x/size_.x-0.5)*2, (sample_pos.y/size_.y-0.5)*2, 1, 1);
float4 d_comp = inv_proj * ndc;
d_comp = d_comp/d_comp.w;
d_comp = inv_view * d_comp;
float3 d = normalize(float3(d_comp));
Ray ray(o, d);
sample.ray = ray;
sample.xy = int2(j, i);
sampleDebugger_.shr.newSample(sample.xy);
int bounces = 8 ;
if(1)
{
ptMISRun(*scene, bounces, rand, &sample, false);
}
else if(0)
{
ptRun(*scene, bounces, rand, &sample, false);
}
else if(0)
{
bdptRun(*scene, bounces, rand, &sample);
}
else
{
bdptMisRun(*scene, bounces, active_camera->forward, rand, &sample);
}
samples_n += 1;
float3 color = sample.radiance;
sampleDebugger_.shr.record(sample.xy, 7, "Radiance", color);
float3 existing_color = float3(linear_fb[fb_i]);
sampleDebugger_.shr.record(sample.xy, 7, "Existing Mix", existing_color);
float samples_count = linear_fb[fb_i].w + 1;
float3 mixed_color = float3((samples_count - 1) / samples_count) * existing_color +
float3(1/samples_count) * color;
sampleDebugger_.shr.record(sample.xy, 7, "New Mix", mixed_color);
linear_fb[fb_i] = float4(mixed_color, samples_count);
}
}
//we don't clear unconditionally b/c clear may have been enabled since we last checked
if(clear) clearSignal_[groupIdx] = false;
return samples_n;
}