mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-12-30 03:50:34 +00:00
ray:: step-based works with intra
This commit is contained in:
parent
4f3988602c
commit
30a99f762f
@ -303,7 +303,6 @@ struct raygen {
|
|||||||
bool use_reflect;
|
bool use_reflect;
|
||||||
bool many_cell_types;
|
bool many_cell_types;
|
||||||
bool eyes;
|
bool eyes;
|
||||||
bool stepbased;
|
|
||||||
|
|
||||||
string getM(string s) {
|
string getM(string s) {
|
||||||
if(m_via_texture)
|
if(m_via_texture)
|
||||||
@ -348,7 +347,7 @@ void raygen::add_if(const string& seek, const string& function) {
|
|||||||
void raygen::compute_which_and_dist(int flat1, int flat2) {
|
void raygen::compute_which_and_dist(int flat1, int flat2) {
|
||||||
using glhr::to_glsl;
|
using glhr::to_glsl;
|
||||||
|
|
||||||
if(!stepbased) {
|
if(!is_stepbased()) {
|
||||||
|
|
||||||
fmain +=
|
fmain +=
|
||||||
" if(which == -1) {\n";
|
" if(which == -1) {\n";
|
||||||
@ -455,32 +454,32 @@ void raygen::compute_which_and_dist(int flat1, int flat2) {
|
|||||||
|
|
||||||
void raygen::move_forward() {
|
void raygen::move_forward() {
|
||||||
using glhr::to_glsl;
|
using glhr::to_glsl;
|
||||||
if(in_h2xe() && !stepbased) fmain +=
|
if(in_h2xe() && !is_stepbased()) fmain +=
|
||||||
" mediump float ch = cosh(dist*xspeed); mediump float sh = sinh(dist*xspeed);\n"
|
" mediump float ch = cosh(dist*xspeed); mediump float sh = sinh(dist*xspeed);\n"
|
||||||
" mediump vec4 v = position * ch + tangent * sh;\n"
|
" mediump vec4 v = position * ch + tangent * sh;\n"
|
||||||
" tangent = tangent * ch + position * sh;\n"
|
" tangent = tangent * ch + position * sh;\n"
|
||||||
" position = v;\n"
|
" position = v;\n"
|
||||||
" zpos += dist * zspeed;\n";
|
" zpos += dist * zspeed;\n";
|
||||||
else if(in_s2xe() && !stepbased) fmain +=
|
else if(in_s2xe() && !is_stepbased()) fmain +=
|
||||||
" mediump float ch = cos(dist*xspeed); mediump float sh = sin(dist*xspeed);\n"
|
" mediump float ch = cos(dist*xspeed); mediump float sh = sin(dist*xspeed);\n"
|
||||||
" mediump vec4 v = position * ch + tangent * sh;\n"
|
" mediump vec4 v = position * ch + tangent * sh;\n"
|
||||||
" tangent = tangent * ch - position * sh;\n"
|
" tangent = tangent * ch - position * sh;\n"
|
||||||
" position = v;\n"
|
" position = v;\n"
|
||||||
" zpos += dist * zspeed;\n";
|
" zpos += dist * zspeed;\n";
|
||||||
else if(in_e2xe() && !stepbased) fmain +=
|
else if(in_e2xe() && !is_stepbased()) fmain +=
|
||||||
" position = position + tangent * dist * xspeed;\n"
|
" position = position + tangent * dist * xspeed;\n"
|
||||||
" zpos += dist * zspeed;\n";
|
" zpos += dist * zspeed;\n";
|
||||||
else if(hyperbolic && !stepbased) fmain +=
|
else if(hyperbolic && !is_stepbased()) fmain +=
|
||||||
" mediump float ch = cosh(dist); mediump float sh = sinh(dist);\n"
|
" mediump float ch = cosh(dist); mediump float sh = sinh(dist);\n"
|
||||||
" mediump vec4 v = position * ch + tangent * sh;\n"
|
" mediump vec4 v = position * ch + tangent * sh;\n"
|
||||||
" tangent = tangent * ch + position * sh;\n"
|
" tangent = tangent * ch + position * sh;\n"
|
||||||
" position = v;\n";
|
" position = v;\n";
|
||||||
else if(sphere && !stepbased) fmain +=
|
else if(sphere && !is_stepbased()) fmain +=
|
||||||
" mediump float ch = cos(dist); mediump float sh = sin(dist);\n"
|
" mediump float ch = cos(dist); mediump float sh = sin(dist);\n"
|
||||||
" mediump vec4 v = position * ch + tangent * sh;\n"
|
" mediump vec4 v = position * ch + tangent * sh;\n"
|
||||||
" tangent = tangent * ch - position * sh;\n"
|
" tangent = tangent * ch - position * sh;\n"
|
||||||
" position = v;\n";
|
" position = v;\n";
|
||||||
else if(stepbased) {
|
else if(is_stepbased()) {
|
||||||
|
|
||||||
bool use_christoffel = true;
|
bool use_christoffel = true;
|
||||||
|
|
||||||
@ -1691,8 +1690,6 @@ void raygen::create() {
|
|||||||
|
|
||||||
eyes = is_eyes();
|
eyes = is_eyes();
|
||||||
|
|
||||||
stepbased = is_stepbased();
|
|
||||||
|
|
||||||
fmain = "void main() {\n";
|
fmain = "void main() {\n";
|
||||||
|
|
||||||
if(use_reflect) fmain += " bool depthtoset = true;\n";
|
if(use_reflect) fmain += " bool depthtoset = true;\n";
|
||||||
@ -1758,7 +1755,7 @@ void raygen::create() {
|
|||||||
if(eyes) s *= vrhr::absolute_unit_in_meters;
|
if(eyes) s *= vrhr::absolute_unit_in_meters;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(stepbased) fmain +=
|
if(is_stepbased() || intra::in) fmain +=
|
||||||
" const mediump float maxstep = " + fts(maxstep_current() * s) + ";\n"
|
" const mediump float maxstep = " + fts(maxstep_current() * s) + ";\n"
|
||||||
" const mediump float minstep = " + fts(minstep * s) + ";\n"
|
" const mediump float minstep = " + fts(minstep * s) + ";\n"
|
||||||
" mediump float next = maxstep;\n";
|
" mediump float next = maxstep;\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user