Elvish Ray 0.5 beta history

Source: Internet
Author: User

/*************************************** **************************************** **/
/**/
/* Lrcore Development History & Notes */
/**/
/*************************************** **************************************** **/

/* ---------------------------- Lrender demo 0.1 ---------------------------------*/

2003.8.17

Ray Tracing framework

2003.8.24

Basic ry Rendering

2003.8.30

Texture support

2003.8.31

Graphic Display

2003.9.6

Console Program

2003.9.27

Scenario Description file support

2003.10.12

BSP algorithm support

2003.11.9

Multithreading support

2003.11.16

GI algorithm support

2003.11.17

Shader support

2003.12.3

Animation support

2003.12.21

Fastbsp support

/* ---------------------------- Lrcore beta 0.5 ---------------------------------*/

2004.2.22

Basic scanning line framework ready
All screen points are converted to the world coordinate system calculation shader

2004.4.13

Completely change the basic data structure and system

2004.8.26

Cancel graphic display and console Architecture
Provide VB Library

2004.8.27

Change to STL-based Data Structure

2004.8.28

Build a new scenario description language

2004.8.29

Start Compilation

2004.8.31

It is rare that errors are inexplicable, hidden, and ambiguous.

2004.9.4

Notepad, Vc, and VB handle different tab keys in text, resulting in different formats!

Possible errors:
Every time push_back is called, the memory address is moved, but the original pointer reference has not changed!

2004.9.19

Complete shader variable type support

Dangerous pointers that might change when rendering...

A_edgelink []
A_trilink []
X_edgelist []

2004.9.26

The MD system has been reinstalled by Xinbo network. The data on the original hard disk cannot be retrieved !!!
I backed up LR on a floppy disk !!!
Otherwise, it would be too late to cry !!!!!

2004.10.3

Coding Specification
Still unable to run normally, not even raytrace.

Work should start at 119th scanning lines.

2004.10.13

Triangle_01's material error points to default Material
The normal vector values of left edge and right edge are the same.

221st rows error!
I = 1
J = 3

The error may be related to x_edgelist!

2004.10.17

Finally, find out the cause of the error. It turns out that the triangle fragment memory is not released!

Handle occlusion errors starting from row 3
The correct sorting should be 1 2 1 2

2004.10.20

X_edge location error. It should start from [329 194 ].

2004.10.23

In the loop, I should be written in E, leading to read/write errors.
Variables in the loop are dangerous to be globally visible!

There is a gap on x_edge. debug starts from line 1.

2004.10.24

It is found that Z depth is not equal at the intersection of two triangle!
It is assumed that the plane equation is incorrect!

The plane equation is pushed back, and the correct x_edge position is obtained.

I added a fuzzy comparison when comparing Z depth to get the correct blanking effect!

Raytrace is still dark ...... Why?

The delete G-buffer error occurs. This is a problem!

2004.10.25

The problem is caused by repeated Delete, because Delete does not set the pointer to null,
Just like free at the beginning ~

No good string and message solutions have been found

2004.10.26

Access the endpoint cache that shouldn't be accessed at I = 1 J = 5!
When I wrote a sentence like I <100 in a loop,
When the loop ends, the I value is 100 instead of 99!

An error occurred when I = 2 j = 1 during merge interval!

Found the cause of the problem, or push_back causes memory to move! Damn it!
Is there a pointer?

The original triangle fragment linked list solution cannot reduce memory usage at all,
Instead, the memory usage is increased! Float + void * occupies 12 bytes,
If float + float is directly used to occupy 8 bytes, and the code is much simpler!

Finally, we can correct the solution!

2004.10.29

Continue to provide console rendering, but no Graphic Display
Temporarily cancel the VB Library

The bucket at the edge of the loop changes the height value, causing the bucket range in the next column to be incorrect.

2004.10.30

The multi-bucket mode can be correctly rendered! It's always slnum!

Use Max to reconstruct the scenario and find that the intersection is correct,
It is assumed that the pre-calculation part of the triangle area has an error.

The object is copied to the BSP space, but the vtxlist and trilist in the object are empty!

Raytrace is working now! All errors are due to the bad coding habits!

2004.11.2

The new and delete operators cannot be reloaded. memorymanager is not used for debugging.

Anti-aliasing is slow, but it is still slow after memory operations are reduced!

I have always misunderstood that generic algorithms are not necessarily used on STL containers.

Scanning line anti-sample part failed ...... Continue debugging ......
We should have a clear idea and a solid theoretical foundation when designing algorithms at the beginning!
Many of these program errors can be understood, but they also reflect the design flaws!
Many errors can be avoided at first!

2004.11.3

The gbuffer section is overwritten, and all new and delete operations are used.
Cancel Dynamic Allocation of AA pixel!

The reverse image is more and more difficult. I have to enable another scheme and use raytrace to render AA pixel.

2004.11.4

When scanning intervals in the anti-sample mode, it is assumed that triangle sorting will not go wrong,
The error is caused by the access to the nodelist endpoint!

2004.11.5

There is no error in accessing the nodelist endpoint. It is an error in the Z-depth sorting in the 3rd intervals!

Locate the error! In the anti-sample mode, the Z value of the range endpoint is discrete without continuity,
An error occurs because continuity is used to calculate the Z value in the non-reverse sample mode!

2004.11.6

An error occurred while accessing the MD memory. I don't understand how an error may occur when f_nodelist is released !!!

2004.11.7

After debugging TMD for so long, I still don't know why an error occurs when f_nodelist is released!

The assumption is caused by problems in draw_tri, because the aabucket's render segment code is almost the same as the non-anti-sample mode,
Rather than the anti-sample mode, it can be correctly rendered!
It is further inferred that a drawaasample error occurred!

Finally, I understand!
A lot of time was wasted before debugging the render part. In fact, the error is that the size of the allocated image is not enough!
Incorrect access to memory causes a joint error!

2004.11.8

I tried to use raytrace to render aabucket. The speed is also acceptable,
However, because the rendering results of raytrace and scanline are different, the edge cannot be well joined.

2004.11.9

The view to world matrix is incorrect!

The pixel direction of aabucket is reversed, so there is a crack! Debug from line 1

It turns out that edge couple is not put into aabucket, so it has no effect!

Cool! Finally, we can correct the opposite!

An error occurred while returning multiple triangles !!!
In the anti-sample mode, the rendering of Multiple Buckets is dark ......
Multi-threaded rendering in any mode is dark ......

Every aabucket needs to re-sample the triangle color!

2004.11.11

The anti-Sample Edge is good, but the intersection boundary processing is still bad!

2004.11.13

Incorrect range triangle sorting in aabucket, leading to incorrect intersection boundary inversion!

The intersection boundary can be reversed correctly. The error is that the equation coefficient is scaled in aabucket,
But in fact, the equation coefficient does not need to be scaled!

The aainterval at the beginning of the intersection boundary is canceled! The reason is that the aapixel of the two sides are stuck together!

There is a gap in the 309th rows!

2004.11.14

Solve the intersection Boundary Problem by marking AA pixel together with aa_joint

The problem is that the replaced edge cannot be found after the side is disabled in the AA bucket!

Damn it, the activation edge is wrong !!!

In fact, there is no need to put the replacement side into the AA bucket because AA pixel is very small,
In addition, the replacement edge cannot be found only at the triangle turning point, so we can simply prevent the side from being inactive.

The triangle surface is somewhat strange ...... Debug from line 1

2004.11.15

The problem is solved because ZX is not reduced when draw_tri is in the AA bucket.

It is difficult to handle tracer and bucket problems. multi-thread debug is a single thread.

What do you worry about? In special circumstances, this really happens!
When the triangle is sticking to the left boundary of the bucket, this triangle will not be rendered!

After each row is scanned, the active side of the active side should be restored to-1 to prevent the next row from using the old value!

Debug from bucket ()

2004.11.16

Update data whether or not to render the row to ensure security

Anti-Spam across bucket boundaries has become a technical problem! You need to rethink the algorithm!

If the last pixel of G-buffer is aa pixel, This pixel will not be rendered,
This problem can be solved by increasing the G-buffer width by 1!

2004.11.17

The scanline kernel is overwritten !!! Separate the code in the Anti-Spam mode and the non-spam mode!
The code is clearer and easier to read !!!

2004.11.18

If this_interval is deleted, last_interval should not point to this_interval.
Deleted the useless data members cur_normal and cur_uv!

The error cause is unknown. The range of the non-negative sample interval is incorrect!
Disable G-buffer to move the setting point!

2004.11.19

The non-reverse sample mode can avoid repeated Z depth sorting!
However, an active flag must be added to the x_edge2d data structure.

The multi-bucket anti-sample mode is correctly rendered! The error is not rendered in the last interval!
The code must be added separately to handle the last interval!

2004.11.20

Write exporter for 3DS MAX

After exporting a sphere, the shared edge cannot be correctly rendered in the reverse sample mode!

Officially renamed lrcore

2004.11.21

The shared edge can be correctly rendered. The error is an idiot, but it is hard to find it!
Write 1/(A * B) as 1/a * B!

2004.11.23

If it is an edge2d pointer, The = Operator is used to compare the address but not to call the custom = Operator!

This prevents the intersection of triangles with shared edges from being correctly rendered!

2004.11.26

STL secretly calls the copy function of the vector in the structure member,
This leads to a sharp increase in memory usage and a sharp decrease in speed!

I don't know the original trace shadow!

It's also an idiot error! Duplicate edges are not considered when the bucket creates an edge table!

Tracer behavior error is caused by forgetting to write return when searching for a bucket!

2004.11.27

The surface gap is eliminated because the three sides of the triangle sometimes become active edges at the same time,
In this case, you need to add a correct judgment to select the correct two active edges!

Start from bucket (3, 3) Row 60th to handle strange edges and corners on the edge!
The reason is found! An error occurred while calculating the edge K value! K indicates that the equation coefficient cannot pass
Take the rounded slnum for calculation. Use the exact value!

Deleted the stupid sl_round! No help, no trouble!
Use round directly!

2004.11.28

It turned out to be isout. This damn thing is calculated incorrectly, causing the activation edge to fail to be activated!

MIP-map support, re-designed the texture system!

2004.11.29

The speed of light tracing may be caused by the presence of too many objects in pobj!

2004.12.1

The kernel of ray tracing is overwritten !!! A new segmentation algorithm is adopted !!!
The speed has become very fast !!!

2004.12.3

Find out the cause of a small gap in scanline, And the Le and RE of triangle are misaligned!

Because rounding is used, edges may be deleted in advance and not added to aabucket,
In this way, even if the triangle is added to the aabucket, it will be deleted due to a lack of edge!
The solution is to add all edges to the aabucket and then cut them!

2004.12.5

The error message returned when the initial row of the bucket is aapixel.

2004.12.6

Changed the MIP-map coordinate system and overwritten the MIP-map part, greatly simplifying the code!

2004.12.7

Overwrites the old scanline kernel and overwrites the key part, greatly simplifying the code.

Most of the Code is based on STL.

2004.12.8

The appearance of strange uneven surface, I do not know how to solve

2004.12.10

The error is determined by the special shader in the calculation of the Z value!

2004.12.11

The error is actually accidentally writing + As + =!

The pre-calculation time is too long, and the reverse rendering style cannot be completely correct!

2004.12.12

When the parent object is deselected, the child object should be deselected accordingly.

If the accuracy of Z-buffer is insufficient, the edges may be severely distorted. Turning off the Z-buffer image quality is better.

2004.12.13

The reflection effect is very bad now, and it will be very bad!
The shadow effect cannot be reached !!! And the inexplicable 0.0 <0.0 will become true !!!

The coordinate system can correspond to 3DS MAX.

2004.12.14

Internal rules: if an edge does not have T2, the value of T [1] will be set to be the same as that of T [0!

I have rewritten the horizon cropping part, clarified my ideas, and greatly simplified the code!

Cropping has a serious problem: too many new polygon will be generated!

2004.12.15

Solved the pitting problem of ray tracing, as long as the surrounding box is expanded a little,
Because when the face is parallel to the coordinate axis, the width of the box is 0.

Find the reason why there is no shadow effect! The soft_edge and cut_shadow parameters should be initialized to 1.

2004.12.16

Photon map should be initialized before BSP division, otherwise the child object will not receive the photon map pointer

2004.12.17

You can crop the scene correctly !!!

The original error is:
1. the cropping of edges parallel to the cropping plane is not prevented.
2. The scene located before the near-cropping plane is not invisible.

2004.12.19

Example of shader written

2004.12.20

Solved the problem of sudden bright photon,
The reason is that there is no micro-translation of the SRC for reflection and refraction, and moving only POS is not enough.

The selection of micro offset size is very important!

2004.12.21

Multiple Threads can be correctly rendered. The original problem is that there is a return before leavedata,
Resulting in no leavedata

Some invisible triangles may be visible because vertices are visible during cropping,
This situation can be prevented.

This is the end of lrcore debugging !!!

2004.12.28

I accidentally found an error in the lrcore anti-sample code, but the entries have been sent ......

Errors are caused by incomplete logic, just like processing if but not else ......

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.