Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (538)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (601)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Ray tracing, sample and shade functions [Solved]  (Read 445 times)
0 Members and 1 Guest are viewing this topic.
Offline Regenuluz
« Posted 2013-09-17 20:47:19 »

Hey folks,

So I'm taking a rendering course this semester and we were given a framework in C++ to create functions for ray tracing etc., and I'm at an end were I'm supposed to add in a sample and shade function.

I've tried to implement something, but it's just returning a darker version of the image that I'm rendering, and I haven't been given an image that shows how it's supposed to look.

So I'm hoping that you guys can help me out a bit:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
bool PointLight::sample(const float3& pos, float3& dir, float3& L) const
{
   // Compute output and return value given the following information.
   //
   // Input:  pos (the position of the geometry in the scene)
   //
   // Output: dir (the direction toward the light)
   //         L   (the radiance received from the direction dir)
   //
   // Return: true if not in shadow
   //
   // Relevant data fields that are available (see PointLight.h and Light.h):
   // shadows    (on/off flag for shadows)
   // tracer     (pointer to ray tracer)
   // light_pos  (position of the point light)
   // intensity  (intensity of the emitted light)
   //
   // Hint: Construct a shadow ray using the Ray datatype. Trace it using the
   //       pointer to the ray tracer.

   if(!shadows) {
      return true;
   }
   
   float3 normal = normalize(pos - light_pos);
   
   Ray ray(pos, normal, 0, 1e-10f);
   HitInfo hit;
   if(tracer->trace_to_closest(ray, hit)) {
   //   if(hit.position.x == light_pos.x && hit.position.y == light_pos.y
   //       && light_pos.z == light_pos.z) {
         float v = length(light_pos - pos);
         dir = normal;
         L = intensity / (v * v);
         return false;
   //   }
   }

   return true;
}


and

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
float3 Lambertian::shade(const Ray& r, HitInfo& hit, bool emit) const
{
   float3 rho_d = get_diffuse(hit);
   float3 result = make_float3(0.0f);
   
   // Implement Lambertian reflection here.
   //
   // Input:  r          (the ray that hit the material)
   //         hit        (info about the ray-surface intersection)
   //         emit       (passed on to Emission::shade)
   //
   // Return: radiance reflected to where the ray was coming from
   //
   // Relevant data fields that are available (see Lambertian.h, HitInfo.h, and above):
   // lights             (vector of pointers to the lights in the scene)
   // hit.position       (position where the ray hit the material)
   // hit.shading_normal (surface normal where the ray hit the material)
   // rho_d              (difuse reflectance of the material)
   //
   // Hint: Call the sample function associated with each light in the scene.
   
   float3 dir, radiance;
   float3 diffuse = (rho_d / M_PIf);
   for(size_t i = 0; i < lights.size(); i++) {
      if(lights[i]->sample(hit.position, dir, radiance)) {
         result += diffuse * radiance * dot(hit.shading_normal, dir);
      }
   }
   
   return result + Emission::shade(r, hit, emit);
}


The code runs, but it doesn't seem to "work," or at least I'm not sure what kind of image I'm supposed to get out of it.

Any help/insight would be awesome! Smiley
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (29 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (42 views)
2014-12-09 22:41:13

BurntPizza (76 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (50 views)
2014-12-03 16:27:13

CopyableCougar4 (47 views)
2014-11-29 21:32:03

toopeicgaming1999 (114 views)
2014-11-26 15:22:04

toopeicgaming1999 (102 views)
2014-11-26 15:20:36

toopeicgaming1999 (30 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!